Verweise: Late und Early Binding

Im vierten Teil der Beitragsreihe rund um das Thema Verweise geht es um Late und Early Binding. Das Ziel dieses Beitrags ist es, die Vor- und Nachteile beider Verfahren herauszuarbeiten. Danach erfahren Sie, wie Sie das Beste aus beiden Techniken herausholen und wie Sie den Wechsel von einem zum anderen Vorgehen so bequem wie möglich gestalten.

Wenn das Objektmodell von Access einmal nicht ausreicht, um eine Aufgabe zu erfüllen, haben Sie dank VBA die Möglichkeit, auf das Objektmodell anderer Anwendungen zuzugreifen. Dort können Sie sich die benötigten Funktionen quasi „ausleihen“. Um die Objekte und Methoden einer fremden Anwendung für Access verfügbar zu machen, haben Sie grundsätzlich zwei Möglichkeiten, nämlich Early Binding und Late Binding.

Anhand eines kleinen Beispiels lernen Sie diese beiden Techniken kennen. Dabei soll einfach nur ein Word-Dokument geöffnet und angezeigt werden. Dieses Beispiel ist absichtlich kurz gehalten. Es soll Ihnen lediglich die wesentlichen Kernelemente der beiden Techniken näherbringen.

Early Binding

Beim Early Binding setzen Sie einen Verweis auf die verwendete Bibliothek. Im konkreten Fall ist ein Verweis auf Microsoft Word erforderlich:

Dim objWord As Word.Application
Set objWord = New Word.Application
With objWord
.Visible = True
.Activate
.WindowState = wdWindowStateMaximize
.Documents.Open (CurrentProject.Path & _
"\\Test.doc")
End With

Diese Anweisungen deklarieren und instanzieren als Erstes eine Variable vom Typ Word.Application und machen danach Word sichtbar. Das Fenster von Word wird aktiviert und maximiert. Am Ende wird ein Word-Dokument geladen. Dadurch, dass Sie Early Binding verwenden, haben Sie folgende Vorteile:

  • Sie erhalten IntelliSense-Unterstützung beim Programmieren.
  • Beim Kompilieren wird eine Syntax-Prüfung vorgenommen.
  • Sie können eingebaute Konstanten verwenden.

Insgesamt ist ein Performancevorteil zu erwarten, da für Access beziehungsweise VBA die zu verwendende Bibliothek bereits beim Kompilieren bekannt ist.

Wenn Early Binding so viele Vorteile hat, warum dann dieser Artikel Early Binding hat leider einen entscheidenden Nachteil: Sie benötigen einen Verweis. Dass bei der Verwendung von Verweisen so einiges schiefgehen kann, hat der letzte Beitrag dieser Reihe gezeigt (Defekte Verweise: Ursachen und Lösungen, Shortlink 572).

Late Binding

Ein zusätzlicher Verweis ist beim Late Binding nicht erforderlich:

Dim objWord As Object
Set objWord = CreateObject ("Word.Application")
With objWord
.Visible = True
.Activate
.WindowState = 1
.Documents.Open (CurrentProject.Path & _
"\\Test.doc")
End With

Beim Late Binding wird eine Variable vom Typ Object deklariert. Dieser Variablen weisen Sie dann mit der Methode CreateObject plus der sogenannten ProgID Word.Application eine neue Instanz von Microsoft Word zu.

Der weitere Code ist fast identisch mit dem vorherigen Beispiel. Ein Unterschied besteht lediglich in der Zuweisung des Wertes für die Eigenschaft WindowState. Statt der in Word eingebauten Konstanten wdWindowStateMaximize wird hier deren Wert 1 verwendet. Die Vorteile, die Sie bei Early Binding haben, entsprechen den Nachteilen von Late Binding:

  • Sie erhalten keine IntelliSense-Unterstützung beim Programmieren.
  • Beim Kompilieren kann keine Syntax-Prüfung vorgenommen werden.
  • Sie können keine eingebauten Konstanten verwenden. Diese müssen Sie durch deren Werte ersetzen.

Insgesamt ist ein Performance-Nachteil zu erwarten, da für Access beziehungsweise VBA die zu verwendende Bibliothek erst zur Laufzeit ermittelt und durchsucht werden muss. Late Binding hat aber einen entscheidenden Vorteil: Sie benötigen keinen Verweis. Wenn Ihre Anwendung auf einem anderen Rechner ausgeführt wird, auf dem eine abweichende (ältere) Version von Microsoft Word installiert ist, wird dieser Code auch dort funktionieren.

Probleme mit Verweisen

Welche Probleme es mit fehlerhaften Verweisen geben kann, hat Ihnen der oben bereits erwähnte Beitrag dieser Reihe gezeigt. Lassen Sie uns kurz untersuchen, wann und wie es zu fehlerhaften Verweisen im Rahmen von Automation kommen kann. Gehen Sie davon aus, dass Sie eine Anwendung erstellt haben, in der Sie einen Verweis auf Microsoft Word gesetzt haben, um per Early Binding zum Beispiel die oben gezeigte Funktionalität zu realisieren. Solange die Anwendung auf Ihrem Rechner verbleibt, gibt es keine Probleme. Interessant wird es erst, wenn Sie diese weitergeben. Wenn Ihre Anwendung auf einem Rechner ausgeführt wird, auf dem die gleiche Version von MS Word installiert ist, sind keine Probleme zu erwarten.

Wird Ihre Anwendung auf einem Rechner mit einer neueren Version vom MS Word ausgeführt, dann erkennt Access dies und passt den Verweis selbstständig an. Auch bei dieser automatischen Anpassung eines Verweises kann es zu Fehlern kommen. Denken Sie nur an eine .mde-Datei. Dort können keine Verweise angepasst werden.

Noch schlimmer wird es, wenn Ihre Anwendung auf einem Rechner ausgeführt wird, auf dem eine ältere Version von MS Word installiert ist – oder auch gar keine. Der Verweis kann in diesem Fall nicht angepasst werden. Die neue Version war bei der Erstellung der älteren Version noch nicht bekannt.

Möchten Sie weiterlesen? Dann lösen Sie Ihr Ticket!
Hier geht es zur Bestellung des Jahresabonnements des Magazins Access im Unternehmen:
Zur Bestellung ...
Danach greifen Sie sofort auf alle rund 1.000 Artikel unseres Angebots zu - auch auf diesen hier!
Oder haben Sie bereits Zugangsdaten? Dann loggen Sie sich gleich hier ein:

Schreibe einen Kommentar