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. Als Rückgabewert wird der Pfad zum ausgewählten Ordner geliefert.

Lösung

Das geht mit der folgenden Funktion, die in einem globalen Modul gespeichert wird.

Public Function Ordnerdialog(Optional ButtonBeschriftung As String = "OK", _
                             Optional Startpfad As String = vbNullString, _
                             Optional Titel As String = vbNullString) 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 = Titel
 
 ' Beschriftung des Bestätigungs-Buttons
 fd.ButtonName = ButtonBeschriftung
 
 ' Ordnerpfad als Startordner
 fd.InitialFileName = Startpfad
 
 'Dialog Anzeigen:
 
 'Benutzer hat Bestätigungs-Button gedrückt
 If fd.Show = True Then
   Ordnerdialog = fd.SelectedItems(1)
 
 'Benutzer hat Abbrechen gedrückt
 Else
   Ordnerdialog = vbNullString
 End If
 
 Set fd = Nothing
 
End Function

Aufruf

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