Wenn Sie Code beim Öffnen einer Access-Datenbank ausführen wollen, gibt es zwar keine direkte Möglichkeit wie etwa ein Ereignis beim Öffnen eines Formulars. Es gibt allerdings verschiedene Techniken, mit denen Sie dennoch den Zeitpunkt des Öffnens der Anwendung abfangen und dabei VBA-Code ausführen können. Bisher nutzte man hier vornehmlich die Möglichkeiten über das Makro namens AutoExec und das Startformular, aber es gibt noch eine weitere Option: nämlich über ein benutzerdefiniertes Ribbon. Im vorliegenden Beitrag zeigen wir, wie Sie eine VBA-Funktion beim Starten unter Verwendung des Ribbons aufrufen können.
Neben dem AutoExec-Makro, dessen Einsatz wir im Beitrag Code beim Öffnen der Anwendung: AutoExec (www.access-im-unternehmen.de/1367) beschreiben, gibt es mit dem Startformular noch eine weitere Option – siehe Code beim Öffnen der Anwendung: Formular (www.access-im-unternehmen.de/1368).
Es gibt seit der Einführung des Ribbons jedoch noch eine weitere Möglichkeit, gleich beim Öffnen der Datenbank VBA-Code auszuführen. Diese hier ist zwar etwas aufwendiger, aber wenn Sie ohnehin ein Ribbon beim Start der Datenbankanwendung anzeigen, ist nur eine einzige zusätzliche Zeile zum Aufrufen der Startfunktion nötig. Außerdem sparen Sie so ein AutoExec-Makro beziehungsweise ein beim Starten der Anwendung zu öffnendes Formular ein.
Startfunktion
Wir gehen in den beiden oben angegebenen Beiträgen davon aus, dass wir eine Funktion wie die folgende beim Start der Anwendung aufrufen wollen:
Public Function Startup() MsgBox "Meldung per VBA" End Function
Um diese automatisch beim Start aufzurufen und dabei ein Ribbon statt des AutoExec-Makros oder eines Startformulars zu nutzen, benötigen Sie zunächst eine minimale Ribbondefinition. Diese sieht wie folgt aus:
xml version="1.0"> <customUI xmlns="http://schemas.microsoft.com/office/2009/07/customui" onLoad="OnLoad_Startup"/>
Diese Definition fügen Sie einer Tabelle namens USysRibbons hinzu, deren Entwurf wie in Bild 1 aussieht. Für das Feld RibbonName stellen wir einen eindeutigen Index ein. Wenn Sie diese Tabelle so angelegt und unter dem Namen USysRibbons gespeichert haben, wird diese möglicherweise nicht im Navigationsbereich angezeigt – das liegt daran, dass die Tabelle mit diesem Namen als Systemtabelle erkannt und ausgeblendet wird. Sie können diese dann entweder mit dem folgenden Befehl öffnen oder die Anzeige der Systemobjekte in den Optionen aktivieren:
Bild 1: Entwurf der Ribbontabelle USysRibbons
DoCmd.OpenTable "USysRibbons"
Fügen Sie nun die oben aufgeführte Ribbondefinition in das Feld RibbonXML ein und stellen Sie den Wert des Feldes RibbonName im gleichen Datensatz auf Startup ein (siehe Bild 2).
Bild 2: Die Ribbondefinition in der Tabelle USysRibbons
Nachdem Sie die Ribbondefinition hinzugefügt haben, schließen Sie die aktuelle Datenbank einmal und öffnen diese wieder. Dies ist nötig, um die Einträge der Tabelle USysRibbons in die Liste der verfügbaren Ribbondefinitionen einzulesen. Danach können Sie mit Datei|Optionen die Access-Optionen öffnen und zum Bereich Aktuelle Datenbank wechseln. Hier finden Sie unter Menüband- und Symbolleistenoptionen die Option Name des Menübands und können hier nun den Eintrag Startup auswählen (siehe Bild 3). Nun benötigen Sie nur noch eine Funktion mit dem Namen, den wir für das Ereignisattribut onLoad des customUI-Elements hinterlegt haben. Diese sieht wie folgt aus:
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