Home > Artikel > Ausgabe 9/2012 > Early Binding und Late Binding

Early Binding und Late Binding

Achtung: Sie sind nicht angemeldet. Wenn Sie Abonnent sind und sich anmelden, lesen Sie den kompletten Artikel, laden das PDF herunter oder probieren die Beispieldatenbank aus (sofern vorhanden).

Wenn Sie per VBA mit Objekten wie Word, Excel, Outlook interagieren oder auf die Elemente externe Bibliotheken zugreifen möchten, die Objekte, Eigenschaften, Methoden und Ereignisse bereitstellen, können Sie dies auf zwei Arten erledigen: mit Early Binding oder mit Late Binding. Dieser Artikel erklärt die Vor- und Nachteile dieser beiden Vorgehensweisen anhand des Zugriffs auf eine Excel-Tabelle.

Beispieldatenbank

Die Beispiele dieses Artikels finden Sie in der Datenbank 1209_EarlyUndLateBinding.mdb.

Beispiel

Das Beispiel für diesen Artikel ist einfach: Wir wollen einfach nur eine Excel-Instanz erstellen, ein neues Dokument anlegen und in der ersten Zelle der ersten Tabellen des Dokuments einen Wert eintragen. Dies erledigen auf zwei Arten: mit Early Binding und mit Late Binding. Beides bezieht sich auf die Art, wie Sie die Excel-Instanz deklarieren instanzieren und die im VBA-Code verwendeten Objekte deklarieren.

Early Binding

Beim Early Binding fügen Sie dem VBA-Projekt der Datenbank-Datei einen Verweis auf die Bibliothek Microsoft Excel x.0 Object Library hinzu. Dazu öffnen Sie den VBA-Editor (zum Beispiel mit Alt + F11), betätigen den Menübefehl Extras|Verweise und finden dann den Verweise-Dialog vor. Dort finden Sie, wenn Sie Office beziehungsweise Excel installiert haben, einen entsprechenden Eintrag in der Liste der verfügbaren Verweise vor und markieren diesen (siehe Bild 1).

Hinzufügen eines Verweises auf die Excel-Bibliothek

Bild 1: Hinzufügen eines Verweises auf die Excel-Bibliothek

Damit teilen Sie dem VBA-Editor mit, dass Sie die in dieser Bibliothek definierten Objekte, Eigenschaften, Methoden und Ereignisse verfügbar machen wollen. Im VBA-Editor macht sich das Hinzufügen dieses Verweises zum Beispiel dadurch bemerkbar, dass das Excel-Objekt und seine Elemente beim Deklarieren verfügbar sind.

Dies probieren wir in einem neuen Standardmodul aus, das Sie mit dem Menübefehl Einfügen|Modul anlegen – speichern Sie dieses unter dem Namen mdlExcel.

Wenn Sie dort gleich oben eine Deklarationszeile wie die folgende Anlegen, bietet IntelliSense gleich das Excel-Objekt zur Auswahl an (siehe Bild 2):

Beim Early Binding stehen die Elemente der referenzierten Bibliothek per IntelliSense zur Auswahl bereit

Bild 2: Beim Early Binding stehen die Elemente der referenzierten Bibliothek per IntelliSense zur Auswahl bereit

Dim objExcel As Excel.Application

Auch die übrigen Elemente dieser Bibliothek stehen nun zur Deklaration bereit. Doch damit nicht genug: Wenn Sie nun ein Objekt auf Basis der Klasse Excel.Application erstellen, können Sie auch noch per IntelliSense auf seine Eigenschaften und Methoden zugreifen (siehe Bild 3).

Auch die Eigenschaften und Methoden der Objektvariablen werden per IntelliSense angezeigt.

Bild 3: Auch die Eigenschaften und Methoden der Objektvariablen werden per IntelliSense angezeigt.

Wenn Sie das Excel-Objekt in einem Klassenmodul deklarieren, können Sie dort sogar noch das Schlüsselwort WithEvents mit angeben (siehe Klassenmodul clsExcel – anlegen mit Einfügen|Klassenmodul, speichern unter clsExcel):

Dim WithEvents objExcel As Excel.Application

Sie können dann, genau wie bei den Ereignissen von Formularen oder den darin enthaltenen Steuerelementen, Ereignisprozeduren definieren, die bei bestimmten Ereignissen des entsprechenden Objekts ausgelöst werden.

Nur gibt es in diesem Fall kein Eigenschaftsfenster, mit dem Sie den Wert der Ereigniseigenschaft auf [Ereignisprozedur] festlegen und dann per Mausklick auf die Schaltfläche mit den drei Punkten die entsprechende Ereignisprozedur anlegen. Stattdessen erledigen Sie dies, indem Sie im linken Kombinationsfeld des Code-Fensters des entsprechenden Klassenmoduls das Objekt auswählen (das zwingend mit dem Schlüsselwort WithEvents deklariert sein muss) und dann im rechten Fenster das zu implementierende Ereignis selektieren (siehe Bild 4).

Einsatz von Ereignissen eines mit WithEvents deklarierten Objekts

Bild 4: Einsatz von Ereignissen eines mit WithEvents deklarierten Objekts

Schließlich bietet der Einsatz einer per Early Binding referenzierten Bibliothek für viele Einsatzfälle Konstanten an, welche die eigentlich als Parameter zu verwendenden Zahlen besser lesbar machen.

Ein Beispiel ist das Format, unter dem ein frisch erstelltes Excel-Workbook gespeichert werden soll. In den folgenden Zeilen finden Sie die SaveAs-Methode des aktuellen Workbooks, die als zweiten und letzten Parameter die Konstante xlExcel7 verwendet:

Set objExcel = New Excel.Application

With objExcel

     .Workbooks.Add

     .ActiveCell.Value = "A1"

     .ActiveWorkbook.SaveAs CurrentProject.Path _

          & "\test.xls", xlExcel7

     .Visible = True

End With

Welchen Wert diese Konstante tatsächlich hat, können Sie beispielsweise herausfinden, indem Sie sich den Wert im Direktfenster ausgeben lassen – dies gelingt allerdings nur, wenn ein Verweis auf die Excel-Bibliothek existiert (siehe Bild 5).

Sie haben das Ende des frei verfügbaren Teil dieses Artikels erreicht!

Wenn Sie mehr lesen und auf viele weitere Artikel zugreifen möchten, melden Sie sich als Abonnent unter Login an. Falls nicht, bestellen Sie doch einfach ein Jahresabonnement!