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

Verzeichnisauswahl per VBA

Access XP und hher bieten ein eingebautes Objekt fr die Anzeige eines Dialogs zur Auswahl von Verzeichnissen. 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 Dialogs zur Auswahl von Verzeichnissen.

Beispieldatenbank

Die Beispieldatenbank enthlt ein Modul mit den Funktionen und Deklarationen, die fr die Anzeige des Dialogs zur Auswahl von Verzeichnissen bentigt werden. Auerdem enthlt sie ein Beispielformular mit einer Schaltflche, die den Dialog ffnet und das ausgewhlte Verzeichnis in einem Textfeld anzeigt.

 

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

Verzeichnisse auswhlen per API

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

Private Type BROWSEINFO

    hOwner As Long

    pidlRoot As Long

    pszDisplayName As String

    lpszTitle As String

    ulFlags As Long

    lpfn As Long

    lParam As Long

    iImage As Long

End Type

Declare Function SHBrowseForFolder Lib "shell32.dll" Alias "SHBrowseForFolderA" (lpBrowseInfo As BROWSEINFO) As Long

Declare Function SHGetPathFromIDList Lib "shell32.dll" Alias "SHGetPathFromIDListA" (ByVal pidl As Long, ByVal pszPath As String) As Long

Public Const BIF_RETURNONLYFSDIRS = &H1

Public Function VerzeichnisWaehlen(Titel As String, XHxnd As Long) As String

    Dim X As Long

    Dim BInfo As BROWSEINFO

    Dim dsIList As Long

    Dim szPath As String

    Dim wPos As Integer

    With BInfo

        .hOwner = XHwnd

        .lpszTitle = Titel

        .ulFlags = BIF_RETURNONLYFSDIRS

    End With

    dwIList = SHBrowseForFolder(BInfo)

    szPath = Space$(512)

    X = SHGetPathFromIDList(ByVal dwIList, ByVal szPath)

    If X Then

        wPos = InStr(szPath, Chr(0))

        VerzeichnisWaehlen = Left$(szPath, wPos - 1)

    Else

        VerzeichnisWaehlen = ""

    End If

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 1 an:

Private Sub cmdAuswaehlen_Click()

    Dim strVerzeichnisname As String

    strVerzeichnisname = VerzeichnisWaehlen("Whlen Sie das gewnschte Verzeichnis aus.", Screen.ActiveForm.Hwnd)

    Me.txtDatei = strVerzeichnisname

End Sub

Abbildung 1: Ein per API geffneter Dialog zur Auswahl von Verzeichnissen

© 2003-2015 André Minhorst Alle Rechte vorbehalten.