Dateien und Ordner auswählen per FileDialog

Lies in den Artikel rein und unten bekommst Du ein unschlagbares Angebot!

Wenn Du mit VBA programmierst, wirst Du immer wieder mit Dateien arbeiten. Eine der Hauptaufgaben dabei ist, zu öffnende Dateien auszuwählen, Verzeichnisse zu selektieren oder einen Namen für eine zu speichernde Datei festzulegen. Alles drei lässt sich mit verschiedenen Methoden erledigen, aber es gibt eine Klasse, die alles gleichzeitig anbietet – und zwar die FileDialog-Klasse der Office-Bibliothek. In diesem Artikel schauen wir uns an, wie Du Dateidialoge für die verschiedenen Anwendungszwecke öffnen und auswerten kannst.

Beispielumgebung

Wie immer benötigen wir eine Office-Anwendung oder Entwicklungsumgebung, um mit den Objekten, Eigenschaften und Methoden der Klasse FileDialog zu experimentieren. In diesem Fall wollen wir einmal ein Excel-Workbook nutzen, das wir logischerweise als .xlsm-Datei speichern. Das Worksheet dieser Exceldatei nutzen wir zur Ausgabe der mit der FileDialog-Klasse ermittelten Dateien und dort bringen wir auch die zum Aufruf notwendigen Schaltflächen unter.

Die FileDialog-Klasse verfügbar machen

Um auf die FileDialog-Klasse und ihre Methoden und Eigenschaften zugreifen zu können, benötigen wir entweder einen Verweis auf die Bibliothek Microsoft Office x.0 Object Library oder wir referenzieren diese per Late Binding. Da wir die Vorzüge von IntelliSense zu schätzen wissen, nutzen wir hier die Bibliothek, die wir im VBA-Editor einbinden können.

Von der Excel-Benutzeroberfläche wechseln wir dazu mit der Tastenkombination Alt + F11 zum VBA-Editor. Hier wählen wir den Menüeintrag Extras|Verweise aus. Im nun erscheinenden Verweise-Dialog finden wir gegebenenfalls bereits den markierten Eintrag aus Bild 1 vor. Anderenfalls suchen Sie diesen in der alphabetisch sortieren Liste und fügen ihn durch Setzen eines Hakens in das entsprechende Kästchen hinzu.

Verweis auf die Objektbibliothek Microsoft Office 16.0 Object Li-brary

Bild 1: Verweis auf die Objektbibliothek Microsoft Office 16.0 Object Li-brary

Einen Dateidialog anzeigen

Grundsätzlich zeigt man einen FileDialog wie folgt an:

Dim objFiledialog As Office.FileDialog
Set objFiledialog = _
     Application.FileDialog(msoFileDialogFilePicker)
objFiledialog.Show

Wir benötigen also eine Objektvariable, die den Typ Office.FileDialog aufweist und füllen diese mit einem Verweis auf die FileDialog-Klasse unter Angabe des Typs, den wir benötigen – in diesem Fall msoFileDialogPicker.

Dann zeigen wir den Dialog mit der Methode Show an. Das Ergebnis dieses einfachen Aufrufs finden wir in Bild 2.

Ein erster Dateidialog zur Auswahl einer Datei

Bild 2: Ein erster Dateidialog zur Auswahl einer Datei

Auswahl im Dateidialog auswerten

Nun können wir nach der Auswahl wie im oben angegebenen Beispiel mit dem Ergebnis noch nichts anfangen. Das erledigen wir, indem wir das Ergebnis des Aufrufs prüfen und dann die selektierten Daten auswerten. Die ersten beiden Zeilen bleiben gleich:

Dim objFiledialog As Office.FileDialog
Set objFiledialog = _
     Application.FileDialog(msoFileDialogFilePicker)

Danach rufen wir die Show-Methode jedoch als Teil einer If…Then-Bedingung auf und prüfen in dieser das Ergebnis.

Dieses kann True oder False lauten. Es lautet True, wenn der Benutzer die Eingabe mit der OK-Schaltfläche abgeschlossen hat, und False, wenn er die Abbrechen-Schaltfläche wählt. Die OK-Schaltfläche kann der Benutzer übrigens erst betätigen, wenn er eine Datei ausgewählt hat.

Im ersten Fall, also wenn der Benutzer eine Datei ausgewählt und auf die OK-Schaltfläche gedrückt hat, greifen wir mit objFileDialog.SelectedItems(1) auf den ersten ausgewählten Eintrag zu und geben diesen im Direktbereich des VBA-Editors aus.

Im zweiten Fall, also wenn der Benutzer die Abbrechen-Schaltfläche betätigt hat, zeigen wir den Text Keine Datei ausgewählt an:

If objFiledialog.Show = True Then
     Debug.Print objFiledialog.SelectedItems(1)
Else
     Debug.Print "Keine Datei ausgewählt"
End If

Verschiedene Dialogtypen

Wir können verschiedene Dialogtypen nutzen. Dazu gibst Du unterschiedliche Werte beim Zuweisen des FileDialog-Objekts an. Diese lauten:

 

Schreibe einen Kommentar