Zur Hauptseite ... Zum Onlinearchiv ... Zum Abonnement ... Zum Newsletter ... Zu den Tools ... Zum Impressum ... Zum Login ...

Achtung: Dies ist nicht der vollständige Artikel, sondern nur ein paar Seiten davon. Wenn Sie hier nicht erfahren, was Sie wissen möchten, finden Sie am Ende Informationen darüber, wie Sie den ganzen Artikel lesen können.

Kompletten Artikel lesen?

Einfach für den Newsletter anmelden, dann lesen Sie schon in einer Minute den kompletten Artikel und erhalten die Beispieldatenbanken.

E-Mail:

Gedrucktes Heft

Diesen Beitrag finden Sie in Ausgabe 6/2003.

Unser Angebot für Sie!

Lesen Sie diesen Beitrag und 500 andere sofort im Onlinearchiv, und erhalten Sie alle zwei Monate brandheißes Access-Know-how auf 72 gedruckten Seiten! Plus attraktive Präsente, zum Beispiel das bald erscheinende Buch 'Access 2010 - Das Grundlagenbuch für Entwickler'!

Diesen Beitrag twittern

Verwendung von Objektvariablen

André Minhorst, Duisburg

Access-Variablen können unterschiedlichste Dinge enthalten: Eine String-Variable enthält eine Zeichenkette. Integer, Single, Double und einige andere Variablen enthalten Zahlen unterschiedlicher Größe. Boolean-Variablen enthalten Ja- und Nein-Werte. Im Gegensatz zu diesen Standardvariablentypen enthalten Objektvariablen Verweise auf Objekte. Im vorliegenden Beitrag lernen Sie die zwei Möglichkeiten kennen, Objektvariablen zu deklarieren.

Grundlagen

Bei den meisten Objektvariablen handelt es sich um Variablen, die auf Komponenten von Objektmodellen anderer Anwendungen zeigen.

Beispiele dafür sind die gängigen Office-Anwendungen wie Word, Excel oder Outlook.

Über die Objektvariable können Sie im VBA-Code auf die Methoden, Eigenschaften und Ereignisse der entsprechenden Objekte zugreifen.

Zur Deklaration von Objektvariablen gibt es zwei Möglichkeiten: Entweder die Variable wird direkt als das gewünschte Objekt deklariert oder Sie verwenden zunächst eine Objektvariable des Typs Object und weisen diesem erst später das gewünschte Objekt und damit dessen Eigenschaften zu. Erstere Variante heißt Early Binding, die zweite Late Binding.

Early Binding

Das Early Binding (Frühes Binden) einer Objektvariablen bedeutet, dass Sie den Typ des Objektes bereits bei seiner Deklaration festlegen.

Es setzt voraus, dass es einen Verweis auf die Bibliothek gibt, in der das gewünschte Objekt enthalten ist. Einen solchen Verweis legen Sie im Dialog Verweise des VBA-Editors fest.

Ein Beispiel für einen solchen Verweis ist die Bibliothek Outlook Object Library x.0.

Wenn Sie einen Verweis auf diese Bibliothek gesetzt haben (s. Abb. 2), können Sie alle verfügbaren Objekte per Early Binding deklarieren.

Abb. 1: Auswahl von Objekten für das Early Binding

Nach dem Festlegen des Verweises sind die Objekte der Bibliothek im VBA-Editor leicht auswählbar (s. Abb. 1).

Abb. 2: Verweis auf eine Bibliothek

Wenn der Typ des Objekts bekannt ist, können Sie auch im nachfolgenden Code die Methoden und Eigenschaften per Intellisense auswählen. Intellisense ist die Bezeichnung von Microsoft für die Technik, zur Verfügung stehende Objekte automatisch anzuzeigen.

Das eigentliche Setzen des Verweises erfolgt entweder direkt bei der Deklaration oder im Anschluss daran. Die erste Variante sieht folgendermaßen aus:

Dim appOutlook As New Outlook.Application

Debug.Print appOutlook.Name

Die zweite Variante benötigt eine Anweisung mehr:

Dim appOutlook As Outlook.Application

Set appOutlook = _
    CreateObject("Outlook.Application")

Debug.Print appOutlook.Name

Die Anweisung Debug.Print dient jeweils dem Nachweis der Funktionsfähigkeit.

Late Binding

Late Binding (Spätes Binden) bedeutet, dass Sie eine Objektvariable zunächst mit dem generischen Typ Object versehen. Die Art des Objekts wird erst mit der Zuweisung des Objekts selbst festgelegt. Das geschieht beispielsweise in der folgenden Funktion:

Public Function LateBinding()

    Dim appOutlook As Object

    Set appOutlook = _
        CreateObject _
        ("Outlook.Application")

    Debug.Print appOutlook.Name

End Function

Genau genommen wird beim Late Binding erst beim Aufruf des Objekts ein Verweis auf die entsprechende Bibliothek gesetzt.

Vor- und Nachteile der beiden Methoden

Jede der beiden Methoden zur Deklaration von Objektvariablen hat Vor- und Nachteile. Da die Vorteile von Early Binding meist Nachteile des Late Binding sind und umgekehrt, werden nachfolgend nur die jeweiligen Vorteile vorgestellt.

Vorteile von Early Binding

Der erste Vorteil von Early Binding liegt in der Ausführungsgeschwindigkeit. Durch das frühe Binden und das Setzen des entsprechenden Verweises ist frühzeitig bekannt, welche Bibliothek das benötigte Objekt sowie die Methoden und Eigenschaften enthält.

Beim späten Binden kommt es durch die Suche nach der entsprechenden Bibliothek zu einer minimalen Verzögerung.

Early Binding bietet außerdem den Vorteil, dass beim Bearbeiten des Codes bereits die Eigenschaften und Methoden des jeweiligen Objektes per Intellisense angezeigt werden können. Wenn Sie diesen Vorteil auch beim Late Binding genießen möchten, setzen Sie für den Zeitraum des Programmierens den benötigten Verweis und deklarieren das Objekt per Early Binding.

Wenn die Funktion oder Prozedur fertig ist und funktioniert, können Sie immer noch zu Late Binding wechseln und die Verweise entfernen.

Vorteile von Late Binding

Beim späten Binden von Objektvariablen entfällt das Setzen von Verweisen auf die entsprechende Objektbibliothek.

Damit erhalten Sie in manchen Fällen einen Vorteil: Wenn Sie die betreffende Datenbank weitergeben, wissen Sie in der Regel nicht, in welcher Version die einzubindenden Objektbibliotheken auf dem Zielsystem vorhanden sind. Dann sollten Sie Late Binding verwenden, um Fehler durch fehlende Verweise zu vermeiden.

Falls Sie selbst beispielsweise mit Access 2002 und Outlook 2002 entwickeln und Access per Automation auf Outlook zugreift, haben Sie keine Möglichkeit, die Anwendung etwa auf einen Arbeitsplatz mit Outlook 2000 vorzubereiten, wenn Sie nicht selbst Outlook 2000 beziehungsweise die entsprechende Objektbibliothek installiert haben. In dem Fall sollten Sie Late Binding verwenden.

Erst Early, dann Late Binding

Eine interessante Technik für die Verwendung von Late Binding unter gleichzeitiger Nutzung der Vorteile durch das beim Early Binding zur Verfügung stehende Intellisense ist folgende:

Sie setzen zunächst wie beim Early Binding einen Verweis auf die gewünschte Bibliothek, deklarieren die Objektvariablen wie gewünscht und programmieren dann auf dem Entwicklungssystem unter Verwendung von Intellisense die gewünschten Prozeduren und Funktionen.

Erst wenn die Entwicklung abgeschlossen ist beziehungsweise wenn Tests auf Rechnern erfolgen, die beispielsweise nicht über die erwarteten Bibliotheken verfügen und somit Fehler durch fehlende Verweise hervorrufen könnten, steigen Sie auf Late Binding um.

Das bedeutet, dass Sie den Verweis entfernen und alle explizit deklarierten Objekte mit dem generischen Objekttyp Object deklarieren.

Dabei ist folgender Trick zu empfehlen: Um auch von den benannten Konstanten zu profitieren, die bei eingebundener Objektbibliothek ganz selbstverständlich verwendet werden, deklarieren Sie die verwendeten Konstanten entweder global oder im Kopf des jeweiligen Moduls.

Auf diese Weise können Sie weiter die gegenüber den Zahlenwerten deutlich besser lesbaren Konstantennamen verwenden.

Sie haben das Ende des frei verfügbaren Teils des Artikels erreicht. Lesen Sie weiter, um zu erfahren, wie Sie den vollständigen Artikel lesen und auf viele hundert weitere Artikel zugreifen können.

Sind Sie Abonnent?Jetzt einloggen ...
 

Kompletten Artikel lesen?

Einfach für den Newsletter anmelden, dann lesen Sie schon in einer Minute den kompletten Artikel und erhalten die Beispieldatenbanken.

E-Mail:

© 2003-2015 André Minhorst Alle Rechte vorbehalten.