Dateiauswahl per API

Erst ab Access XP bietet das Objektmodell von Access die Möglichkeit, grafische Dialoge zur Auswahl eines Dateinamens anzeigen zu lassen, über die der Benutzer eine Datei zum Öffnen oder ein Ziel zum Speichern einer Datei wählen kann. Für Anwendungen, die auch unter Access 2000 funktionieren sollen, ist das ein Problem. Hier müssen Sie auf externe Komponenten oder die Windows API ausweichen. Der Beitrag stellt den Aufruf der Windows-API-Funktionen vor.

Wie immer, wenn Sie die API nutzen möchten, benötigen Sie dazu zahlreiche Deklarationen. Die Declare-Anweisungen für die zwei API-Funktionen selbst sind da noch das kleinste Übel. Viel mehr Aufwand erfordern die Deklarationen für die Konstanten, mit denen Sie die Dialoge konfigurieren können.

Notwendige Deklarationen

Sie benötigen zunächst zwei API-Funktionen Get-OpenFileNameA und GetSaveFileNameA. Die erste Funktion benötigen Sie zur Anzeige des Öffnen- Dialogs, die zweite zur Anzeige des Dialogs Speichern unter (Listing 1). Beiden Funktionen übergeben Sie eine Datenstruktur des Typs typ- OFN, die Sie ebenfalls deklarieren müssen. Über die Eigenschaft lngFlags der Struktur beeinflussen Sie bestimmte Eigenschaften des Dialogs. Dazu müssen Sie der Eigenschaft lngFlags eine Summe von hexadezimalen Werten zuweisen, die in den Konstanten am Ende von Listing 1 festgelegt sind.

Option Compare Database
Option Explicit
Declare Function apiGOFN Lib "comdlg32.dll" _
Alias "GetOpenFileNameA" (OFN As typOFN) As Boolean
Declare Function apiGSFN Lib "comdlg32.dll" _
Alias "GetSaveFileNameA" (OFN As typOFN) As Boolean
Type typOFN
lngSize As Long
hwndOwner As Long
lngInstance As Long
strFilter As String
strCustomFilter As String
lngMaxCustFilter As Long
lngFilterindex As Long
strFile As String
lngMaxFile As Long
strFileTitel As String
lngMaxFileTitel As Long
strInitialDir As String
strTitel As String
lngFlags As Long
intFileOffset As Integer
intFileExtension As Integer
strDefExt As String
lngCustom As Long
lngHook As Long
strTemplate As String
End Type
Global Const OFN_Readonly = &H1
Global Const OFN_Prompt = &H2
Global Const OFN_HideReadOnly = &H4
Global Const OFN_NOCHANGEDIR = &H8
Global Const OFN_SHOWHELP = &H10
Global Const OFN_NOVALIDATE = &H100
Global Const OFN_ALLOWMULTISELECT = &H200
Global Const OFN_EXTENSIONDIFFERENT = &H400
Global Const OFN_PATHMUSTEXIST = &H800
Global Const OFN_FILEMUSTEXIST = &H1000
Global Const OFN_CREATEPROMPT = &H2000
Global Const OFN_SHAREAWARE = &H4000
Global Const OFN_NOREADONLYRETURN = &H8000
Global Const OFN_NOTESTFILECREATE = &H10000
Global Const OFN_NONETWORKBUTTON = &H20000
Global Const OFN_NOLONGNAMES = &H40000
Global Const OFN_EXPLORER = &H80000
Global Const OFN_NODEREFERENCELINKS = &H100000
Global Const OFN_LONGNAMES = &H200000