Dateiauswahl per API

Die benötigten Funktionen

Sie könnten zwar die Funktionen apiGOFN und apiGSFN direkt in Ihrem Code aufrufen, besser und komfortabler ist jedoch eine weitere Funktion Dateiauswahl, die abhängig von den übermittelten Parametern die Werte an die API-Funktionen übergibt. Damit wird der Aufruf dann wesentlich einfacher. Listing 2 zeigt diese Funktion sowie die zwei Hilfsfunktionen Nullwerte- Loeschen und AddFilter. Die Funktion Nullwerte Loeschen entfernt überflüssige Nullzeichenfolgen im Rückgabewert und optimiert daher den Rückgabewert. Mit der Funktion Addfilter können Sie zu einer vorhandenen Filterangabe für das Dialogfeld einen weiteren Dateifilter hinzufügen. Wenn Sie keinen Filter angeben, werden alle Dateien angezeigt.

Function Dateiauswahl( _
Optional ByRef Flags As Variant, _
Optional ByVal AnfangsVerzeichnis As Variant, _
Optional ByVal Filter As Variant, _
Optional ByVal FilterIndex As Variant, _
Optional ByVal Erweiterung As Variant, _
Optional ByVal Dateiname As Variant, _
Optional ByVal DialogTitel As Variant, _
Optional ByVal hwnd As Variant, _
Optional ByVal boolOeffnen As Variant) As Variant
Dim OFN As typOFN
Dim strFileName As String
Dim strFileTitel As String
Dim boolErg As Boolean
' Give the dialog a caption Titel.
If IsMissing(AnfangsVerzeichnis) Then AnfangsVerzeichnis = CurDir
If IsMissing(Filter) Then
Filter = AddFilter("", "Alle Dateien (*.*)", "*.*")
End If
If IsMissing(FilterIndex) Then FilterIndex = 1
If IsMissing(Flags) Then Flags = 0&
If IsMissing(Erweiterung) Then Erweiterung = ""
If IsMissing(Dateiname) Then Dateiname = ""
If IsMissing(boolOeffnen) Then boolOeffnen = True
If IsMissing(DialogTitel) Then
If boolOeffnen = True Then
DialogTitel = "Zu öffnende Datei auswählen"
Else
DialogTitel = "Zieldatei bestimmen!"
End If
End If
If IsMissing(hwnd) Then hwnd = Application.hWndAccessApp
strFileName = left(Dateiname & String(256, 0), 256)
strFileTitel = String(256, 0)
With OFN
.lngSize = Len(OFN)
.hwndOwner = hwnd
.strFilter = Filter
.lngFilterindex = FilterIndex
.strFile = strFileName
.lngMaxFile = Len(strFileName)
.strFileTitel = strFileTitel
.lngMaxFileTitel = Len(strFileTitel)
.strTitel = DialogTitel
.lngFlags = Flags
.strDefExt = Erweiterung
.strInitialDir = AnfangsVerzeichnis
.lngInstance = 0
.lngHook = 0
.strCustomFilter = String(255, 0)
.lngMaxCustFilter = 255
End With
If boolOeffnen = True Then
boolErg = apiGOFN(OFN)
Else
boolErg = apiGSFN(OFN)
End If
If boolErg Then
If Not IsMissing(Flags) Then Flags = OFN.lngFlags
Dateiauswahl = NullWerteLoeschen(OFN.strFile)
Else
Dateiauswahl = vbNullString
End If
End Function
Function AddFilter(strFilter As String, _
strBeschreibung As String, Optional varItem As Variant) As String
If IsMissing(varItem) Then varItem = "*.*"
AddFilter = strFilter & _
strBeschreibung & vbNullChar & _
varItem & vbNullChar
End Function
Private Function NullWerteLoeschen(ByVal strItem As String) As String
Dim intPos As Integer
intPos = InStr(strItem, vbNullChar)
If intPos > 0 Then
NullWerteLoeschen = left(strItem, intPos - 1)
Else
NullWerteLoeschen = strItem
End If
End Function