VBA Tipp: Ordnerauswahl-Dialog 3

Aus DBWiki
Wechseln zu: Navigation, Suche

Anforderung

Ich möchte den Windows-Ordnerauswahl-Dialog aufrufen, um einen Ordner auszuwählen und den Ordnerpfad als Rückgabewert anzuzeigen.

Lösung

Das geht ab Access 2002 über das FileDialog-Objekt mit der folgenden VBA-Funktion, die in einem allgemeinen (globalen) Modul gespeichert wird.


Argumente der Funktion:

  • Startpfad: Vorgabe eines Startverzeichnisses
  • ButtonBeschriftung: Alternative Beschriftung der Bestätigungs-Schaltfläche festlegen. Der Standardwert ist Öffnen.
  • Fenstertitel: Alternativen Titel des Ordnerauswahl-Dialogfensters festlegen. Der Standardwert ist Datei öffnen.
Public Function Ordnerdialog(Optional Startpfad As String, _
                             Optional ButtonBeschriftung As String, _
                             Optional Fenstertitel As String) As String
 
 ' Late Binding Methode, kein Verweis auf 'Microsoft Office xx.x Object Library' notwendig
 ' Quelle: http://www.dbwiki.net/
 
 Dim fd As Object   ' Office.FileDialog
 
 Const msoFileDialogFolderPicker As Long = 4
 
 Set fd = Application.FileDialog(msoFileDialogFolderPicker)
 
 ' Fenstertitel
 fd.Title = Fenstertitel
 
 ' Beschriftung des Bestätigungs-Buttons
 fd.ButtonName = ButtonBeschriftung
 
 ' Ordnerpfad als Startordner
 fd.InitialFileName = Startpfad
 
 ' Dialog Anzeigen
 
 ' Der Benutzer hat die Bestätigungs-Schaltfläche gedrückt
 If fd.Show Then
 
   Ordnerdialog = fd.SelectedItems(1)
 
 ' Der Benutzer hat Abbrechen gedrückt
 Else
   Ordnerdialog = vbNullString
 End If
 
 Set fd = Nothing
 
End Function

Aufruf

 Dim strPfad As String
 
 ' Beispiel 1: Ordnerauswahldialog mit Standardwerten öffnen
 strPfad = Ordnerdialog
 
 ' Beispiel 2: Ordnerauswahldialog mit Argumenten öffnen
 ' Argumente: Schaltflächenbeschriftung, Startordner, Fenstertitel
 strPfad = Ordnerdialog(CurrentProject.Path, "Übernehmen", "Mein Titel")
 
 
 ' Auswertung des Rückgabewerts
 If Len(strPfad) Then
   MsgBox strPfad
 Else
   ' Abbrechen gedrückt
 End If