Home > Artikel > Ausgabe 10/2015 > Datenbanken über Verknüpfung starten

Datenbanken über Verknüpfung starten

  PDF ansehen

  Download PDF und Beispieldatenbank

In der Regel starten Sie Ihre Datenbanken, indem Sie auf ACCDB-Dateien doppelklicken oder, indem Sie Access öffnen und eine Datei über das Backstage-Menü laden. Andere Anwender der Datenbank finden das vielleicht weniger komfortabel und wünschen sich eine Desktop-Verknüpfung, über die sich die Anwendung schneller starten lässt. Über dieses Thema gibt es mehr zu sagen, als man auf den ersten Blick denkt ...

Beispieldatenbank

Die Beispiele dieses Artikels finden Sie in der Datenbank 1510_KommandoZeile.accdb

Verknüpfungen anlegen

Der Zweck einer Windows-Shell-Verknüpfung – im Folgenden auch einfach Link genannt – ist die Entbindung eines Dokuments oder einer Anwendung von deren Speicherverzeichnis. Einmal angelegt kann sie an beliebigem Ort untergebracht oder verschoben werden. Zusätzlich können in der Verknüpfung noch Startargumente oder ein Icon der Wahl angegeben werden. Außerdem lässt sich in den Kompatibilitätsoptionen noch festlegen, ob die Anwendung als Administrator oder im Modus einer früheren Windows-Version gestartet werden soll.

Vollziehen wir das einmal mit der Beispieldatenbank zum Beitrag. Rechtsklicken Sie auf Ihren Desktop und wählen aus dem Kontextmenü den Eintrag Neu | Verknüpfung. Damit öffnet sich der Assistent zum Anlegen eines neuen Links. Über Durchsuchen... manövrieren Sie zum Verzeichnis, in dem Sie die Beispieldatei Kommandozeile.accdb abgelegt hatten und wählen diese aus. Mit der anschließenden Angabe der Verknüpfungsbezeichnung und Klicken auf Fertigstellen hat sich die Sache dann schon.

Weitere Parameter können erst eingestellt werden, nachdem die angelegte Verknüpfung über Rechtsklick und Eigenschaften in den Bearbeitungsmodus versetzt wurde, wie in Bild 1.

Verknüpfungseigenschaften für einen Link zur Datenbank Kommandozeile.accdb mit Startparameter

Bild 1: Verknüpfungseigenschaften für einen Link zur Datenbank Kommandozeile.accdb mit Startparameter

Windows verwendet automatisch das Access-Symbol, weil dies die zugeordnete Anwendung für accdb-Dateien ist. Sie können nun über Anderes Symbol ein alternatives Icon aus Ihrem Fundus auswählen. Das Arbeitsverzeichnis (Ausführen in) spielt weiter keine Rolle. Unter Umständen ändern Sie aber den Startmodus für das Access-Fenster, indem Sie unter Ausführen etwa den Eintrag Maximiert einstellen. Eine globale Tastenkombination hingegen werden Sie selten für eine Access-Datenbank hinterlegen.

In der Abbildung wurde im Textfeld Ziel an den Pfad zur accdb-Datei noch der Startparameter /RUNTIME gehängt. Auf die Bedeutung dieses und der weiteren möglichen Startparameter kommen wir noch ausführlich zu sprechen. Diese Kommandozeilenoption soll Access eigentlich anweisen, die Datenbank so auszuführen, als würde sie unter der Access-Runtime geöffnet. Starten Sie sie über den Link, so ist jedoch kein Unterschied zum normalen Start zu erkennen. Grund dafür ist, dass Windows der msaccess.exe über die Verknüpfung zwar den Pfad der Datenbankdatei übergibt, nicht jedoch weitere Parameter. Imgrunde wäre das zwar möglich, doch dafür wäre die Registry abweichend von den Einstellungen der Office-Installation zu modifizieren. Diese Option schließen wir aus.

Das Ganze klappt erst dann, wenn Sie in der Verknüpfung nicht nur den accdb-Pfad eingeben, sondern auch noch den Pfad zur msaccess.exe:

Ziel:

"c:\Program Files\Microsoft Office\ _

    Office14\msaccess.exe" _

   "c:\xyz\kommandozeile.accdb" _

/RUNTIME

Hier ist also etwas Schreibarbeit angesagt. Und Sie müssen zunächst ermitteln, wo sich die msaccess.exe befindet, was sich von System zu System und je nach Office-Version unterscheiden kann. Die Anführungszeichen sollten Sie grundsätzlich um die Pfade legen, damit sich Windows nicht an etwaigen Leerzeichen verschluckt.

Dieser Aufwand ist, wie erwähnt, nur dann notwendig, wenn Sie die Datenbank mit einem Kommandoparameter starten möchten.

Access-Kommandozeilenparameter

Es gibt eine ganze Reihe von möglichen Startparametern, die man Access verabreichen kann, von denen in der freien Wildbahn einige mehr, andere wiederum weniger Bedeutung haben. Die meisten sind von Microsoft in der Access-Hilfe dokumentiert worden. Einige allerdings versteckte man und sie sind das Forschungsergebnis von Tüftlern. Außerdem gibt es Parameter, die unter früheren Access-Versionen noch funktionierten und Sinn machten, mittlerweile zwar noch entgegengenommen, jedoch von Access ignoriert werden.

Wir besprechen hier die wichtigsten Parameter. Ersetzen Sie einfach den Ausdruck /Runtime des vorigen Beispiels durch die folgenden Parameter. Sie können auch mehrere Startparameter kombinieren. Soll die Datenbank etwa exklusiv und im Runtime-Modus gestartet werden, so geben Sie an:

"" /EXCL /RUNTIME

Trennen Sie die einzelnen Parameter jeweils durch ein Leerzeichen. Manche Anweisungen benötigen noch weitere Angaben, also Parameter für den Startparameter. Hängen Sie auch diese jeweils durch Leerzeichen getrennt an, etwa:

/EXCL /X MeinStartmakro /CMD Irgendwas

Startparameter /WRKGRP

In früheren Zeiten wurden Access-Datenbanken nicht selten über eine Arbeitsgruppendatei (MDW) abgesichert. Über diese in Kombination mit Benutzername und Passwort ließen sich Berechtigungen und der Zugang zur Datenbank selbst einstellen.

Der Support für diese Methode wurde, warum auch immer, seit Access 2007 eingestellt. Allerdings funktioniert sie immer noch, auch wenn Access über seine Oberfläche keine Werkzeuge mehr bereitstellt, um die Arbeitsgruppendateien und Benutzerberechtigungen zu verwalten.

Haben Sie eine solche durch Arbeitsgruppendatei abgesicherte Datenbank vor sich, so kann der Pfad zur notwendigen Datei über den Kommandozeilenschalter WRKGRP in der Verknüpfung angegeben werden:

"" "" _

/WRKGRP "c:\xyz\sicherung.mdw"

Damit wird Access angewiesen, die angegebene Datei als Systemdatenbank für die Access-Engine zu benutzen, statt der Standard-MDW, die normalerweise in Gestalt der system.mdw zum Einsatz kommt und sich irgendwo in den Untiefen der Windows-Benutzerverzeichnisse befindet.

Startparameter /USER

Diesen Parameter benötigen Sie nur, wenn auch die WRKGRP-Option angegeben wurde. In der Arbeitsgruppendatei finden sich die angelegten Benutzer, welche Zugriff auf die Datenbank erhalten können. Mit USER können Sie direkt einen Benutzer namentlich festlegen, der Zugang zur Datenbank erhalten soll:

"" "" _

     /WRKGRP "c:\xyz\sicherung.mdw"

/USER Minhorst

Startparameter /PWD

Die Absicherung einer Datenbank über eine Arbeitsgruppendatei führt zu einem Anmeldedialog, der Benutzer und Passwort abfragt. Haben Sie per USER den Benutzer schon als Startparameter festgelegt, so erscheint er voreingestellt im Anmeldedialog. Fehlt noch das Passwort. Und das können Sie ebenso in der Kommandozeile über PWD angeben:

"" "" _

     /WRKGRP "c:\xyz\sicherung.mdw"

     /USER Minhorst

/PWD geheim0789

In dieser Kombination kommt es nicht zur Anzeige des Anmeldedialogs. Die Datenbank öffnet sich unmittelbar. Übrigens können Sie den übergebenen Benutzer in der Datenbank mit einer Zeile VBA ermitteln:

Msgbox CurrentUser

> "Minhorst"

Startparameter /EXCL

Das weist Access an, die Datenbank im exklusiven Zugriffsmodus zu öffnen. Das lässt sich auch über den Datei-Öffnen-Dialog aus Access heraus bewerkstelligen, wenn Sie im Auswahldialog das Kombinationsfeld Öffnen auf Exklusiv öffnen stellen. In diesem Modus haben Sie allein die Gewalt über die Datenbank. Weitere Anwender, die sie zu öffnen versuchen, werden daran über die Meldung Datenbank wird verwendet gehindert. Sinn macht diese Einstellung in der Regel nur, wenn die Datenbank sich im Netzwerk befindet und mehrere Benutzer auf sie zugreifen können. Allerdings können auch Sie dann keine zweite Instanz von Access mit dieser Datenbank auf Ihrem Rechner öffnen.

Startparameter /RO

Dieser ist mit dem vorigen verwandt und steht für Read Only. Die Datenbank wird im schreibgeschützten Modus geöffnet, was dem Laden einer Datenbank aus Access heraus mit der Dateiauswahloption Exklusiv schreibgeschützt öffnen entspricht.

Zwar lassen sich in diesem Modus Formulare öffnen und Daten bearbeiten, doch die Objekte der Datenbank verweigern sich einer Modifizierung und Speicherung, also einer Entwicklung. Dafür jedoch können auch weitere Benutzer auf sie zugreifen. Liegt die Datenbank in einem Netzwerk, so stellen Sie damit immerhin sicher, dass niemand in ihr Unfug anstellt.

Startparameter /SAFE

Hier startet die Datenbank im Abgesicherten Modus. Access verhält sich dann ähnlich, wie Windows im abgesicherten Modus. Zahlreiche Einschränkungen kommen zum Tragen. Add-Ins sind deaktiviert, das Speichern ist limitiert, und vieles mehr. Informieren Sie sich bitte in der Access-Hilfe über die lange Liste der Einschränkungen.

Man wird diesem Modus höchstens testweise während der Entwicklung benötigen. Im produktiven Einsatz ist er witzlos.

Startparameter /Repair

Wenn Sie diesen Parameter setzen, so wird die angegebene Datenbank nur repariert. Access blitzt kurz auf und schließt wieder. Danach befindet sich die Datenbank in repariertem und wahrscheinlich komprimiertem Zustand (siehe folgenden Parameter).

Der Vorgang entspricht der Funktion Datenbank komprimieren und reparieren, die in Access über den Ribbon aufgerufen werden kann.

Startparameter /Compact

In alten Access-Versionen gab es noch einen Unterschied zwischen dem Reparieren und dem Komprimieren einer Datenbank. Compact komprimierte sie, ohne zu reparieren, und umgekehrt. Seit Generation gibt es diesen Unterschied in der Datenbank-Engine nicht mehr. Auch, wenn es nicht ausdrücklich dokumentiert ist, kann man davon ausgehen, dass die beiden Schalter /Compact und /Repair genau denselben Vorgang auslösen.

Startparameter /NEWDB

Dieser Parameter ist von Microsoft nicht dokumentiert worden. Sie brauchen in der Verknüpfung keine Datenbankdatei anzugeben, sondern nur die msaccess.exe, gefolgt vom Parameter. Tun Sie es dennoch, so öffnet sich die Datei normal und ignoriert den Parameter.

Mit NEWDB startet Access und zeigt unmittelbar einen Datei-Speichern-Unter-Dialog an, der Sie auffordert, den Namen und Ort einer neu zu erstellenden ACCDB zu bestimmen. Über eine solche Verknüpfung ersparen Sie sich einen Arbeitsschritt. Allerdings können Sie ja auch über das Kontextmenü des Explorers und den Neu-Eintrag eine Datenbank anlegen. Der Nutzen des Startparameters erschließt sich also nicht wirklich.

Startparameter /Convert

Haben Sie eine ältere MDB-Datei vorliegen, die Sie in das aktuelle Access 2007-Format konvertieren möchten, so bemühen Sie für diesen Vorgang üblicherweise das Backstage-Menü Datei | Speichern und Veröffentlichen | Datenbank speichern als... Access-Datenbank (*.accdb), nachdem Sie die MDB geladen hatten.

Convert macht das auch über die Kommandozeile möglich. Setzen Sie den Parameter ohne weitere Angabe ein, so startet Access mit einem Datei-Speichern-Dialog, der Namen und Ort der konvertierten Datenbank abfragt. Direkt nach dem Konvertieren schließt sich Access wieder.

Setzen Sie den Dateipfad hingegen direkt hinter dem Kommando ab, so läuft der Vorgang ohne weitere Interaktion ab:

"" "c:\vwx\test.mdb" _

/Convert "c:\xyz\test.accdb"

Startparameter /RUNTIME

Wer bereits einmal Datenbanken auf einer installierten Runtime-Version von Access laufen ließ, der weiß, dass sich die Gestalt der Oberfläche damit deutlich ändert. Sämtliche Elemente, die für die Entwicklung von Bedeutung sind, fehlen in der Oberfläche. Das schließt das Standard-Menüband ein.

Die kostenlose Runtime-Version kommt in der Regel dann zum Einsatz, wenn auf Firmenrechnern keine Vollversion von Access vorhanden ist. Aber auch Sicherheitserwägungen könnten ein Kriterium sein, denn in der Runtime-Version ist Ihre Datenbank vor jeglichen Eingriffen abseits der Daten gefeit.

Der Schalter RUNTIME gestattet die Simulation diese Modus. Wie die Beispieldatenbank dann aussieht, zeigt Bild 2. Nur das Datei-Menü ist vorhanden, der Ribbon fehlt. Ein Klick auf dieses führt zum nun extrem ausgedünnten Backstage, wie in Bild 3. Auch die Schnellzugriffsleiste lässt sich über den Pfeil oben nicht modifizieren, weil alle Einträge in der Menüliste deaktiviert sind.

So sieht die Beispieldatenbank beim Start über den Schalter /RUNTIME aus

Bild 2: So sieht die Beispieldatenbank beim Start über den Schalter /RUNTIME aus

Backstage-Ansicht nach Starten der Datenbank über /RUNTIME

Bild 3: Backstage-Ansicht nach Starten der Datenbank über /RUNTIME

Verwenden Sie diesen Startmodus, um bei Entwicklung die Kompatibilität Ihrer Datenbank mit der Runtime-Version zu testen, falls Sie unter dieser jemals zum Laufen gebracht werden soll.

Startparameter /X

Der Schalter X leitet sich wohl vom Ausdruck Execute ab. Über ihn können Sie ein Makro bestimmen, das nach Laden der Datenbank direkt ausgeführt werden soll:

"" "" _

/X Testmakro

In diesem Fall führt Access sofort das Makro Testmakro aus, das natürlich in Ihrer Datenbank vorhanden sein muss.

Was passiert, wenn die Datenbank außerdem ein AutoExec-Makro aufweist, welches ja ohnehin automatisch startet? Dann wird zuerst dieses und anschließend das hinter X angegebene Makro ausgeführt.

Startparameter /CMD

Mit dem Schalter CMD können Sie einen beliebigen String an die Datenbank übergeben. Genauer gesagt: an VBA. Über die Funktion Command() kann dieser String dann ausgelesen werden. Er ist während der gesamten Datenbanksitzung gültig. Nehmen wir dieses Beispiel:

"" "kommandozeile.accdb" _

/CMD StartDB

Nach dem Laden der Datenbank, die über das AutoExec-Makro zunächst das Formular frmIntro öffnet, könnte folgende Zeile den Ausdruck auswerten:

Msgbox Command()

Es käme damit zur Anzeige eines Meldungsfensters mit der Ausgabe StartDB. Wofür Sie diesen Ausdruck nun verwenden, bleibt Ihnen überlassen.

In der Beispieldatenbank dient er zur Steuerung einer Funktion. Listing 1 zeigt den relevanten Code des Formulars frmIntro, der beim Schließen aufgerufen wird. Erst wird der CMD-Ausdruck in die String-Variable sCommand eingelesen. Dann wird dieser Ausdruck über die Split-Funktion in einzelne Teile aufgesplittet, wobei als Trenner das Pipe-Zeichen (|) dient. Das Array arrCommand enthält nun diese Einzelteile. Abhängig von der Zahl der enthaltenen Elemente (Ubound) werden in einem Select...Case-Statement drei unterschiedliche Run-Aufrufe realisiert. Der Methode Run von Access können Sie den Namen einer Funktion als String-Variable übergeben. Diese wird dann aufgerufen. Zusätzlich können Parameter für diese Funktion spezifiziert werden. Sie schließen sich kommagetrennt an den Namen der Funktion an. Das erste Element des Arrays arrCommand(0) wird als Funktionsname interpretiert, die weiteren Elemente als Parameter. Mit dem Startparameter StartDB kommt es zu nur einem Element im Array, weshalb lediglich die gleichnamige Funktion angesprungen wird, die sich übrigens im Modul mdlMain befindet. Versuchen Sie nun diesen Startausdruck:

Private Sub CloseAndDisplay()

     Dim sCommand As String

     Dim arrCommand() As String

     

     DoCmd.Close acForm, Me.Name

     

     sCommand = VBA.Command$

     If Len(sCommand) > 0 Then

         arrCommand = Split(sCommand, "|")

         MsgBox "Die Datenbank wurde mit dem " & _

             "Kommandozeilenparameter /CMD" & vbCrLf & _

             "gestartet. Als Parameter wurde der Ausdruck" & vbCrLf & _

             VBA.Command() & vbCrLf & _

             "übergeben. Darum springe ich jetzt zu dieser Funktion...", vbInformation

         Select Case UBound(arrCommand)

         Case 0: Run arrCommand(0)

         Case 1: Run arrCommand(0), arrCommand(1)

         Case 2: Run arrCommand(0), arrCommand(1), arrCommand(2)

         Case Else

             Run arrCommand(0), arrCommand(1), arrCommand(2), arrCommand(3)

         End Select

     End If

End Sub

Listing 1: Auswerten des per /CMD übergebenen Startparameterausdrucks über die VBA-Funktion Command() und Weiterverarbeitung

"" "kommandozeile.accdb" _

/CMD StartDB2|Aha!|Oho!

Nun landen drei Elemente im Array. Aufgerufen wird dann die Prozedur StartDB2 und als Parameter werden Aha! sowie Oho! übergeben. In der Prozedur selbst bringt ein Meldungsfenster die beiden Parameter nun zur Ausgabe.

Dies soll lediglich demonstrieren, wie man mit geschickter Programmierung über den CMD-Ausdruck steuern kann, was beim Start der Datenbank passieren soll. Da der Inhalt von Command() während der gesamten Sitzung Bestand hat, kann auf den Startparameter auch später jederzeit etwa in Formularprozeduren Bezug genommen werden.

Startparameter /DECOMPILE

So, wie beim Ändern und Löschen von Daten in Tabellen die Datenbank sich wegen zunehmend fragmentierter Speicherung aufbläht, verhält es sich auch mit dem VBA-Code. Hinzufügen und Löschen von Modulen, Änderungen in ihnen oder Setzen und Löschen von Verweisen führen zu unsichtbarem Datenmüll, verwaisten Kompilaten, der zuvörderst die Systemtabelle MSysAccessStorage vergrößert. Zudem hat VBA dann mehr Arbeit damit, Ausdrücke im Code richtig zu interpretieren oder Bibliotheken zuzuordnen. Unter Umständen kann es gar zu einem Wirrwarr kommen, das bei umfangreichem VBA-Code zu Funktionsstörungen führt und die Datenbank unbrauchbar macht.

Nutzen Sie bei fragmentierten Tabellen und Indizes die Anweisung Datenbank komprimieren und reparieren, so wirkt sich dies auf den VBA-Code in keiner Weise aus. Stattdessen kommt hier der undokumentierte Schalter DECOMPILE ins Spiel. Startet man eine Datenbank mit diesem Parameter, so bereinigt Access den VBA-Code und dessen Kompilate vom Müll. Danach startet es die Datenbank ganz normal.

Wenn Sie eine solche Verknüpfung anlegen, so verwenden Sie sie nur sparsam, denn das Dekompilieren ist eine etwas heikle Angelegenheit! Und geben Sie auch keine weiteren Startparameter an. Als sinnvoll hat sich dieses Vorgehen erwiesen:

Starten Sie die Datenbank über die Decompile-Verknüpfung und halten Sie die Umschalttaste gedrückt. Das hindert Access daran, beim Starten der Datenbank Makros, Code und Startformular in ihr auszuführen Auch Add-Ins werden dann nicht geladen. Komprimieren Sie die Datenbank anschließend und beenden Sie Access. Laden Sie die Datenbank abermals mit gedrückter Umschalttaste, öffnen den VBA-Editor und kompilieren das VBA-Projekt über das Menü Debuggen | Kompilieren von.... Komprimieren und reparieren Sie abermals.

In der Regel ist die Datenbank dann kleiner, als zuvor und Code wird meist schneller ausgeführt. Mögliche Fehler durch den VBA-Müll sind nun häufig behoben.

Verknüpfungen anlegen per VBScript

Das Anlegen einer Verknüpfung zu einer Datenbankdatei macht wegen der Angabe länglicher Pfade etwas Mühe und ist damit auch fehleranfällig. Nervig ist vor allem der WRKGRP-Schalter, dem man noch einen dritten Pfad für die Arbeitsgruppendatei verabreichen muss.

Mit etwas VB-Script-Tüftelei lässt sich dabei das Ganze auch komfortabler lösen. Wir haben für Sie eine Explorer-Kontextmenüerweiterung programmiert, die Ihnen die Schreibarbeit beim Verknüpfen abnimmt.

Das Skript AccessDBLink.vbs muss zunächst über ein anderes Skript im System als Erweiterung registriert werden. Das übernimmt das Skript register_vbscript.vbs, welches verschiedene Registry-Einträge vornimmt und accdb-, wie mdb-Dateien mit dem Skript assoziiert. Doppelklicken Sie die Datei. Voraussetzung: sie muss sich im gleichen Verzeichnis befinden, wie das andere Skript. Die Erweiterung kommt erst zum Tragen, nachdem Sie dann alle Explorer-Fenster geschlossen haben.

Beim Rechtsklick auf eine accdb-Datenbank sollten Sie nun im Kontextmenü oben den Eintrag Erstelle Verknüpfung... vorfinden. Dann war bei Registrierung alles glatt gelaufen. Aktivieren Sie diesen Eintrag, dann sollte eine Meldung auftauchen, dass jetzt eine Verknüpfung zur Datenbank angelegt wird. Hier werden Sie zunächst nach dem Namen der Verknüpfung gefragt, wie in Bild 4. In der Folge können Sie optional die Startparameter bestimmen. Für jeden der besprochenen Schalter fragt das Skript, ob dieser in den Link integriert werden soll. Bei Schaltern, wie X, CMD oder USER werden Sie über eine InputBox zur Angabe eines Texts veranlasst. Zur Angabe einer Arbeitsgruppendatei etwa taucht ein Dateiauswahldialog auf. Sobald Sie die Nachfrage nach einem Startparameter mit Abbrechen quittieren, verlässt das Skript die Routine mit den Kommandozeilenoptionen.

Name einer Verknüpfung über VB-Script

Bild 4: Name einer Verknüpfung über VB-Script

Dann wird schließlich optional nach dem Ort eines Icon gefragt, das Sie ebenfalls über einen Dateiauswahldialog heraussuchen können, und zuletzt, ob die Datenbank in maximierter Ansicht gestartet werden soll.

Nach diesem letzten Schritt wird die Verknüpfung im gleichen Verzeichnis angelegt, in dem sich die Datenbankdatei befindet.

Das Skript ist zu umfangreich, um es als Listing hier wiederzugeben. In der Beispieldatenbank finden Sie aber im Modul mdlShellLink die Prozedur MakeDBLink, die die Kernfunktion des Skripts unter VBA zeigt – siehe Listing 2.

Sub MakeDBLink()

     Dim oShell As Object

     Dim oLink As Object

     Dim sLinkFile As String

     Dim oAcc As Object

     Dim oDlg As Object

     Dim sDBFile As String

     

     Set oAcc = CreateObject("Access.Application")

     Set oDlg = oAcc.FileDialog(3&)

     oAcc.Visible = False

     With oDlg

         .AllowMultiSelect = False

         .Title = "Datenbankdatei auswählen"

         .Filters.Add "Access-Datei", "*.accdb;*.accde;*.mdb;*.mde", 1

' .InitialFileName = CurrentProject.Path & "\"

         .InitialView = 2 'Details

         .Show

         If .SelectedItems.Count > 0 Then sDBFile = .SelectedItems(1)

     End With

     Set oDlg = Nothing

     

     

     Set oShell = CreateObject("WScript.Shell")

     sLinkFile = CurrentProject.Path & "\DatenbankLink.lnk"

     Set oLink = oShell.CreateShortcut(sLinkFile)

     With oLink

         .TargetPath = SysCmd(acSysCmdAccessDir) & "msaccess.exe"

         .Arguments = Chr$(34) & sDBFile & Chr$(34) & " /RO"

         .WorkingDirectory = CurrentProject.Path

         .Description = "Meine Access-Datenbank"

         .IconLocation = .TargetPath & ",5"

         .WindowStyle = 3

         .Save

     End With

End Sub

Listing 2: Über die Prozedur MakeDBLink kann eine Shell-Verknüpfung zu einer beliebigen Access-Datenbank angelegt werden

Im ersten Schritt lässt Sie der FileDialog der Office-Bibliothek eine Datenbank auswählen, zu der die Verknüpfung hergestellt werden soll. Dann wird eine Instanz der Windows-Klasse WScript.Shell in der Objektvariablen oShell per CreateObjekt erzeugt. Damit ist kein Verweis auf diese Windows-Bibliothek nötig. Das Objekt kennt die Funktion CreateShortcut, der man den Dateinamen der Verknüpfung übergibt. Der wird in der Variablen sLinkFile einfach aus dem Verzeichnis der ausgeführten Datenbank (CurrentProject.Path) und der Bezeichnung DatenbankLink zusammengesetzt. Die Funktion erzeugt ein ShellLink-Objekt, das von der Variablen oLink aufgenommen wird. Im With-Block werden die benötigten Angaben für die Verknüpfung gemacht, etwa der Pfad zur msaccess.exe in TargetPath und der Pfad zur Datenbank in Arguments. Spaßeshalber wird noch der Schalter /RO angehängt. Die IconLocation wird ebenfalls auf die msaccess.exe gesetzt und über die mit Komma angehängte Zahl 5 bestimmt, dass das fünfte Symbol aus den Resourcen der msaccess.exe verwendet werden soll. Mit WindowStyle = 3 legt die Verknüpfung den Ansichtsmodus auf Maximiert fest. Save schließlich speichert die Verknüpfung physisch.