Zur Hauptseite ... Zum Onlinearchiv ... Zum Abonnement ... Zum Newsletter ... Zu den Tools ... Zum Impressum ... Zum Login ...

Achtung: Dies ist nicht der vollständige Artikel, sondern nur ein paar Seiten davon. Wenn Sie hier nicht erfahren, was Sie wissen möchten, finden Sie am Ende Informationen darüber, wie Sie den ganzen Artikel lesen können.

Kompletten Artikel lesen?

Einfach für den Newsletter anmelden, dann lesen Sie schon in einer Minute den kompletten Artikel und erhalten die Beispieldatenbanken.

E-Mail:

Gedrucktes Heft

Diesen Beitrag finden Sie in Ausgabe 2/2005.

Unser Angebot für Sie!

Lesen Sie diesen Beitrag und 500 andere sofort im Onlinearchiv, und erhalten Sie alle zwei Monate brandheißes Access-Know-how auf 72 gedruckten Seiten! Plus attraktive Präsente, zum Beispiel das bald erscheinende Buch 'Access 2010 - Das Grundlagenbuch für Entwickler'!

Diesen Beitrag twittern

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.

Eine kurze Geschichte des
Dateidialogs

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

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.

Dateien auswählen

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

Quellcode 2

Abb. 4: Der Standard-Dialog zum Auswählen von Dateien

Durch die Einstellung der Eigenschaft AllowMultiSelect auf den Wert False können Sie mit dem nachfolgend geöffneten Dialog nur eine Datei gleichzeitig auswählen.

Die Show-Methode zeigt den gewünschten Dialog an und gibt den Wert True zurück, wenn der Benutzer eine Datei ausgewählt hat. In dem Fall weist die Funktion ihrem Rückgabewert den Namen der ausgewählten Datei zu.

Der mit dieser Funktion angezeigte Dialog sieht wie in
Abb. 4 aus. Mit dem Kombinationsfeld Dateityp können Sie die angezeigten Dateien entsprechend ihrer Dateiendung einschränken. Als Kriterien zur Einschränkung stehen die normalerweise für den Import von Dateien unter Access angebotenen Dateitypen zur Verfügung.

Verzeichnisse
auswählen

Für die Auswahl eines einzelnen Verzeichnisses verwenden Sie prinzipiell die gleiche Funktion wie zur Auswahl einer Datei. Der einzige Unterschied ist der Parameter beim Instanzieren des FileDialog-Objekts (s. Quellcode 2). Der Dialog ist genau wie der zum Auswäh-
len einer Datei aufgebaut
(s. Abb. 5).

Anpassen der
Dialoge

Die beiden Dialoge zur Auswahl von Dateien und Verzeichnissen lassen sich gut an spezielle Wünsche anpassen.

Damit kann man beispielsweise mehrere Dateien statt einer einzigen auswählen oder einzelne Elemente der Anzeige verändern, etwa die Überschrift, die Dateiendungen der anzuzeigenden Dateien, das zuerst anzuzeigende Verzeichnis oder die Schaltflächenbeschriftung.

Abb. 5: Dialog zum Auswählen eines Verzeichnisses

Public Function DateienAuswaehlen()

    Dim objFiledialog As FileDialog

    Dim varDatei As Variant

    Set objFiledialog = _
        Application.FileDialog(msoFileDialogOpen)

    With objFiledialog

        .AllowMultiSelect = True

        If .Show = True Then

            For Each varDatei In .SelectedItems

                Debug.Print varDatei

            Next varDatei

        End If

    End With

    Set objFiledialog = Nothing

End Function

Quellcode 3

Auswahl mehrerer Dateien oder Verzeichnisse

In den beiden ersten Beispielen zur Auswahl von Dateien und Verzeichnissen wurde die Möglichkeit zur Auswahl bewusst auf einen Eintrag eingeschränkt.

Dafür sorgt die Eigenschaft AllowMultiSelect. Stellen Sie diese Eigenschaft auf True ein, wenn der Benutzer mehrere Einträge auswählen können soll, und auf False, wenn die Anzahl der wählbaren Einträge auf eins beschränkt sein soll.

Bei der Auswahl eines einzelnen Eintrags lässt sich der ausgewählte Eintrag aus der Auflistung SelectedItems wie folgt in eine Variable schreiben:

strDatei = objFileDialog.SelectedItems(1)

Im Falle mehrerer Einträge müssen Sie die einzelnen Elemente der Auflistung in einer For Each-Schleife durchlaufen. Quellcode 3 enthält ein Beispiel für die Ausgabe einer oder mehrerer Dateien. Beachten Sie, dass die Eigenschaft AllowMultiSelect hier auf den Wert True eingestellt ist.

Sie haben das Ende des frei verfügbaren Teils des Artikels erreicht. Lesen Sie weiter, um zu erfahren, wie Sie den vollständigen Artikel lesen und auf viele hundert weitere Artikel zugreifen können.

Sind Sie Abonnent?Jetzt einloggen ...
 

Kompletten Artikel lesen?

Einfach für den Newsletter anmelden, dann lesen Sie schon in einer Minute den kompletten Artikel und erhalten die Beispieldatenbanken.

E-Mail:

Verwandte Beiträge:

Zippen ohne Zusatzkomponente

© 2003-2015 André Minhorst Alle Rechte vorbehalten.