VBA [basics]: Dateien auswählen per Dialog

Soll eine Prozedur eine Datei verarbeiten, benötigt sie deren Pfad. Den Pfad von Hand einzutippen ist umständlich und führt leicht zu Tippfehlern. Komfortabler ist der Dialog, den wir aus anderen Anwendungen kennen: Der Benutzer wählt die Datei aus, und die Prozedur erhält den Pfad. Dafür stellt die Eigenschaft FileDialog des Objekts Application den Dialog bereit. Wie Du den Dialog zur Auswahl von Dateien per VBA-Prozedur anzeigst, anpasst und auswertest, liest Du in diesem Artikel.

Beispieldatenbank

Die Beispiele dieses Artikels findest Du in der Datenbank VBABasics_DateienAuswaehlenPerDialog.accdb. Sie enthält das Modul mdlDateiDialogBeispiele mit den Prozeduren dieses Artikels und das Formular frmDateiauswahl. Im Ordner Dateien neben der Datenbank liegen die Dateien Rueckseite.png und Leseprobe.pdf, mit denen wir den Dialog ausprobieren.

Den Verweis auf die Office-Bibliothek setzen

Der Typ FileDialog gehört nicht zu Access selbst, sondern zur Office-Bibliothek, die Access gemeinsam mit den anderen Office-Anwendungen nutzt. Damit der VBA-Editor den Typ FileDialog und die Konstanten wie msoFileDialogFilePicker kennt, muss das VBA-Projekt einen Verweis auf diese Bibliothek enthalten. In der Beispieldatenbank ist der Verweis gesetzt.

Fehlt der Verweis, meldet der VBA-Editor beim Kompilieren den Fehler „Benutzerdefinierter Typ nicht definiert“. Dann öffnen wir im VBA-Editor mit dem Menübefehl Extras|Verweise den Dialog Verweise und aktivieren den Eintrag Microsoft Office 16.0 Object Library (siehe Bild 1).

Formular-Entwurf unseres Beispielformulars

Bild 1: Formular-Entwurf unseres Beispielformulars

Wie wir mit Verweisen arbeiten, zeigt der Artikel VBA [basics]: Mit Verweisen arbeiten (www.access-basics.de/686).

Den Dialog anzeigen

Die Funktion EinfacheDateiauswahl zeigt den Dialog mit den Standardeinstellungen an und liefert den gewählten Pfad zurück:

Public Function EinfacheDateiauswahl() As String
     Dim fd As FileDialog
     Set fd = _
         Application.FileDialog(msoFileDialogFilePicker)
     If fd.Show Then
         EinfacheDateiauswahl = fd.SelectedItems(1)
     End If
     Set fd = Nothing
End Function

Die Variable fd hat den Typ FileDialog. Die Eigenschaft FileDialog des Objekts Application liefert den Dialog. Das Argument der Eigenschaft legt die Art des Dialogs fest. Es gibt vier Konstanten:

  • msoFileDialogOpen: hat den Wert 1 und zeigt den Dialog Datei öffnen mit der Schaltfläche Öffnen.
  • msoFileDialogSaveAs: hat den Wert 2 und zeigt den Dialog Datei speichern mit der Schaltfläche Speichern.
  • msoFileDialogFilePicker: hat den Wert 3 und zeigt einen Dialog zur Auswahl von Dateien mit dem Titel Durchsuchen und der Schaltfläche OK.
  • msoFileDialogFolderPicker: hat den Wert 4 und zeigt einen Dialog zur Auswahl eines Ordners mit dem Titel Durchsuchen und der Schaltfläche OK.

In diesem Artikel verwenden wir msoFileDialogFilePicker.

Die Methode Show zeigt den Dialog an und wartet, bis der Benutzer ihn schließt. Sie liefert True, wenn der Benutzer die Auswahl bestätigt hat, und False, wenn er den Dialog abgebrochen hat. Nach einer Bestätigung enthält die Auflistung SelectedItems die Pfade der gewählten Dateien. SelectedItems(1) liefert den ersten Pfad. Nach einem Abbruch liefert die Funktion eine leere Zeichenkette.

Im Direktbereich rufen wir die Funktion auf und wählen im Dialog eine Datei aus:

Debug.Print EinfacheDateiauswahl()

Der Dialog erscheint (siehe Bild 2). Nach dem Bestätigen gibt Debug.Print den Pfad aus, den die Funktion liefert, zum Beispiel den Pfad der Datei Rueckseite.png im Ordner Dateien.

Access [basics]

Unser exklusives Angebot für Dich!

Access im Unternehmen
7,90 € im Monat*

(Das Abo ist jederzeit monatlich kündbar)

Hier geht’s weiter →

Die ersten 4 Wochen kostenlos testen – voller Zugriff auf alle Artikel, vollständigen Code und Beispieldatenbanken. Kein Risiko: Wenn es nicht passt, kündigst Du einfach innerhalb der ersten vier Wochen.

PayPal VISA Mastercard SEPA
Kostenlos & unverbindlich

Oder hast Du eine konkrete Frage zu Deiner eigenen Access-Anwendung?

Vielleicht stellt Deine Anwendung Dich vor eine Herausforderung, zu der Du bisher keine Lösung findest. Schlechte Performance, kein ausreichender Zugriffsschutz, Du bist unsicher über Dein Datenmodell oder Dein Code liefert unerklärliche Fehler?

In unserem kostenlosen Access-Audit schaut sich André Minhorst persönlich gemeinsam mit Dir Deine Lösung per Zoom an – und zeigt Dir, wo Datenmodell, VBA-Code, Ergonomie und Sicherheit Optimierungspotenzial bieten.

Jetzt kostenloses Access-Audit anfordern →