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
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 |
|
Der Funktionsumfang von VBA hängt von den eingebundenen Bibliotheken ab. 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. Außerdem gibt es Bibliotheken, die den Funktionsumfang von VBA
erweitern, wie etwa um reguläre Ausdrücke
Je nachdem, welche Programme auf dem PC installiert sind, kann die Verweisliste sehr viel länger werden. 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