Access bietet nicht nur die Möglichkeit, Tabellen, Abfragen, Formulare und Berichte per VBA-Code zu erstellen. Sie können auch die Elemente, die Sie im VBA-Editor bearbeiten, per VBA erstellen, bearbeiten und wieder löschen. Dieser Beitrag macht den Start in eine Beitragsreihe, die sich mit den Möglichkeiten zur Programmierung des VBA-Editors und von VBA-Code beschäftigen. In diesem Teil schauen wir uns an, wie Sie überhaupt VBA-Projekte mit VBA referenzieren.
Voraussetzung: Extensibility-Verweis
Wenn Sie Routinen erschaffen wollen, mit denen Sie wiederum VBA-Elemente und -Code manipulieren möchten, benötigen Sie einen Verweis auf die Bibliothek Microsoft Visual Basic for Applications Extensibility 5.3 Object Library.
Diesen fügen Sie im VBA-Editor mit dem Verweise-Dialog hinzu, den Sie mit dem Menübefehl Extras|Verweise öffnen (siehe Bild 1).
Bild 1: Verweis auf die Extensibility-Bibliothek
Access-Datenbank und VBA-Projekt
Eines der praktischen Dinge an Access ist, dass sowohl die Daten als auch die Elemente der Benutzeroberfläche und die Anwendungslogik normalerweise in einer einzigen Datei stecken. Natürlich gibt es Ausnahmen, wo die Tabellen in eine Backend-Access-Datei ausgelagert wurden oder wo die Tabellen Teil einer SQL Server-Datenbank sind. Und es gibt auch noch die Möglichkeit, dass Sie in einer Datenbankanwendung Elemente aus anderen Datenbankdateien nutzen – zum Beispiel, wenn Sie VBA-Code in eine Bibliotheksdatenbank auslagern.
Was jedoch immer garantiert ist, dass eine Access-Datenbankdatei auch ein VBA-Projekt enthält. Das VBA-Projekt speichert dabei die Module und Klassenmodule der Datenbankanwendung, wobei es zwei Typen von Klassenmodulen gibt – alleinstehende oder solche, die zu einem Formular oder einem Bericht gehören.
Derweil muss nicht jedes Formular und jeder Bericht ein Klassenmodul enthalten. Ein Klassenmodul zu einem Formular oder Bericht wird von Access erst durch eine der beiden folgenden Aktionen angelegt:
- wenn Sie die Eigenschaft Enthält Modul des Formulars oder Berichts auf Ja einstellen oder
- wenn Sie für das Formular oder den Bericht oder ein darin enthaltenes Steuerelement eine Ereignisprozedur definieren.
Aktuelles VBA-Projekt referenzieren
Um das aktuelle VBA-Projekt zu referenzieren, bedarf es keiner besonderen Tricks. Wir nutzen dazu die folgende Technik, nachdem wir den Namen unseres Beispielprojekts auf prjVBAEditorProgrammieren eingestellt haben.
Das erledigen Sie über den Eigenschaften-Bereich, während Sie im Projektexplorer den Eintrag für das Projekt der aktuellen Datenbank markiert haben (siehe Bild 2).
Bild 2: Ändern des Namens des VBA-Projekts
Danach probieren Sie den folgenden Code aus:
Public Sub VBProjectReferenzieren() Dim objVBProject As VBProject Set objVBProject = VBE.ActiveVBProject Debug.Print objVBProject.Name End Sub
Die Prozedur deklariert eine Variable des Typs VBProject und füllt diese mit der Eigenschaft ActiveVBProject der Klasse VBE. Die Klasse VBE ist das oberste Element der Bibliothek zur Programmierung des Visual Basic Editors.
Nachdem wir die Variable objVBProject gefüllt haben, können wir damit beispielsweise auf den Namen des Projekts zugreifen. Diesen gibt die Prozedur im vorliegenden Fall wie in Bild 3 aus.
Bild 3: Ausgabe des Namens des VBA-Projekts
Mehrere VBA-Projekte im VBA-Editor
Aber referenzieren wir mit der Eigenschaft ActiveVBProject auch tatsächlich immer das VBProject-Objekt der aktuellen Datenbank
Nein, das ist nicht sichergestellt. Um das zu reproduzieren, wechseln Sie einmal zum Access-Fenster und legen ein neues, leeres Formular in der Entwurfsansicht an. Dann klappen Sie im Ribbon unter Entwurf|Steuerelemente die Liste der Steuerelemente auf und aktivieren dort die Option Steuerelement-Assistent verwenden (siehe Bild 4).
Bild 4: Aktivieren des Steuerelement-Assistenten
Danach fügen Sie beispielsweise eine neue Schaltfläche hinzu, was den dazugehörigen Assistenten aktiviert. Das war es schon auf der Access-Seite – Sie können den Assistenten nun abbrechen und wieder zum VBA-Editor wechseln.
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