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

Dateidialog per VBA ffnen

Access XP und hher bieten ein eingebautes Objekt fr die Anzeige eines Dialogs zur Auswahl von Dateien. Wenn Sie noch mit Access-Versionen arbeiten, die lter als Access XP sind, oder abwrtskompatibel bleiben mchten, verwenden Sie die entsprechende API-Funktion zur Anzeige des Datei ffnen-Dialogs.

Beispieldatenbank

Die Beispieldatenbank enthlt ein Modul mit den Funktionen und Deklarationen, die fr die Anzeige des Datei ffnen-Dialogs bentigt werden. Auerdem enthlt sie ein Beispielformular mit einer Schaltflche, die den Dialog ffnet und die ausgewhlte Datei in einem Textfeld anzeigt (siehe Abbildung 1).

Abbildung 1: Beispiel fr den Einsatz des Datei ffnen-Dialogs

Datei ffnen-Dialog per API

Wenn Sie in Ihrer Anwendung einen Dialog zum Auswhlen von Dateien zur Verfgung stellen mchten, bentigen Sie lediglich die Deklaration einer API-Funktion, eines Types sowie dreier Konstanten, wie nachfolgender Code zeigt:

Declare Function GetOpenFileName Lib "comdlg32.dll" _

    Alias "GetOpenFileNameA" (pOpenfilename As _

    OPENFILENAME) As Long

 

Type OPENFILENAME

    lStructSize As Long

    hwndOwner As Long

    hInstance As Long

    lpstrFilter As String

    lpstrCustomFilter As String

    nMaxCustFilter As Long

    nFilterIndex As Long

    lpstrFile As String

    nMaxFile As Long

    lpstrFileTitle As String

    nMaxFileTitle As Long

    lpstrInitialDir As String

    lpstrTitle As String

    Flags As Long

    nFileOffset As Integer

    nFileExtension As Integer

    lpstrDefExt As String

    lCustData As Long

    lpfnHook As Long

    lpTemplateName As Long

End Type

 

Public Const OFN_FILEMUSTEXIST = &H1000

Public Const OFN_READONLY = &H1

Public Const OFN_HIDEREADONLY = &H4

Die API-Funktion GetOpenFilename rufen Sie mit folgender Wrapper-Funktion auf:

Public Function DateiOeffnen(Optional Titel, Optional Filter, Optional DefExtension, Optional AktDir) As String

    Dim strDateiname As String

    Dim strDlgTitel As String

    Dim strFilter As String

    Dim strDefExtension As String

    Dim strAktDir As String

    Dim strNull As String

    Dim OpenDlg As OPENFILENAME

    strNull = Chr$(0)

    strDateiname = String$(512, 0)

    If IsMissing(Titel) Then

        strDlgTitel = "Datei ffnen" & strNull

    Else

        strDlgTitel = Titel & strNull

    End If

    If IsMissing(Filter) Then

        strFilter = "Alle Dateien" & strNull & "*.*" & strNull & strNull

    Else

        strFilter = Filter & strNull

    End If

    If IsMissing(DefExtension) Then

        strDefExtension = strNull

    Else

        strDefExtension = DefExtension & strNull

    End If

    If IsMissing(AktDir) Then

        strAktDir = CurDir$ & strNull

    Else

        strAktDir = AktDir & strNull

    End If

    With OpenDlg

        .lStructSize = Len(OpenDlg)

        .hwndOwner = Screen.ActiveForm.Hwnd

        .lpstrFilter = strFilter

        .nFilterIndex = 1

        .lpstrFile = strDateiname

        .nMaxFile = Len(strDateiname)

        .lpstrInitialDir = strAktDir

        .lpstrTitle = strDlgTitel

        .Flags = OFN_FILEMUSTEXIST Or OFN_READONLY

        .lpstrDefExt = strDefExtension

        If GetOpenFileName(OpenDlg) <> 0 Then

            DateiOeffnen = Left$(.lpstrFile, InStr(.lpstrFile, strNull) - 1)

        Else

            DateiOeffnen = ""

        End If

    End With

End Function

Der Aufruf dieser Funktion erfordert nurmehr einen Einzeiler und kann auch ohne Angabe jeglicher Parameter erfolgen.

In der Beispieldatenbank finden Sie ein Formular mit einem Textfeld und einer Schaltflche, die den Dialog ffnet. Der dortige Aufruf zeigt beispielsweise den Dialog aus Abbildung 2 an:

Private Sub cmdAuswaehlen_Click()

    Me.txtDatei = DateiOeffnen("Datei ffnen", "Datenbanken" _

        & Chr$(0) & "*.mdb")

End Sub

Abbildung 2: Ein per API geffneter Datei ffnen-Dialog

© 2003-2015 André Minhorst Alle Rechte vorbehalten.