Objektbibliotheken

Tippt man irgendwo in VBA As, öffnet IntelliSense eine Liste, deren Einträge teils nichts mit VBA, sondern mit der Applikation zu tun haben. In anderen Applikationen sieht die Liste dagegen ganz anders aus. Diese Objekte kennt VBA, weil sie über eine sogenannte Objektbibliotheken Objektbibliothek zur Verfügung gestellt werden. Welche Objektbibliotheken verfügbar sind, sieht man im Verweisfenster, das im Menü mit Extras/Verweise aufgerufen wird.

Verweise
Verfügbare Verweise:
Visual Basic For Applications
Microsoft Access **.0 Object Libary
OLE Automation
Microsoft Office **.0 Object Libary
Microsoft Office **.0 Access database engine Object Libary  
Microsoft Excel **.0 Object Libary
Microsoft PowerPoint **.0 Object Libary  
Microsoft Word **.0 Object Libary  
Microsoft ActiveX Data Objects *.1 Libary

Priorität




Microsoft Access **.0 Object Libary
  Pfad:   C:\Program Files (x86)\Microsoft Office\Office......

Je nach eingebundenen Bibliotheken ändert sich der Funktionsumfang von VBA. VBA selbst steckt z.B. in der Bibliothek Visual Basic For Applications, weswegen diese Bibliothek immer eingebunden sein muss, genau wie die Objektbibliothek der Hostanwendung. Für Microsoft Word wäre das z.B. die Microsoft Word Object Libary. Für manche Applikationen können weitere Bibliotheken sinnvoll oder sogar nötig werden. So sieht man im obigen Beispiel einen Verweis auf die Microsoft Office Access database engine Object Libary, die in Microsoft Access den Zugriff auf Abfragen via VBA ermöglicht.

Je nachdem, welche Programme auf dem PC installiert sind, kann die Verweisliste sehr viel länger als hier gezeigt sein. Viele Programme ganz verschiedener Hersteller unterstützen sogenannte „Automation“ oder auch „OLE-Automation“, mit der ein anderes Programm auf dessen sogenannte ActiveX-Objekte zugreifen kann. Sollte allerdings unser VBA-Programm einmal auf einem anderen PC laufen und die entsprechende Anwendung ist dort nicht installiert, funktioniert das natürlich nicht.

Will man eine Applikation aus einer anderen heraus steuern, kann man deren Objektbibliothek zusätzlich zu den bestehenden Einträgen auswählen. Damit sind deren Funktionen von vornherein mit eingebunden (sogenanntes Early Binding). Entwickelt man eine Anwendung, die auch auf anderen PCs laufen soll, sollte man auf der niedrigsten Versionsnummer entwickeln. Außerdem kommt es zu einem nicht auffangbaren Fehler, wenn versehentlich die Applikation doch nicht eingebunden sein sollte. Die folgende Prozedur EarlyBinding greift aus einer beliebigen Anwendung auf Microsoft Word zu. Fehlt allerdings der Verweis auf die Word-Bibliothek, nutzt auch die Fehlerprozedur nichts. Alternativ kann man auch ohne Einbindung der Objektbibliothek programmieren (sogenanntes Late Binding). Dann steht kein IntelliSense zur Verfügung, was das Programmieren etwas schwieriger macht. Die Prozedur LateBinding ist mit EarlyBinding identisch, könnte aber einen eventuellen Fehler bei der Variablen wd auffangen.

Sub EarlyBinding()
On Error GoTo FEHLER
Dim wd As Word.Application  'Verweis notwendig!

Set wd = CreateObject("Word.Application")
Debug.Print wd.Version
Exit Sub

FEHLER:
Debug.Print Err.Number
End Sub

Sub
LateBinding() On Error GoTo FEHLER Dim wd As Object Set wd = CreateObject("Word.Application") Debug.Print wd.Version Exit Sub FEHLER: Debug.Print Err.Number End Sub