Günther Kramer
28.12.2002, 10:29
<img src="images/codearchiv/verzeichnisauswahldialog.gif" border=0><br><br>Mit dieser Funktion stellen Sie einen Auswahldialog zur Verfügung, mit dessen Hilfe der Anwender ein gewünschtes Verzeichnis auswählen kann. Der Verzeichnispfad wird als String an die Funktion zurückgegeben.<br>Die besonderheit bei diesem Beispiel ist, dass man hier auch ein Startverzeichnis angeben kann.<br><br>Erstellen Sie ein neues Modul und fügen Sie nachfolgenden Code ein:
<div><link href="http://www.ms-office-forum.net/forum/externals/codeconv.css" rel="stylesheet"><pre><span class="TOKEN">Option</span> <span class="TOKEN">Compare</span> <span class="TOKEN">Database</span>
<span class="TOKEN">Option</span> <span class="TOKEN">Explicit</span>
<span class="TOKEN">Private</span> <span class="TOKEN">Type</span> BROWSEINFO
hOwner <span class="TOKEN">As</span> <span class="TOKEN">Long</span>
pidlRoot <span class="TOKEN">As</span> <span class="TOKEN">Long</span>
pszDisplayName <span class="TOKEN">As</span> <span class="TOKEN">String</span>
lpszTitle <span class="TOKEN">As</span> <span class="TOKEN">String</span>
ulFlags <span class="TOKEN">As</span> <span class="TOKEN">Long</span>
lpfn <span class="TOKEN">As</span> <span class="TOKEN">Long</span>
lParam <span class="TOKEN">As</span> <span class="TOKEN">Long</span>
iImage <span class="TOKEN">As</span> <span class="TOKEN">Long</span>
<span class="TOKEN">End</span> <span class="TOKEN">Type</span>
<span class="TOKEN">Private</span> <span class="TOKEN">Declare</span> <span class="TOKEN">Function</span> SHGetPathFromIDList <span class="TOKEN">Lib</span> "shell32.dll" <span class="TOKEN">Alias</span> _
"SHGetPathFromIDListA" (<span class="TOKEN">ByVal</span> pidl <span class="TOKEN">As</span> Long, _
<span class="TOKEN">ByVal</span> pszPath <span class="TOKEN">As</span> <span class="TOKEN">String</span>) <span class="TOKEN">As</span> <span class="TOKEN">Long</span>
<span class="TOKEN">Private</span> <span class="TOKEN">Declare</span> <span class="TOKEN">Function</span> SHBrowseForFolder <span class="TOKEN">Lib</span> "shell32.dll" <span class="TOKEN">Alias</span> _
"SHBrowseForFolderA" (lpBrowseInfo <span class="TOKEN">As</span> BROWSEINFO) _
<span class="TOKEN">As</span> <span class="TOKEN">Long</span>
<span class="TOKEN">Private</span> <span class="TOKEN">Declare</span> <span class="TOKEN">Function</span> SendMessage <span class="TOKEN">Lib</span> "user32.dll" <span class="TOKEN">Alias</span> "SendMessageA" _
(<span class="TOKEN">ByVal</span> hWnd <span class="TOKEN">As</span> Long, <span class="TOKEN">ByVal</span> Msg <span class="TOKEN">As</span> Long, wParam <span class="TOKEN">As</span> Any, lParam <span class="TOKEN">As</span> Any) _
<span class="TOKEN">As</span> <span class="TOKEN">Long</span>
<span class="TOKEN">Private</span> <span class="TOKEN">Const</span> BIF_RETURNONLYFSDIRS = &H1
<span class="TOKEN">Private</span> <span class="TOKEN">Const</span> BFFM_SETSELECTION = &H466
<span class="TOKEN">Private</span> <span class="TOKEN">Const</span> BFFM_INITIALIZED = 1
<span class="TOKEN">Global</span> StartDir <span class="TOKEN">As</span> <span class="TOKEN">String</span>
<span class="TOKEN">Public Function</span> VerzeichnisSuchen(szDialogTitle <span class="TOKEN">As</span> String, _
StartVerzeichnis <span class="TOKEN">As</span> <span class="TOKEN">String</span>) <span class="TOKEN">As</span> <span class="TOKEN">String</span>
<span class="TOKEN">Dim</span> X <span class="TOKEN">As</span> <span class="TOKEN">Long</span>
<span class="TOKEN">Dim</span> bi <span class="TOKEN">As</span> BROWSEINFO
<span class="TOKEN">Dim</span> dwIList <span class="TOKEN">As</span> <span class="TOKEN">Long</span>
<span class="TOKEN">Dim</span> szPath <span class="TOKEN">As</span> <span class="TOKEN">String</span>
<span class="TOKEN">Dim</span> wPos <span class="TOKEN">As</span> <span class="TOKEN">Integer</span>
StartDir = StartVerzeichnis
<span class="TOKEN">With</span> bi
.hOwner = hWndAccessApp
.lpszTitle = szDialogTitle
.ulFlags = BIF_RETURNONLYFSDIRS
.lpfn = DummyFunc(AddrOf("BrowseCallbackProc"))
<span class="TOKEN">End</span> <span class="TOKEN">With</span>
dwIList = SHBrowseForFolder(bi)
szPath = Space$(512)
X = SHGetPathFromIDList(<span class="TOKEN">ByVal</span> dwIList, <span class="TOKEN">ByVal</span> szPath)
<span class="TOKEN">If</span> X <span class="TOKEN">Then</span>
wPos = InStr(szPath, Chr(0))
VerzeichnisSuchen = Left$(szPath, wPos - 1)
<span class="TOKEN">Else</span>
VerzeichnisSuchen = ""
<span class="TOKEN">End</span> <span class="TOKEN">If</span>
<span class="TOKEN">End</span> <span class="TOKEN">Function</span>
<span class="TOKEN">Public Function</span> BrowseCallbackProc(<span class="TOKEN">ByVal</span> hWnd <span class="TOKEN">As</span> Long, <span class="TOKEN">ByVal</span> uMsg <span class="TOKEN">As</span> Long, _
<span class="TOKEN">ByVal</span> lParam <span class="TOKEN">As</span> Long, <span class="TOKEN">ByVal</span> lpData <span class="TOKEN">As</span> <span class="TOKEN">Long</span>) <span class="TOKEN">As</span> <span class="TOKEN">Long</span>
<span class="TOKEN">Dim</span> pathstring <span class="TOKEN">As</span> <span class="TOKEN">String</span>
<span class="TOKEN">Dim</span> retval <span class="TOKEN">As</span> <span class="TOKEN">Long</span>
Select Case uMsg
Case BFFM_INITIALIZED
pathstring = StartDir <span class="REM">'"C:\Temp"</span>
retval = SendMessage(hWnd, BFFM_SETSELECTION, _
<span class="TOKEN">ByVal</span> <span class="TOKEN">CLng</span>(1), <span class="TOKEN">ByVal</span> pathstring)
<span class="TOKEN">End</span> Select
BrowseCallbackProc = 0
<span class="TOKEN">End</span> <span class="TOKEN">Function</span>
<span class="TOKEN">Public Function</span> DummyFunc(<span class="TOKEN">ByVal</span> param <span class="TOKEN">As</span> <span class="TOKEN">Long</span>) <span class="TOKEN">As</span> <span class="TOKEN">Long</span>
DummyFunc = param
<span class="TOKEN">End</span> <span class="TOKEN">Function</span>
</pre></div>
Da Access 97 die Funktion <b>AddressOf</b> nicht kennt, müssen Sie <b>nur</b> für die Access 97-Version ein zweites Modul erstellen. Kopieren Sie die folgenden Codezeilen in das neue Modul.
<div><link href="http://www.ms-office-forum.net/forum/externals/codeconv.css" rel="stylesheet"><pre><span class="TOKEN">Option</span> <span class="TOKEN">Compare</span> <span class="TOKEN">Database</span>
<span class="TOKEN">Option</span> <span class="TOKEN">Explicit</span>
<span class="TOKEN">Private</span> <span class="TOKEN">Declare</span> <span class="TOKEN">Function</span> GetCurrentVbaProject <span class="TOKEN">Lib</span> "vba332.dll" <span class="TOKEN">Alias</span> _
"EbGetExecutingProj" (hProject <span class="TOKEN">As</span> <span class="TOKEN">Long</span>) <span class="TOKEN">As</span> <span class="TOKEN">Long</span>
<span class="TOKEN">Private</span> <span class="TOKEN">Declare</span> <span class="TOKEN">Function</span> GetFuncID <span class="TOKEN">Lib</span> "vba332.dll" <span class="TOKEN">Alias</span> "TipGetFunctionId" _
(<span class="TOKEN">ByVal</span> hProject <span class="TOKEN">As</span> Long, <span class="TOKEN">ByVal</span> strFunctionName <span class="TOKEN">As</span> String, <span class="TOKEN">ByRef</span> _
strFunctionId <span class="TOKEN">As</span> <span class="TOKEN">String</span>) <span class="TOKEN">As</span> <span class="TOKEN">Long</span>
<span class="TOKEN">Private</span> <span class="TOKEN">Declare</span> <span class="TOKEN">Function</span> GetAddr <span class="TOKEN">Lib</span> "vba332.dll" <span class="TOKEN">Alias</span> _
"TipGetLpfnOfFunctionId" (<span class="TOKEN">ByVal</span> hProject <span class="TOKEN">As</span> Long, <span class="TOKEN">ByVal</span> strFunctionId <span class="TOKEN">As</span> _
String, <span class="TOKEN">ByRef</span> lpfn <span class="TOKEN">As</span> <span class="TOKEN">Long</span>) <span class="TOKEN">As</span> <span class="TOKEN">Long</span>
<span class="TOKEN">Public Function</span> AddrOf(strFuncName <span class="TOKEN">As</span> <span class="TOKEN">String</span>) <span class="TOKEN">As</span> <span class="TOKEN">Long</span>
<span class="TOKEN">Dim</span> hProject <span class="TOKEN">As</span> <span class="TOKEN">Long</span>
<span class="TOKEN">Dim</span> lngResult <span class="TOKEN">As</span> <span class="TOKEN">Long</span>
<span class="TOKEN">Dim</span> strID <span class="TOKEN">As</span> <span class="TOKEN">String</span>
<span class="TOKEN">Dim</span> lpfn <span class="TOKEN">As</span> <span class="TOKEN">Long</span>
<span class="TOKEN">Dim</span> strFuncNameUnicode <span class="TOKEN">As</span> <span class="TOKEN">String</span>
<span class="TOKEN">Const</span> NO_ERROR = 0
<span class="REM">' The function name must be in Unicode, so convert it.</span>
strFuncNameUnicode = StrConv(strFuncName, vbUnicode)
<span class="REM">' Get the current VBA project</span>
<span class="REM">' The results of GetCurrentVBAProject seemed inconsistent, in our tests,</span>
<span class="REM">' so now we just check the project handle when the function returns.</span>
<span class="TOKEN">Call</span> GetCurrentVbaProject(hProject)
<span class="REM">' Make sure we got a project handle... we always should, but you never know!</span>
<span class="TOKEN">If</span> hProject <> 0 <span class="TOKEN">Then</span>
<span class="REM"> ' Get the VBA function ID (whatever that is!)</span>
lngResult = GetFuncID(hProject, strFuncNameUnicode, strID)
<span class="REM"> ' We have to check this because we GPF if we try to get a function pointer</span>
<span class="REM"> ' of a non-existent function.</span>
<span class="TOKEN">If</span> lngResult = NO_ERROR <span class="TOKEN">Then</span>
<span class="REM"> ' Get the function pointer.</span>
lngResult = GetAddr(hProject, strID, lpfn)
<span class="TOKEN">If</span> lngResult = NO_ERROR <span class="TOKEN">Then</span>
AddrOf = lpfn
<span class="TOKEN">End</span> <span class="TOKEN">If</span>
<span class="TOKEN">End</span> <span class="TOKEN">If</span>
<span class="TOKEN">End</span> <span class="TOKEN">If</span>
<span class="TOKEN">End</span> <span class="TOKEN">Function</span></pre></div>
Um den Dialog aufzurufen und das Ergebnis einem Feld innerhalb des Formulars zurückzugeben erstellen Sie bitte eine Schaltfläche mit dem Namen <b>Verzeichnisauswahl</b>. Der im Beispiel verwendete Namen für das Feld, in welches der Verzeichnispfad zurückgeschrieben wird, lautet <b>Verzeichnis</b>. Beide Namen (Schaltfläche & Feld) können Sie natürlich anders benennen.
<div><link href="http://www.ms-office-forum.net/forum/externals/codeconv.css" rel="stylesheet"><pre><span class="TOKEN">Private Sub</span> Verzeichnisauswahl_Click()
<span class="TOKEN">Dim</span> strVerzeichnisName <span class="TOKEN">As</span> <span class="TOKEN">String</span>
<span class="TOKEN">If</span> IsNull(Me!Verzeichnis) <span class="TOKEN">Then</span>
Me!Verzeichnis = ""
<span class="TOKEN">End</span> <span class="TOKEN">If</span>
strVerzeichnisName = VerzeichnisSuchen _
("Wählen Sie bitte das Verzeichnis aus!", Me!Verzeichnis)
<span class="TOKEN">If</span> ((<span class="TOKEN">Not</span> IsNull(strVerzeichnisName)) <span class="TOKEN">And</span> (strVerzeichnisName <> "")) <span class="TOKEN">Then</span>
Me!Verzeichnis = strVerzeichnisName
<span class="TOKEN">End</span> <span class="TOKEN">If</span>
<span class="TOKEN">End</span> <span class="TOKEN">Sub</span></pre></div>
<div><link href="http://www.ms-office-forum.net/forum/externals/codeconv.css" rel="stylesheet"><pre><span class="TOKEN">Option</span> <span class="TOKEN">Compare</span> <span class="TOKEN">Database</span>
<span class="TOKEN">Option</span> <span class="TOKEN">Explicit</span>
<span class="TOKEN">Private</span> <span class="TOKEN">Type</span> BROWSEINFO
hOwner <span class="TOKEN">As</span> <span class="TOKEN">Long</span>
pidlRoot <span class="TOKEN">As</span> <span class="TOKEN">Long</span>
pszDisplayName <span class="TOKEN">As</span> <span class="TOKEN">String</span>
lpszTitle <span class="TOKEN">As</span> <span class="TOKEN">String</span>
ulFlags <span class="TOKEN">As</span> <span class="TOKEN">Long</span>
lpfn <span class="TOKEN">As</span> <span class="TOKEN">Long</span>
lParam <span class="TOKEN">As</span> <span class="TOKEN">Long</span>
iImage <span class="TOKEN">As</span> <span class="TOKEN">Long</span>
<span class="TOKEN">End</span> <span class="TOKEN">Type</span>
<span class="TOKEN">Private</span> <span class="TOKEN">Declare</span> <span class="TOKEN">Function</span> SHGetPathFromIDList <span class="TOKEN">Lib</span> "shell32.dll" <span class="TOKEN">Alias</span> _
"SHGetPathFromIDListA" (<span class="TOKEN">ByVal</span> pidl <span class="TOKEN">As</span> Long, _
<span class="TOKEN">ByVal</span> pszPath <span class="TOKEN">As</span> <span class="TOKEN">String</span>) <span class="TOKEN">As</span> <span class="TOKEN">Long</span>
<span class="TOKEN">Private</span> <span class="TOKEN">Declare</span> <span class="TOKEN">Function</span> SHBrowseForFolder <span class="TOKEN">Lib</span> "shell32.dll" <span class="TOKEN">Alias</span> _
"SHBrowseForFolderA" (lpBrowseInfo <span class="TOKEN">As</span> BROWSEINFO) _
<span class="TOKEN">As</span> <span class="TOKEN">Long</span>
<span class="TOKEN">Private</span> <span class="TOKEN">Declare</span> <span class="TOKEN">Function</span> SendMessage <span class="TOKEN">Lib</span> "user32.dll" <span class="TOKEN">Alias</span> "SendMessageA" _
(<span class="TOKEN">ByVal</span> hWnd <span class="TOKEN">As</span> Long, <span class="TOKEN">ByVal</span> Msg <span class="TOKEN">As</span> Long, wParam <span class="TOKEN">As</span> Any, lParam <span class="TOKEN">As</span> Any) _
<span class="TOKEN">As</span> <span class="TOKEN">Long</span>
<span class="TOKEN">Private</span> <span class="TOKEN">Const</span> BIF_RETURNONLYFSDIRS = &H1
<span class="TOKEN">Private</span> <span class="TOKEN">Const</span> BFFM_SETSELECTION = &H466
<span class="TOKEN">Private</span> <span class="TOKEN">Const</span> BFFM_INITIALIZED = 1
<span class="TOKEN">Global</span> StartDir <span class="TOKEN">As</span> <span class="TOKEN">String</span>
<span class="TOKEN">Public Function</span> VerzeichnisSuchen(szDialogTitle <span class="TOKEN">As</span> String, _
StartVerzeichnis <span class="TOKEN">As</span> <span class="TOKEN">String</span>) <span class="TOKEN">As</span> <span class="TOKEN">String</span>
<span class="TOKEN">Dim</span> X <span class="TOKEN">As</span> <span class="TOKEN">Long</span>
<span class="TOKEN">Dim</span> bi <span class="TOKEN">As</span> BROWSEINFO
<span class="TOKEN">Dim</span> dwIList <span class="TOKEN">As</span> <span class="TOKEN">Long</span>
<span class="TOKEN">Dim</span> szPath <span class="TOKEN">As</span> <span class="TOKEN">String</span>
<span class="TOKEN">Dim</span> wPos <span class="TOKEN">As</span> <span class="TOKEN">Integer</span>
StartDir = StartVerzeichnis
<span class="TOKEN">With</span> bi
.hOwner = hWndAccessApp
.lpszTitle = szDialogTitle
.ulFlags = BIF_RETURNONLYFSDIRS
.lpfn = DummyFunc(AddrOf("BrowseCallbackProc"))
<span class="TOKEN">End</span> <span class="TOKEN">With</span>
dwIList = SHBrowseForFolder(bi)
szPath = Space$(512)
X = SHGetPathFromIDList(<span class="TOKEN">ByVal</span> dwIList, <span class="TOKEN">ByVal</span> szPath)
<span class="TOKEN">If</span> X <span class="TOKEN">Then</span>
wPos = InStr(szPath, Chr(0))
VerzeichnisSuchen = Left$(szPath, wPos - 1)
<span class="TOKEN">Else</span>
VerzeichnisSuchen = ""
<span class="TOKEN">End</span> <span class="TOKEN">If</span>
<span class="TOKEN">End</span> <span class="TOKEN">Function</span>
<span class="TOKEN">Public Function</span> BrowseCallbackProc(<span class="TOKEN">ByVal</span> hWnd <span class="TOKEN">As</span> Long, <span class="TOKEN">ByVal</span> uMsg <span class="TOKEN">As</span> Long, _
<span class="TOKEN">ByVal</span> lParam <span class="TOKEN">As</span> Long, <span class="TOKEN">ByVal</span> lpData <span class="TOKEN">As</span> <span class="TOKEN">Long</span>) <span class="TOKEN">As</span> <span class="TOKEN">Long</span>
<span class="TOKEN">Dim</span> pathstring <span class="TOKEN">As</span> <span class="TOKEN">String</span>
<span class="TOKEN">Dim</span> retval <span class="TOKEN">As</span> <span class="TOKEN">Long</span>
Select Case uMsg
Case BFFM_INITIALIZED
pathstring = StartDir <span class="REM">'"C:\Temp"</span>
retval = SendMessage(hWnd, BFFM_SETSELECTION, _
<span class="TOKEN">ByVal</span> <span class="TOKEN">CLng</span>(1), <span class="TOKEN">ByVal</span> pathstring)
<span class="TOKEN">End</span> Select
BrowseCallbackProc = 0
<span class="TOKEN">End</span> <span class="TOKEN">Function</span>
<span class="TOKEN">Public Function</span> DummyFunc(<span class="TOKEN">ByVal</span> param <span class="TOKEN">As</span> <span class="TOKEN">Long</span>) <span class="TOKEN">As</span> <span class="TOKEN">Long</span>
DummyFunc = param
<span class="TOKEN">End</span> <span class="TOKEN">Function</span>
</pre></div>
Da Access 97 die Funktion <b>AddressOf</b> nicht kennt, müssen Sie <b>nur</b> für die Access 97-Version ein zweites Modul erstellen. Kopieren Sie die folgenden Codezeilen in das neue Modul.
<div><link href="http://www.ms-office-forum.net/forum/externals/codeconv.css" rel="stylesheet"><pre><span class="TOKEN">Option</span> <span class="TOKEN">Compare</span> <span class="TOKEN">Database</span>
<span class="TOKEN">Option</span> <span class="TOKEN">Explicit</span>
<span class="TOKEN">Private</span> <span class="TOKEN">Declare</span> <span class="TOKEN">Function</span> GetCurrentVbaProject <span class="TOKEN">Lib</span> "vba332.dll" <span class="TOKEN">Alias</span> _
"EbGetExecutingProj" (hProject <span class="TOKEN">As</span> <span class="TOKEN">Long</span>) <span class="TOKEN">As</span> <span class="TOKEN">Long</span>
<span class="TOKEN">Private</span> <span class="TOKEN">Declare</span> <span class="TOKEN">Function</span> GetFuncID <span class="TOKEN">Lib</span> "vba332.dll" <span class="TOKEN">Alias</span> "TipGetFunctionId" _
(<span class="TOKEN">ByVal</span> hProject <span class="TOKEN">As</span> Long, <span class="TOKEN">ByVal</span> strFunctionName <span class="TOKEN">As</span> String, <span class="TOKEN">ByRef</span> _
strFunctionId <span class="TOKEN">As</span> <span class="TOKEN">String</span>) <span class="TOKEN">As</span> <span class="TOKEN">Long</span>
<span class="TOKEN">Private</span> <span class="TOKEN">Declare</span> <span class="TOKEN">Function</span> GetAddr <span class="TOKEN">Lib</span> "vba332.dll" <span class="TOKEN">Alias</span> _
"TipGetLpfnOfFunctionId" (<span class="TOKEN">ByVal</span> hProject <span class="TOKEN">As</span> Long, <span class="TOKEN">ByVal</span> strFunctionId <span class="TOKEN">As</span> _
String, <span class="TOKEN">ByRef</span> lpfn <span class="TOKEN">As</span> <span class="TOKEN">Long</span>) <span class="TOKEN">As</span> <span class="TOKEN">Long</span>
<span class="TOKEN">Public Function</span> AddrOf(strFuncName <span class="TOKEN">As</span> <span class="TOKEN">String</span>) <span class="TOKEN">As</span> <span class="TOKEN">Long</span>
<span class="TOKEN">Dim</span> hProject <span class="TOKEN">As</span> <span class="TOKEN">Long</span>
<span class="TOKEN">Dim</span> lngResult <span class="TOKEN">As</span> <span class="TOKEN">Long</span>
<span class="TOKEN">Dim</span> strID <span class="TOKEN">As</span> <span class="TOKEN">String</span>
<span class="TOKEN">Dim</span> lpfn <span class="TOKEN">As</span> <span class="TOKEN">Long</span>
<span class="TOKEN">Dim</span> strFuncNameUnicode <span class="TOKEN">As</span> <span class="TOKEN">String</span>
<span class="TOKEN">Const</span> NO_ERROR = 0
<span class="REM">' The function name must be in Unicode, so convert it.</span>
strFuncNameUnicode = StrConv(strFuncName, vbUnicode)
<span class="REM">' Get the current VBA project</span>
<span class="REM">' The results of GetCurrentVBAProject seemed inconsistent, in our tests,</span>
<span class="REM">' so now we just check the project handle when the function returns.</span>
<span class="TOKEN">Call</span> GetCurrentVbaProject(hProject)
<span class="REM">' Make sure we got a project handle... we always should, but you never know!</span>
<span class="TOKEN">If</span> hProject <> 0 <span class="TOKEN">Then</span>
<span class="REM"> ' Get the VBA function ID (whatever that is!)</span>
lngResult = GetFuncID(hProject, strFuncNameUnicode, strID)
<span class="REM"> ' We have to check this because we GPF if we try to get a function pointer</span>
<span class="REM"> ' of a non-existent function.</span>
<span class="TOKEN">If</span> lngResult = NO_ERROR <span class="TOKEN">Then</span>
<span class="REM"> ' Get the function pointer.</span>
lngResult = GetAddr(hProject, strID, lpfn)
<span class="TOKEN">If</span> lngResult = NO_ERROR <span class="TOKEN">Then</span>
AddrOf = lpfn
<span class="TOKEN">End</span> <span class="TOKEN">If</span>
<span class="TOKEN">End</span> <span class="TOKEN">If</span>
<span class="TOKEN">End</span> <span class="TOKEN">If</span>
<span class="TOKEN">End</span> <span class="TOKEN">Function</span></pre></div>
Um den Dialog aufzurufen und das Ergebnis einem Feld innerhalb des Formulars zurückzugeben erstellen Sie bitte eine Schaltfläche mit dem Namen <b>Verzeichnisauswahl</b>. Der im Beispiel verwendete Namen für das Feld, in welches der Verzeichnispfad zurückgeschrieben wird, lautet <b>Verzeichnis</b>. Beide Namen (Schaltfläche & Feld) können Sie natürlich anders benennen.
<div><link href="http://www.ms-office-forum.net/forum/externals/codeconv.css" rel="stylesheet"><pre><span class="TOKEN">Private Sub</span> Verzeichnisauswahl_Click()
<span class="TOKEN">Dim</span> strVerzeichnisName <span class="TOKEN">As</span> <span class="TOKEN">String</span>
<span class="TOKEN">If</span> IsNull(Me!Verzeichnis) <span class="TOKEN">Then</span>
Me!Verzeichnis = ""
<span class="TOKEN">End</span> <span class="TOKEN">If</span>
strVerzeichnisName = VerzeichnisSuchen _
("Wählen Sie bitte das Verzeichnis aus!", Me!Verzeichnis)
<span class="TOKEN">If</span> ((<span class="TOKEN">Not</span> IsNull(strVerzeichnisName)) <span class="TOKEN">And</span> (strVerzeichnisName <> "")) <span class="TOKEN">Then</span>
Me!Verzeichnis = strVerzeichnisName
<span class="TOKEN">End</span> <span class="TOKEN">If</span>
<span class="TOKEN">End</span> <span class="TOKEN">Sub</span></pre></div>