|
|
GetFileName
Diese Funktion ist in folgenden Access-Versionen verfügbar: 2000, 2002, 2003, 2007, 2010
Zeigt den Office-Dateiauswahl-Dialog an (ohne das ein Verweis auf die Office-Bibliothek erforderlich ist).
Function GetFileName(hWndOwner As Long, AppName As String, DlgTitle As String, OpenTitle As String, File As String, InitialDir As String, Filter As String, FilterIndex As Long, View As Long, flags As Long, fOpen As Boolean) As Long
0, wenn eine Datei ausgewählt wurde.
Dim hwndOwner As Long
Dim strAppName As String Dim strDlgTitle As String Dim strOpenTitle As String Dim strFile As String Dim strInitialDir As String Dim strFilter As String Dim lngFilterIndex As Long Dim lngView As Long Dim lngflags As Long Dim fOpen As Boolean Dim intI As Integer 'Werte übernehmen hwndOwner = Me.Hwnd strDlgTitle = Nz(Me!txtDialogTitel, "") strOpenTitle = Nz(Me!txtOpenTitel, "") strFile = "" strInitialDir = Nz(Me!txtStartVerzeichnis, "") strFilter = Nz(Me!txtFilter, "") lngFilterIndex = Nz(Me!txtFilterIndex, 0) lngView = Nz(Me!txtView, 0) lngflags = Nz(Me!txtFlags, 0) fOpen = Me!chkOpen WizHook.Key = 51488399 If WizHook.GetFileName(hwndOwner, strAppName, strDlgTitle, strOpenTitle, _ strFile, strInitialDir, strFilter, lngFilterIndex, lngView, _ lngflags, fOpen) = 0 Then If InStr(strFile, vbTab) = 0 Then MsgBox strFile, vbInformation, "Auswahl:" Else intI = 1 While InStr(intI + 1, strFile, vbTab) > 0 MsgBox Mid$(strFile, intI + 1, InStr(intI + 1, strFile, vbTab) - intI) intI = InStr(intI + 1, strFile, vbTab) Wend MsgBox Right$(strFile, Len(strFile) - intI) End If End If
Wenn kein Startverzeichnis angegeben wird, beginnt der Dialog im aktuellen Verzeichnis (CurDir). Wenn kein Filter übergeben wird, verwendet der Dialog "Alle Dateien (*.*). Wenn ein FilterIndex angegeben wird, der nicht vorhanden ist, wird der erste Filter verwendet. Wenn ein Dialog zur Ordnerauswahl geöffnet wird, muss für den Parameter "fOpen" der Wert "True" übergeben werden. Sonst kann kein Ordner ausgewählt werden. Die Auswahl für den Parameter "View" ist nur wirksam, wenn bei "Flags" der Wert 64 (View berücksichtigen) verwendet wird. Das Kennzeichen "Mehrfachauswahl" wird nur berücksichtigt, wenn der Parameter "fOpen" den Wert "True" hat. Mehrere Dateien werden durch "Tab" getrennt zurückgegeben.
Eine Beschränkung des "WizHook"-Objektes (und damit dieser Funktion) liegt darin, dass von den ausgewählten Dateien im Rückgabewert höchstens 4094 (= 2^12 - 2) Zeichen enthalten sind; da bei jeder Datei der gesamte (immer gleiche) Ordnerpfad wiederholt wird, wird diese Zeichenlänge auch leicht überschritten, wenn der Ordnerpfad vielleicht selbst schon 100 Zeichen lang ist und 40 Dateien ausgewählt werden.
Der zurückgegebene String beinhaltet dann nur die ersten 4094 Zeichen und danach den Text " 7" & <OpenTitle>. Deshalb sollte vor der Weiterverarbeitung des Rückgabewertes immer überprüft werden, ob er mehr als 4094 Zeichen enthält. In diesem Fall sollte darauf hingewiesen werden, dass nicht alle ausgewählten Dateien erfasst werden konnten, und die Weiterverarbeitung abgebrochen werden. Denn in der Regel ist dann die letzte Datei irgendwo abgeschnitten worden, was bei der Weiterverarbeitung einen Fehler auslösen dürfte. Bei der Dateiauswahl mit der API-Funktion "GetOpenFileName" besteht diese Beschränkung übrigens nicht. Die mögliche Zeichenzahl der Rückgabe wird beim Aufruf der Funktion selbst festgelegt und wesentlich "sparsamer" verwendet, weil bei der Mehrfachauswahl von Dateien der Ordnerpfad nur einmal wiedergegeben wird. Allerdings erfordert die Weiterverarbeitung des Rückgabewertes mehr Code, weil seine Struktur bei der Auswahl von nur einer Datei anders ist als bei der Auswahl mehrerer Dateien. Ich kann Ihnen hierzu gerne einen Beispiel-Code senden. Die API-Funktion bietet außerdem (im Gegensatz zu anderen Datei-Auswahl-Dialogen) die Möglichkeit, mit der Flags-Komponente "OFN_NODEREFERENCELINKS" bei einer Datei-Verknüpfung nicht das Ziel der Verknüpfung, sondern die Verknüpfung selbst zurückzugeben (*.lnk), wenn das gewünscht wird.
|
02.10.2020: 06.11.2019: 06.05.2017: 27.03.2016: 23.05.2014: |
|
|
|