Verknüpfungen für Datenbankdateien erstellen

Nervt es Sie nicht auch, wenn Sie alle Jubeljahre mal eine Verknüpfung zum Starten einer Datenbankdatei erstellen – und dann mühsam den Pfad zur MSAccess.exe und zur betroffenen Access-Datenbank zusammentippen müssen Mir geht es jedenfalls so. Deshalb habe ich ein schickes, kleines Add-In gebaut, mit dem Sie diese Aufgabe mit wenigen Mausklicks erledigen können. Wie es funktioniert und welche Techniken dahinterstecken, erfahren Sie im vorliegenden Beitrag.

Verknüpfungen zu Datenbankdateien haben durchaus ihren Sinn. Sie legen damit nicht nur fest, welche Version der MSAccess.exe verwendet werden soll (wenn überhaupt mehrere Versionen installiert sind), welche Datenbank zu öffnen ist und mit welchen Parametern dies geschehen soll.

Verknüpfungen haben in der Regel die Dateiendung .lnk und berücksichtigen im Icon die Anwendung, die geöffnet werden soll. Außerdem findet sich dort in der Regel ein Pfeil-Symbol. Der grundsätzliche Aufbau des Inhalts einer Verknüpfung sieht so aus:

"<Pfad zur MSAccess.Exe>" "<Pfad zur Access-Datenbank>" <Parameter>

Die ersten beiden Elemente fasst man sicherheitshalber in Anführungszeichen ein. Dies ist eigentlich nur nötig, wenn der Pfad Leerzeichen enthält, aber anderenfalls schadet es auch nicht.

Bild 1 zeigt ein Beispiel für die Eigenschaften einer Verknüpfung, welche die Datenbank für den exklusiven Zugriff öffnet.

Verknüpfungen zu Access-Datenbanken

Bild 1: Verknüpfungen zu Access-Datenbanken

Parameter gibt es durchaus eine ganze Menge, nämlich die folgenden:

  • /excl: öffnet die Datenbank für den exklusiven Zugriff.
  • /ro: öffnet die Datenbank für den schreibgeschützten Zugriff.
  • /profile : Startet Access mit einem anderen Benutzerprofil.
  • /compact : Komprimiert und repariert die mit angegebene Datenbank (siehe oben). Wenn Sie einen Wert für angeben, wird die komprimierte Datenbank unter dem entsprechenden Pfad/Namen erstellt.
  • /convert : Konvertiert die mit angegebene Datei in die aktuelle Access-Version, also die Version der mit referenzierten Access-Anwendung.
  • /x : Hier können Sie den Namen eines Makros angeben, das beim Start von Access aufgerufen werden soll.
  • /cmd: Hier können Sie eine Zeichenfolge angeben, die Sie nach dem Start der Datenbank mit der VBA-Funktion Command auslesen können.

Außerdem gibt es noch einige Parameter, die nur in älteren Access-Versionen zum Einsatz kamen. Die ersten drei stehen in Zusammenhang mit der Verwendung einer Arbeitsgruppen-Informationsdatei, Benutzergruppen und Benutzern:

  • /user : übergibt den Benutzernamen, unter dem die Anwendung verwendet werden soll.
  • /pwd : übergibt das Kennwort für den Benutzer.
  • /wrkgrp: Gibt die Arbeitsgruppen-Informationsdatei an, die verwendet werden soll.

Zwei weitere Parameter sind ebenfalls veraltet, können aber aus Kompatibilitätsgründen noch verwendet werden:

  • /runtime: Sorgt dafür, dass die Datenbank im Runtime-Modus geöffnet wird, also so, als ob nicht die Vollversion, sondern nur die Runtime-Version von Access installiert wäre.
  • /repair: Frühere Access-Versionen (vor Access 2000) boten separate Funktionen zum Komprimieren und Reparieren an. Dies wird nun mit /compact erledigt.
  • /nostartup: öffnet Access ohne Startdialog. Diese Option scheint in den neueren Access-Versionen gar nicht mehr zu funktionieren.

Die Zusammenstellung der Pfade zur MSAccess.exe sowie zu der zu öffnenden Datenbankdatei und der Parameter wollen wir nun mithilfe eines kleinen Add-Ins erleichtern.

Add-In installieren

Das fertige Add-In finden Sie im Download unter dem Dateinamen AccessLinker.mda. Um das Add-In in Access verfügbar zu machen, starten Sie den Add-In-Manager von Access. Dazu nutzen Sie etwa unter Access 2010 den Ribbon-Eintrag Datenbanktools|Add-Ins|Add-In-Manager.

Klicken Sie im nun erscheinenden Dialog Add-In-Manager auf die Schaltfläche Neues hinzufügen… und wählen Sie die Datei AccessLinker.mda aus. Das war es schon – Sie finden nun einen neuen Eintrag namens AccessLinker in der Liste der Add-Ins.

Wenn Sie das Add-In aufrufen, ohne dass eine Datenbank geöffnet ist, erhalten Sie einen Hinweis, dass dieses Add-In nur in Verbindung mit einer geöffneten Datenbank funktioniert.

Anderenfalls erscheint nun das einzige Formular dieses Add-Ins (s. Bild 2).

Das Add-In zum Erstellen von Access-Verknüpfungen

Bild 2: Das Add-In zum Erstellen von Access-Verknüpfungen

Hier finden Sie folgende Elemente:

  • Kombinationsfeld zur Auswahl bereits gespeicherter Konfigurationen
  • Schaltfläche Neu: Legt eine neue Konfiguration an.
  • Schaltfläche Löschen: Löscht die aktuell angezeigte Konfiguration.
  • Textfeld zum Eingeben einer Bezeichnung für Konfiguration
  • Textfeld Verknüpfung speichern unter zum Eingeben des Dateinamens für die zu erstellende Verknüpfung inklusive einer Schaltfläche, die einen Datei speichern-Dialog anzeigt
  • Textfeld Pfad zur MSAccess.exe zur Eingabe des Pfades zur ausführbaren Datei MSAccess.exe inklusive Schaltfläche zum Anzeigen eines Datei öffnen-Dialogs
  • Textfeld Pfad zur Datenbank zur Eingabe des Dateinamens der Datenbank, die durch die Verknüpfung geöffnet werden soll. Sie können dieses Feld leer lassen, wenn die Verknüpfung einfach nur Access öffnen soll.
  • Weitere Steuerelemente, welche die Eingabe aller verfügbaren Kommandozeilenparameter erlauben
  • Schaltfläche Verknüpfung erstellen, welche die .lnk-Datei nach den Vorgaben des Dialogs erstellt.

Add-In erstellen

Die Add-In-Datenbank erstellen wir gleich im Add-In-Verzeichnis von Access. Dieses finden Sie heraus, indem Sie zwei kurze Befehle im Direktbereich des VBA-Editors absetzen (s. Bild 3).

Ermitteln des Add-In-Verzeichnisses von Access

Bild 3: Ermitteln des Add-In-Verzeichnisses von Access

Legen Sie in diesem Verzeichnis eine neue Datenbank namens AccessLinker.mda an. Damit wir die Datenbank als Add-In installieren können, fügen Sie außerdem eine Tabelle namens USysReg-Info hinzu, die wie in Bild 4 aussieht. Die Tabelle enthält vier Datensätze. Der erste legt das Element Menu Add-Ins\AccessLinker in der Registry in dem für Access-Add-Ins vorgesehenen Zweig an. Die übrigen fügen einige Elemente hinzu. Der Eintrag mit dem Wert Expression im Feld ValName legt die VBA-Funktion fest, die beim Starten des Add-Ins ausgeführt werden soll. Description enthält die Beschreibung des Add-Ins. Library gibt die .mda-Datei an, welche die beim Aufruf des Add-Ins zu startende Funktion enthält.

Inhalt der Tabelle USysRegInfo des neu erstellten Add-Ins

Bild 4: Inhalt der Tabelle USysRegInfo des neu erstellten Add-Ins

Zusätzlich passen Sie noch die Eigenschaften der Add-In-Datenbank an. Diese öffnen Sie etwa unter Access 2010, indem Sie mit einem Klick auf Datei den Backstage-Bereich öffnen und dort rechts auf Datenbankeigenschaften anzeigen und bearbeiten klicken.

Es erscheint der Dialog AccessLinker.mda Eigenschaften, in dem Sie wie in Bild 5 zum Registerreiter Zusammenfassung wechseln. Hier tragen Sie die entsprechenden Informationen für die Eigenschaften Titel, Firma und Kommentare ein.

Eigenschaften der Add-In-Datenbank

Bild 5: Eigenschaften der Add-In-Datenbank

Bild 6 zeigt, wo die dort eingegebenen Eigenschaften wieder auftauchen – nämlich im Add-In-Manager, wenn Sie dort den Eintrag AccessLinker anklicken.

Hier erscheinen die Datenbank-Eigenschaften.

Bild 6: Hier erscheinen die Datenbank-Eigenschaften.

Beim Start des Add-Ins

Wenn der Benutzer das Add-In über den Add-In-Manager registriert und über das Add-In-Menü startet, löst dies die in die Registry eingetragene Funktion Autostart aus. Diese fügen wir nun zu einem noch zu erstellenden Standardmodul namens mdlAddIn hinzu (s. Listing 1). Die Funktion soll zwei Aufgaben erfüllen. Die erste ist die Prüfung, ob zum Zeitpunkt des öffnens des Menüs bereits eine Access-Datenbank geöffnet ist. Dazu prüft das Add-In die Anzahl der in der aktuellen Sitzung geöffneten Datenbanken mit der Count-Eigenschaft der Databases-Auflistung. Enthält diese den Wert 0, erhält der Benutzer eine Meldung, die ihn darauf hinweist, dass das Add-In nur bei geöffneter Datenbankdatei funktioniert. Anschließend wird das Add-In beendet.

Public Function Autostart()
     If DBEngine.Workspaces(0).Databases.Count = 0 Then
         MsgBox "Dieses Add-In funktioniert nur bei geöffneter Datenbankanwendung.", _
             vbOKOnly + vbExclamation, "Keine Datenbank geöffnet."
         Exit Function
     End If
     DoCmd.OpenForm "frmVerknuepfungErstellen", WindowMode:=acDialog
End Function

Listing 1: Diese Funktion wird beim Start des Add-Ins ausgelöst

Ist hingegen eine Datenbank geöffnet und somit die Eigenschaft Count größer als 0, öffnet die Funktion das Formular frmVerknuepfungErstellen als modalen Dialog.

Speichern der Konfigurationen

Bevor wir uns das Formular frmVerknuepfungErstellen im Detail ansehen, erstellen Sie noch die Tabelle tblKonfigurationen zum Speichern der verschiedenen Konfigurationen zum Anlegen der Verknüpfungen.

Diese sieht im Entwurf wie in Bild 7 aus und enthält die folgenden Felder (Informationen zu den einzelnen Optionen, deren Felder mit Option… beginnen, finden Sie weiter oben):

Entwurf der Tabelle tblKonfigurationen

Bild 7: Entwurf der Tabelle tblKonfigurationen

  • KonfigurationID: Primärschlüsselfeld
  • Bezeichnung: Bezeichnung der Verknüpfung (eindeutiges Pflichtfeld)
  • VerknuepfungSpeichernUnter: Speicherort der Verknüpfung (Pflichtfeld)
  • PfadAccess: Pfad zur MSAccess.exe (Pflichtfeld)
  • PfadDatenbank: Pfad zur Datenbankdatei (kein Pflichtfeld)
  • OptionExcl: Exklusiv öffnen
  • OptionRo: Schreibgeschützt öffnen
  • OptionProfile: Mit welchem Profil öffnen
  • OptionCompact: Komprimieren
  • OptionCompactZiel: In welche Datei komprimieren
  • OptionConvert: Konvertieren
  • OptionConvertZiel: In welche Datei konvertieren
  • OptionX: Welches Makro starten
  • OptionCmd: Kommandotext
  • OptionNoStartup: Kein Startdialog
  • OptionUser: Welcher Benutzer
  • OptionPwd: Welches Kennwort
  • OptionWrkgrp: Welche Arbeitsgruppen-Informationsdatei
  • OptionRuntime: Runtime-Modus
  • OptionRepair: Datenbank reparieren

Das Add-In-Formular

Mit dieser Tabelle im Gepäck können wir uns an die Gestaltung des Formulars frmVerknuepfungErstellen begeben. Dieses sieht im Entwurf wie in Bild 8 aus. Das Formular binden Sie über die Eigenschaft Datenherkunft an die Tabelle tblKonfigurationen.

Entwurf des Formulars frmVerknuepfungErstellen

Bild 8: Entwurf des Formulars frmVerknuepfungErstellen

Auf diese Weise können Sie direkt alle Felder der Tabelle tblKonfigurationen aus der Feldliste in den Detailbereich des Formulars ziehen. Die Felder richten Sie dann wie in der Abbildung aus. Benennen Sie die gebundenen Felder um, indem Sie für die Textfelder das Präfix txt und für die Kontrollkästchen das Präfix chk voranstellen.

Zu allen Feldern, die eine Angabe in Form eines Speicherorts erwarten, fügen Sie eine Schaltfläche mit drei Punkten (…) als Beschriftung hinzu.

Diese heißen cmdDatenbank (zum Ermitteln der aktuellen Datebank), cmdMSAccess (zum Ermitteln der Datei MSAccess.exe), cmdVerknuepfung (zum Eingeben des Namens der zu erstellenden Verknüpfung), cmdZielKomprimierung (für die Datei, die als Ergebnis einer Komprimierung entsteht) und cmdZielKonvertierung für das Ergebnis einer Konvertierung.

Formular starten

Um dem Benutzer die Arbeit zu erleichtern, wollen wir, wo möglich, direkt entsprechende Standardwerte einsetzen. Davon sind die drei Textfelder txtSpeicherort, txtPfadAccess und txtPfadDatenbank betroffen. Alle drei zeigen spezielle Pfadangaben an.

Die Zuweisung der Standardwerte geschieht gleich beim öffnen des Formulars durch die Ereignisprozedur, die durch das Ereignis Beim Laden des Formulars ausgelöst wird. Diese Prozedur, die Sie in Listing 2 finden, enthält drei Anweisungen:

Private Sub Form_Load()
     Me!txtSpeicherort.DefaultValue = Chr(34) & CurrentDb.Name & Chr(34)
     Me!txtPfadAccess.DefaultValue = Chr(34) & SysCmd(acSysCmdAccessDir) & "MSAccess.exe" & Chr(34)
     Me!txtPfadDatenbank.DefaultValue = Chr(34) & CurrentDb.Name & Chr(34)
End Sub

Listing 2: Einstellen der Standardwerte für die drei Textfelder txtSpeicherort, txtPfadAccess und txtPfadDatenbank

  • Die Schaltfläche txtSpeicherort wird mit dem aktuellen Pfad der Datenbank gefüllt, der mit CurrentDb.Name ermittelt wird.
  • Die ausführbare Datei MSAccess.exe können Sie aus dem Ergebnis der Funktion SysCmd(acSysCmdAccessDir), die das Verzeichnis dieser Datei liefert, und dem Dateinamen MSAccess.exe zusammenstellen.
  • Schließlich fehlt noch der Name für die zu erstellende Verknüpfung. Diesen belegen wir ebenfalls mit dem Namen der aktuell geöffneten Datenbank vor, also mit CurrentDb.Name. Später wird diese Datei noch um die Dateiendung .lnk erweitert, damit diese als Verknüpfung interpretiert wird.

Da alle drei Ausdrücke als Werte für die Eigenschaft Standardwert (unter VBA DefaultValue) der Textfelder angelegt werden sollen, müssen wir diese außerdem noch in Anführungszeichen einfassen. Dies können wir enweder mit einem Ausdruck wie “””” & … & “””” erledigen oder das Anführungszeichen durch die Funktion Chr(34) abbilden.

Pfade schnell auswählen

Damit der Benutzer diese Pfade leicht anpassen kann, haben wir diesen die bereits oben beschriebenen Schaltflächen zur Seite gestellt. Die Schaltfläche neben dem Textfeld txtPfadDatenbank heißt beispielsweise cmdDatenbank und löst für das Ereignis Beim Klicken die Prozedur aus Listing 3 aus.

Private Sub cmdDatenbank_Click()
     Dim strStartdir As String
     Dim strDatenbank As String
     If Len(Me!txtPfadDatenbank) > 0 Then
         strStartdir = Me!txtPfadDatenbank
         strStartdir = VerzeichnisAusPfad(strStartDir)
     Else
         strStartdir = CurrentProject.Path
     End If
     strDatenbank = OPENFILENAME(strStartdir, "Datenbank auswählen", _
         "Access-Datenbank (*.mdb;*.accdb;*.mde;*.accde;*.mda;*.accda)|Alle Dateien(*.*)")
     If Len(strDatenbank) > 0 Then
         Me!txtPfadDatenbank = strDatenbank
     End If
End Sub

Listing 3: Schaltfläche zum Anzeigen eines Datei auswählen-Dialogs

Die Prozedur prüft, ob das Textfeld txtPfadDatenbank bereits einen Wert enthält. Falls ja, wird dieser Wert in die Variable strStartDir übernommen. Dort erfolgt eine weitere Prüfung: Handelt es sich bei dem Inhalt von strStartDir nämlich um einen kompletten Pfad inklusive Dateiname, soll dieser noch entfernt werden.

Die Prüfung und das Entfernen des Dateinamens erledigt eine kleine Hilfsfunktion, die wie in Listing 4 aussieht und im Modul mdlDateifunktionen zu finden ist. Diese Funktion prüft, ob die Dir-Funktion für den übergebenen Pfad mit dem Parameter vbDirectory den Punkt (.) als Ergebnis zurückliefert. Dies deutet darauf hin, dass es sich bereits um eine reine Verzeichnisangabe handelt. Anderenfalls liefert Dir den Namen der Datei des Pfades zurück. In diesem Fall ermittelt die Funktion den Teil des Pfades bis zum ersten Backslash-Zeichen (\) von hinten und gibt diesen als Funktionswert zurück.

Public Function VerzeichnisAusPfad(ByVal strPfad As String) As String
     If Not Dir(strPfad, vbDirectory) = "." Then
         strPfad = Left(strPfad, InStrRev(strPfad, "\"))
     End If
     VerzeichnisAusPfad = strPfad
End Function

Listing 4: Funktion zum Extrahieren des Verzeichnisses aus einem Dateipfad

Ende des frei verfügbaren Teil. Wenn Du mehr lesen möchtest, hole Dir ...

den kompletten Artikel im PDF-Format mit Beispieldatenbank

diesen und alle anderen Artikel mit dem Jahresabo

Schreibe einen Kommentar