Dateidialoge mit dem FileDialog-Objekt

André Minhorst, Duisburg

Dateidialoge unter Access – das war lange Zeit ein Mysterium, denn entweder musste man dazu das CommonDialog-ActiveX-Control von Microsoft verwenden oder direkt auf die Windows-API zugreifen. Wenn da nicht pfiffige Entwickler fertige Lösungen zur freien Verwendung angeboten hätten, würde man in manchen Datenbankanwendungen vermutlich heute noch Dateien und Verzeichnisse manuell eintragen. Mit der Version 2002 enthält Access ein FileDialog-Objekt, mit dem sich die gewünschten Dialoge recht komfortabel anzeigen lassen.

Für die Anzeige von Dateidialogen bietet Access bis zur Version 2000 zwei Möglichkeiten. Die erste verwendet das CommonDialog-Steuerelement und die zweite greift direkt auf die Windows-API zu.

Das Problem beim CommonDialog-Steuerelement ist das gleiche wie bei allen anderen Lösungen, die ein nicht in Access integriertes Steuerelement verwenden: Sie müssen sicherstellen, dass es auf jedem Rechner, auf dem die Datenbankanwendung verwendet wird, ebenfalls vorhanden ist.

Die zweite Variante verwendet einige API-Funktionen und ist zumindest insofern problemloser, als dass Sie den entsprechenden Code als Bestandteil der Datenbank – etwa als eigenes Klassenmodul – weitergeben können.

Abb. 1: Individueller Dateidialog

Mit Access 2002 versucht Microsoft, eine in Access integrierte Lösung zu schaffen: Das FileDialog-Objekt ist ein Teil der Office-Bibliothek und steht damit sofort nach Erstellen einer neuen Datenbank und Einrichten eines entsprechenden Verweises auf die Bibliothek Microsoft Office x.0 Object Library zur Verfügung.

Das FileDialog-Objekt stellt Dialoge zum Auswählen von Verzeichnissen und Dateien bereit. Mit den zahlreichen Einstellungsmöglichkeiten lässt sich der resultierende Dialog relativ weit an eigene Bedürfnisse anpassen (s. Abb. 1).

Nachteile besitzt das Filedialog-Objekt allerdings auch – zumindest einen: Die Entwickler haben wohl an der falschen Stelle gespart, als sie einen Dialog zur Auswahl eines Speichernamens für eine Datei ausließen.

Scheinbar dachte man, dass ja im Vergleich zu Word oder Excel in Access eigentlich keine Dateien gespeichert werden. Damit lassen sich mit diesem Dialog keine klassischen “Speichern unter…”-Dialoge erzeugen.

Und auch der Dialog zum öffnen einer Datei mit der dem Dateityp entsprechenden Anwendung ist für den Einsatz in Access nicht geeignet.

Das FileDialog-Objekt stellt vier unterschiedliche Dialoge zur Verfügung, von denen unter Access aber – wie bereits erwähnt – nur zwei funktionieren.

Der Dateiauswahl-Dialog dient der Auswahl von Dateien, deren Namen Sie später weiterverarbeiten können. Mit ihm lassen sich mehrere Dateinamen gleichzeitig auswählen, die Sie später aus einer Auflistung auslesen können.

Der zweite Dialog dient zum Auswählen eines Verzeichnisses. Er gibt den kompletten Pfad eines einzelnen Verzeichnisses zurück.

FileDialog-Objekt vorbereiten

Um das FileDialog-Objekt unter VBA verfügbar zu machen, müssen Sie zunächst einen Verweis auf die Office-Bibliothek anlegen.

Dazu wechseln Sie per Strg + g zum VBA-Editor, wählen den Menüpunkt Extras/Verweise aus und setzen dort einen Haken vor den Eintrag Microsoft Office 11.0 Object Library (s. Abb. 2).

Methoden und Eigenschaften des FileDialog-Objekts

Anschließend können Sie per VBA auf die Methoden und Eigenschaften des FileDialog-Objekts zugreifen. Mit dem Objektkatalog (am schnellsten anzuzeigen per F2) können Sie sich erstmal einen überblick über die Elemente dieses Objekts verschaffen – geben Sie einfach FileDialog im Suchfenster ein und klicken Sie dann auf den entsprechenden Eintrag in der Liste der Suchergebnisse (s. Abb. 3).

Abb. 2: Verweis auf die Office-Bibliothek erstellen

Abb. 3: Methoden und Eigenschaften des FileDialog-Objekts

In den folgenden Kapiteln lernen Sie die einzelnen Methoden und Eigenschaften und ihre Einsatzmöglichkeiten genauer kennen.

Die einfachste Variante des Datei auswählen-Dialogs ist die aus Quellcode 1. Die Funktion deklariert eine Objektvariable, die sie anschließend mit dem FileDialog-Objekt füllt.

Public Function DateiAuswaehlen()
    Dim objFiledialog As FileDialog
    Set objFiledialog = _        Application.FileDialog(msoFileDialogOpen)
    With objFiledialog
        .AllowMultiSelect = False
        If .Show = True Then
            DateiAuswaehlen = .SelectedItems(1)
        End If
    End With
    Set objFiledialog = Nothing
End Function

Quellcode 1

Public Function VerzeichnisAuswaehlen()
    Dim objFiledialog As FileDialog
    Set objFiledialog = _       Application.FileDialog(msoFileDialogFolderPicker)
    With objFiledialog
        .AllowMultiSelect = False
        If .Show = True Then
            VerzeichnisAuswaehlen = .SelectedItems(1)
        End If
    End With
    Set objFiledialog = Nothing
End Function

Sie haben das Ende des frei verfügbaren Textes erreicht. Möchten Sie ...

Workplace

Jahresabonnement TestzugangOder haben Sie bereits Zugangsdaten? Dann loggen Sie sich gleich hier ein:

Schreibe einen Kommentar