Christoph Spielmann, Düsseldorf
In der vorliegenden Ausgabe von Access im Unternehmen präsentieren wir Ihnen wieder einige Tipps & Tricks, die es in sich haben. Sie erfahren, wie Sie beliebige Dateien von Access aus öffnen, ohne die Anwendung auswählen zu müssen und wie Sie unerwünschte Zeichen aus Dateinamen entfernen können. Außerdem stellen wir Ihnen eine Möglichkeit vor, um ein Laufband in den Formularen Ihrer Access-Anwendung unterzubringen.
Unter Windows ist bekanntlich jede Dateierweiterung mit einer passenden Anwendung verknüpft. Dieser Tipp zeigt Ihnen, wie Sie eine Datei von Access aus direkt zusammen mit der zugeordneten Anwendung öffnen.
Declare Function ShellExecute Lib "shell32.dll" Alias "ShellExecuteA" (ByVal hwnd _ As Long, ByVal lpOperation As String, ByVal lpFile As String, ByVal lpParameters _ As String, ByVal lpDirectory As String, ByVal nShowCmd As Long) As Long
Quellcode 1
Public Function OpenDocument(DocumentFile As String) As Long Dim ret As Long If Len(DocumentFile) > 0 Then ret = ShellExecute(Application.hWndAccessApp, "open", DocumentFile, _ vbNullChar, "", 1) If Err Then OpenDocument = 0 ElseIf ret > 32 Then OpenDocument = -1 Else OpenDocument = ret End If Else OpenDocument = 0 End If End Function
Quellcode 2
Die Information darüber, welche Anwendungen für welche Dateien zuständig sind, ist in der Registry von Windows untergebracht. Nun wäre es sehr mühselig, die Informationen hier auszulesen. Zum Glück kann Windows da mit einer passenden API-Funktion aufwarten, die Ihnen diese Arbeit abnimmt. Diese API-Funktion trägt den Namen ShellExecute und wird wie in Quellcode 1 deklariert:
Da die einzelnen Parameter etwas unübersichtlich sind, kann der Aufruf mit Hilfe der VBA-Prozedur aus Quellcode 2 vereinfacht werden.
Public Function CreateValidFilename(ByVal Filename _ As String) As String Dim i As Long Dim Text As String Dim Länge As Long Dim Zeichen As String For i = 1 To Len(Filename) Select Case Asc(Mid$(Filename, i, 1)) Case Is < 32, 92, 47, 58, 42, 63, 34, 60, _ 62, 124 Mid$(Filename, i, 1) = "_" End Select Next CreateValidFilename = Filename End Function
Quellcode 3
Diese Funktion erwartet als Parameter lediglich den Dateinamen der zu öffnenden Datei. Als Ergebnis erhalten Sie im Fehlerfall einen Wert kleiner oder gleich 0 zurück. Wenn Sie beispielsweise die Excel-Datei C:\Mappe1.xls in Excel öffnen möchten, dann geben Sie lediglich den folgenden Ausdruck an:
OpenDocument "C:\Mappe1.xls"
Die komplette Funktion finden Sie im Modul modOpenDocument der BeispieldatenbankTippsTricks0206.mdb.
Bei der Eingabe eines Dateinamens sind fast alle Zeichen erlaubt. Eine Ausnahme bilden jedoch die folgenden Zeichen:
\ / : * " < > |
Die Prozedur aus Quellcode 3 prüft einen Dateinamen auf eines dieser Zeichen und ersetzt dieses automatisch durch einen Unterstrich. Wenn Sie dieser Funktion beispielsweise den Text Umsatz 2002/2003.xls übergeben, wird dieser in Umsatz 2002_2003.xls umgewandelt und kann als Dateiname verwendet werden.