Bild 1: Der Verweise-Dialog von Access
Wenn Sie den Umfang der Objekte, Methoden, Eigenschaften und Ereignisse unter VBA erweitern wollen, geht kein Weg am Verweise-Dialog des VBA-Editors zum Hinzufügen neuer Verweise vorbei. Hier legen Sie fest, welche zusätzlichen Bibliotheken neben den eingebauten Bibliotheken noch ihre Elemente für die Programmierung im aktuellen VBA-Projekt bereitstellen sollen. In diesem Beitrag werfen wir einen kurzen Blick auf den Verweise-Dialog, aber vor allem schauen wir uns an, wie Sie per VBA auf die enthaltenen Einträge zugreifen und diese verwalten.
Wenn Sie vom Access-Fenster aus mit einer geöffneten Datenbankdatei eine der Tastenkombinationen Strg + G oder Alt + F11 betätigen, erscheint der VBA-Editor. Hier öffnen Sie mit dem Menübefehl Extras|Verweise den Verweise-Dialog. Dieser enthält standardmäßig, also für eine neu unter Access 2016 angelegte Access-Datenbank, die Einträge wie in Bild 1.
Bild 1: Der Verweise-Dialog von Access
Sie können Verweise hinzufügen, indem Sie diese in der Liste auffinden und das Kontrollkästchen des gewünschten Eintrags aktivieren. Um einen Verweis zu entfernen, entfernen Sie einfach den passenden Haken. Sie können auch Bibliotheken hinzufügen, die nicht in der Liste angezeigt werden. Dazu klicken Sie auf die Schaltfläche Durchsuchen…, mit der Sie einen Dialog zum Auswählen der hinzuzufügenden Datei öffnen.
Die References-Auflistung
Es gibt zwei interessante Elemente, die wir uns in diesem Beitrag ansehen werden: die References-Auflistung und das Reference-Objekt.
Die References-Auflistung liefert die folgenden Eigenschaften, Methoden und Ereignisse:
- AddFromFile: Fügt einen Verweis über die Angabe des Pfades zu der Bibliotheksdatei zur Verweisliste hinzu.
- AddFromGuid: Fügt einen Verweis über die eindeutige GUID des Verweises hinzu.
- Count: Liefert die Anzahl der aktuell vom Projekt referenzierten Verweise.
- Item: Erlaubt das Referenzieren eines Reference-Objekts über den Index. Sie können allerdings auch über die Eigenschaft Name eines Reference-Objekts auf das Element verweisen, zum Beispiel über vba.
- ItemAdded: Ereignis, das beim Hinzufügen eines Verweises ausgelöst wird.
- ItemRemoved: Ereignis, das beim Entfernen eines Verweises ausgelöst wird.
- Parent: Verweis auf das übergeordnete Objekt der References-Auflistung.
- Remove: Entfernen eines als Reference-Objekt angegebenen Verweises.
Das Reference-Objekt
Die References-Auflistung enthält Objekte des Typs Reference. Diese Objekte haben die folgenden Eigenschaften:
- BuiltIn: Boolean-Eigenschaft, die angibt, ob es sich um einen eingebauten Verweis handelt – also um einen solchen, den Sie nicht entfernen können.
- Collection: Liefert einen Verweis auf die References-Auflistung, in der sich das Reference-Element befindet.
- FullPath: Gibt den kompletten Pfad zur referenzierten Bibliotheksdatei an.
- Guid: Gibt die eindeutige GUID zur Identifizierung der referenzierten Bibliothek an.
- IsBroken: Gibt an, ob die im Verweis vorhandene Bibliotheksdatei vorhanden ist oder nicht.
- Kind: Gibt an, ob es sich um einen Verweis auf eine Bibliothek oder auf ein Visual Basic-Projekt handelt.
- Major: Gibt die Hauptversionsnummer der referenzierten Bibliothek an.
- Minor: Gibt die Unterversion der referenzierten Bibliothek an.
- Name: Liefert den Namen der Bibliothek, den Sie im VBA-Editor zum Referenzieren der Elemente dieser Bibliothek verwenden können.
Durchlaufen der vorhandenen Verweise
Um die im Verweise-Dialog angezeigten und somit eingebundenen Bibliotheken auszugeben, können Sie die References-Auflistung durchlaufen und dabei die Eigenschaften der Reference-Objekte ausgeben. Das können Sie sowohl mit einer For…Next-Schleife als auch mit einer For Each-Schleife erledigen. Mit einer For…Next-Schleife verwenden Sie eine Zählervariable und greifen über die Item-Eigenschaft auf die Verweise zu:
Public Sub VerweisePerForNext() Dim i As Integer Dim ref As Reference For i = 1 To References.Count Set ref = References.Item(i) Debug.Print ref.Name Next i End Sub
Dies liefert im Direktbereich des VBA-Editors für die standardmäßig vorhandenen Bibliotheken die folgende Ausgabe:
VBA Access stdole DAO
In einer For Each-Schleife weisen Sie die Reference-Objekte direkt der in der Schleife verwendeten Variablen zu:
Public Sub VerweisePerForEach() Dim ref As Reference For Each ref In References Debug.Print ref.Name Next ref End Sub
Eigenschaften von Verweisen ausgeben
Mit der folgenden Prozedur geben wir die Werte aller Eigenschaften des mit der Variablen ref referenzierten Reference-Elements (außer Collection) im Direktbereich des VBA-Editors aus:
Public Sub Verweiseigenschaften() Dim ref As Reference For Each ref In References Debug.Print "BuildIn: " & ref.BuiltIn Debug.Print "FullPath: " & ref.FullPath Debug.Print "GUID: " & ref.Guid Debug.Print "IsBroken: " & ref.IsBroken Debug.Print "Kind: " & ref.Kind Debug.Print "Major: " & ref.Major Debug.Print "Minor: " & ref.Minor Debug.Print "Name: " & ref.Name Next ref End Sub
Für die Bibliothek Visual Basic for Applications erhalten wir beispielsweise die folgende Ausgabe:
BuildIn: Wahr FullPath: C:Program Files (x86)Common FilesMicrosoft SharedVBAVBA7.1VBE7.DLL GUID: {000204EF-0000-0000-C000-000000000046} IsBroken: Falsch Kind: 0 Major: 4 Minor: 2 Name: VBA
Verweise hinzufügen
Zum Hinzufügen von Verweisen gibt es zwei Methoden. Die erste ist das Hinzufügen über den Dateinamen mit AddFromFile, die zweite das Hinzufügen über die GUID mit AddFromGUID. Um die beiden Methoden auszuprobieren, fügen wir zunächst einen Verweis auf eine Bibliothek über den Verweise-Dialog hinzu, und zwar die Bibliothek Microsoft Office x.0 Object Library. Diese finden Sie in aktuelleren Access-Versionen nicht unter diesem Namen in der Liste der Verweise, sondern unter der Bezeichnung Office (siehe Bild 2).
Bild 2: Hinzufügen des Verweises auf die Office-Bibliothek
Wenn Sie den Verweis allerdings erst einmal hinzugefügt haben und den Verweise-Dialog erneut öffnen, erscheint die richtige Bezeichnung in der Liste der Verweise, nämlich im Falle von Access 2016 Microsoft Office 16.0 Object Library.
Um die beiden Methoden AddFromFile und AddFromGuid auszuprobieren, lassen wir uns den Dateinamen und die GUID dieses Verweises im Direktbereich ausgeben – das erledigen wir mit der Prozedur Verweiseigenschaften, die wir weiter oben bereits vorgestellt haben.
Die Ergebnisse lauten:
FullPath: C:Program Files (x86)Microsoft Office ootVFSProgramFilesCommonX86Microsoft SharedOffice16MSO.DLL GUID: {2DF8D04C-5BFA-101B-BDE5-00AA0044DE52}
Diese beiden Informationen nutzen wir nun als Parameter der Methoden AddFromFile und AddFromGuid. Vorher entfernen wir den Verweis auf die Office-Bibliothek jedoch wieder aus der Liste der Verweise – zunächst noch einmal über den Verweise-Dialog (gleich erfahren Sie aber auch, wie das per VBA gelingt).
Mit der AddFromFile-Methode fügen wir den Verweis auf die Office-Bibliothek wie folgt hinzu:
Public Sub OfficeHinzufuegenFromFile() Dim strFile As String Dim ref As Reference strFile = "C:Program Files (x86)Microsoft Office rootVFSProgramFilesCommonX86Microsoft Shared Office16MSO.DLL" Set ref = References.AddFromFile(strFile) Debug.Print ref.Name End Sub
Danach geben wir den Namen des neu hinzugefügten und mit der Objektvariablen ref referenzierten Verweises im Direktbereich des VBA-Editors aus, um zu zeigen, dass diese nun vorhanden ist. Sie können sich aber auch im Verweise-Dialog davon überzeugen, dass der Verweis auf die Office-Bibliothek erfolgreich hinzugefügt wurde.
Wenn Sie diese Prozedur erneut aufrufen, löst dies übrigens den Fehler aus Bild 3 aus.
Bild 3: Fehlermeldung beim Versuch, eine bereits vorhandene Bibliothek zu referenzieren
Hinzufügen eines Verweises über die GUID
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