Excel fernsteuern, Teil 1: Initialisierung

Von Access aus können Sie andere Anwendungen per VBA fernsteuern, wenn diese Anwendung dies unterstützt. Das ist grundsätzlich bei den übrigen Office-Anwendungen wie Excel, Outlook, Word oder PowerPoint der Fall. In dieser Artikelserie schauen wir uns an, wie Sie eine Excel-Anwendung fernsteuern können und wie Sie Dokumente anlegen, Daten in eine Excel-Tabelle schreiben oder die Daten auslesen.

Beispieldatenbank

Die Beispiele dieses Artikels finden Sie in der Datenbank 1803_AccessUndExcelFernsteuern.accdb.

Early Binding und Late Binding

Sie können eine Anwendung wie etwas Microsoft Excel auf verschiedene Arten referenzieren, wenn Sie diese fernsteuern wollen. Die unterschiedlichen Herangehensweisen heißen Early Binding und Late Binding. Diese beiden haben wir bereits in einem früheren Artikel namens Early Bindung und Late Binding erläutert. Im vorliegenden Beitrag wollen wir die Technik Early Binding nutzen, da dies eine komfortablere Programmierung ermöglicht.

Dazu fügen wir dem VBA-Projekt der aktuellen Access-Datenbank einen Verweis auf die Bibliothek Microsoft Excel x.0 Object Library hinzu, wobei das x für die auf Ihrem Rechner installierte Version von Microsoft Excel handelt. Um dies zu erledigen, öffnen Sie den VBA-Editor – beispielsweise mit der Tastenkombination Alt + F11 -, und rufen dann den Menüeintrag Extras|Verweise auf. Hier suchen Sie den gewünschten Eintrag aus und markieren diesen über das entsprechende Kontrollkästchen (siehe Bild 1).

Verweis auf die Excel-Bibliothek

Bild 1: Verweis auf die Excel-Bibliothek

Wenn Sie nun mit der Taste F2 oder dem Menüeintrag Ansicht|Objektkatalog den Objektkatalog öffnen, finden Sie dort im oberen Kombinationsfeld den Eintrag Excel vor.

Wählen Sie diesen aus, erscheinen unten alle Elemente der Excel-Bibliothek (siehe Bild 2). Dies ist eine gute Anlaufstelle, wenn Sie einmal nach bestimmten Klassen, Methoden, Eigenschaften oder Ereignissen suchen wollen.

Die Excel-Elemente im Objektkatalog

Bild 2: Die Excel-Elemente im Objektkatalog

Excel-Instanz erstellen

Bevor wir auf die Daten einer Excel-Datei zugreifen können, um diese entweder einzulesen oder auch zu ändern, benötigen wir Zugriff auf eine Excel-Instanz. Das kann eine laufende Instanz sein, also eine solche, die der Benutzer bereits geöffnet hat, oder wir erstellen einfach per VBA-Code eine neue Instanz.

In beiden Fällen wollen Sie einen Verweis auf die Excel-Instanz in einer Objektvariablen speichern, um später über diese auf die Excel-Instanz zuzugreifen. Diese deklarieren wir wie folgt, zunächst in einer einfachen Prozedur, die wir in einem Standardmodul anlegen:

Public Sub ExcelInstanzieren()
    Dim objExcel As Excel.Application
End Sub

Neue Instanz erstellen

Nun wollen wir eine neue Excel-Instanz erstellen und den Verweis darauf in der Variablen objExcel speichern. Das geht so:

Public Sub ExcelInstanzieren()
    Dim objExcel As Excel.Application
    Set objExcel = New Excel.Application
End Sub

Dies erstellt eine neue Excel-Instanz. Diese verschwindet aber genau so schnell wieder, wie sie erstellt wurde, denn ihre Variable ist ja nur lokal in der Prozedur deklariert. Wenn die Prozedur beendet und somit die Variable zurückgesetzt wird, verschwindet auch die Excel-Instanz wieder (die Sie an dieser Stelle übrigens noch nicht einmal sehen).

Ob das wirklich geschieht, können Sie folgendermaßen testen: Setzen Sie einen Haltepunkt auf die Zeile End Sub. Wenn Sie die Prozedur nun mit der Taste F5 starten, bleibt die Prozedur an dieserm Haltepunkt stehen. An dieser Stelle öffnen Sie nun den Task-Manager (einfach Task-Manager in die Suchen-Box von Windows eingeben und die Eingabetaste betätigen) und schauen, ob es dort einen Eintrag namens Microsoft Excel (32 Bit) gibt (gegebenenfalls auch Microsoft Excel (64 Bit)). Dieser Eintrag sollte etwa unter Windows 10 im Bereich Hintergrundprozesse zu finden sein (siehe Bild 3).

Die frisch gestartete Excel-Instanz im Tast-Manager

Bild 3: Die frisch gestartete Excel-Instanz im Tast-Manager

Lassen Sie die Routine nun weiterlaufen, verschwindet auch diese Instanz schnell wieder aus dem Task Manager. Sie können auch mehrere Instanzen gleichzeitig starten. Dazu benötigen Sie dann auch mehrere Objektvariablen. Der folgende Code liefert beispielsweise gleich zwei Einträge für Excel im Task-Manager:

Dim objExcel As Excel.Application
Dim objExcel2 As Excel.Application
Set objExcel = New Excel.Application
Set objExcel2 = New Excel.Application

Instanzvariable global deklarieren

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

Schreibe einen Kommentar