Lies diesen Artikel und viele weitere mit einem kostenlosen, einwöchigen Testzugang.
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.
Die komplette Funktion finden Sie im Modul modDateiname der Beispieldatenbank Tipps-Tricks0206.mdb.
Effekte mit Texten waren früher bei der Programmierung unter DOS immer sehr beliebt. Schließlich waren es die einzigen Effekte, die sich mit Hilfe des ASCII-Codes realisieren ließen. Dieser Artikel zeigt, wie Sie einen solchen Effekt in Form eines Laufbandes unter Access realisieren.
Die Anforderung
Sie möchten einen langen Text auf dem Bildschirm darstellen, der sofort ins Auge sticht. Sie haben jedoch auf dem Desktop zu wenig Platz.
Also liegt es nahe, den Text von links nach rechts über den Bildschirm laufen zu lassen, wie Sie es beispielsweise von dem n-tv News-Ticker her kennen (siehe Bild 1).
Die Strategie ist einfach: Sie schneiden einen Teil der Zeichenkette aus, den Sie dann auf dem Bildschirm anzeigen. Bei jedem Schritt verschieben Sie den Ausschnitt um ein Zeichen weiter nach hinten. Sobald Sie am Ende angelangt sind, beginnen Sie wieder von vorne.
Darüber hinaus sollte das Tool nicht nur ein einziges Laufband, sondern mehrere Laufbänder gleichzeitig mit unterschiedlichen Texten darstellen können. Dies realisieren Sie am einfachsten mit Hilfe eines Klassenmoduls.
Public Sub Init(Text As String, AnzahlZeichen As String) m_AnzahlZeichen = AnzahlZeichen m_CurrentPos = 1 If Len(Text) < AnzahlZeichen Then m_Text = Text & String(AnzahlZeichen - _ Len(Text), " ") Else m_Text = Text + " " End If End Sub
Quellcode 4
Public Sub RefreshText() Dim res As String res = Mid(m_Text, m_CurrentPos, m_AnzahlZeichen) m_CurrentPos = m_CurrentPos + 1 If m_CurrentPos + m_AnzahlZeichen > Len(m_Text) Then res = Left(res + m_Text, m_AnzahlZeichen) End If If m_CurrentPos > Len(m_Text) Then m_CurrentPos = 1 End If RaiseEvent RefreshText(res) End Sub
Quellcode 5
Ende des frei verfügbaren Teil. Wenn Du mehr lesen möchtest, hole Dir ...
Testzugang
eine Woche kostenlosen Zugriff auf diesen und mehr als 1.000 weitere Artikel
diesen und alle anderen Artikel mit dem Jahresabo