Tipps und Tricks 6/2002

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.

Sie haben das Ende des frei verfügbaren Textes erreicht. Möchten Sie ...

TestzugangOder haben Sie bereits Zugangsdaten? Dann loggen Sie sich gleich hier ein:

Schreibe einen Kommentar