VBA-Programmierung in Microsoft Excel

Tutorial: Excel-Beispiele

VBA-Begriff: CreateObject-Funktion

Erstellt und gibt einen Verweis auf ein ActiveX-Objekt zurück.

Syntax

CreateObject(Klasse,[Servername])

Die Syntax der CreateObject-Funktion besteht aus folgenden Teilen:

Teil Beschreibung
Klasse Erforderlich; Variant (String). Der Anwendungsname und Klasse des zu erstellenden Objekts.
Servername Optional; Variant (String). Der Name des Netzwerkservers, auf dem das Objekt erstellt wird. Falls Servername eine leere Zeichenfolge ("") ist, wird der lokale Computer verwendet.

Das Argument Klasse verwendet die Syntax AnwName.Objekttyp und besteht aus folgenden Teilen:

Teil Beschreibung
AnwName Erforderlich. Ein Wert vom Typ Variant (String). Der Name der Anwendung, die das Objekt bereitstellt.
Objekttyp Erforderlich. Ein Wert vom Typ Variant (String). Der Typ oder die Klasse des zu erstellenden Objekts.

Bemerkungen

Jede Anwendung, die Automatisierung unterstützt, stellt mindestens einen Objekttyp bereit. Eine Anwendung zur Textverarbeitung kann beispielsweise Application-, Document- und Toolbar-Objekte bereitstellen.

Sie erstellen ein ActiveX-Objekt, indem Sie das von CreateObject zurückgegebene Objekt einer Objektvariablen zuweisen:

' Deklariert eine Objektvariable, die den Verweis auf  ' das Objekt enthält. 
' Dim as Object führt zu Auflösung zur Laufzeit. 
Dim ExcelSheet As Object
Set ExcelSheet = CreateObject("Excel.Sheet")

Dieser Code veranlaßt die Anwendung, das Objekt (in diesem Fall ein Microsoft Excel-Tabellenblatt) zu erstellen. Wurde ein Objekt einmal erstellt, so verweisen Sie im Code über die definierte Objektvariable darauf. Im folgenden Beispiel greifen Sie auf Eigenschaften und Methoden des neuen Objekts mit der Objektvariablen, ExcelSheet, und anderen Microsoft Excel-Objekten zu, einschließlich des Application-Objekts und der Cells-Auflistung.

' Excel mit Hilfe des Application-Objekts 
' bereitstellen.
ExcelSheet.Application.Visible = True
' Text in die erste Tabellenzelle einfügen. 
ExcelSheet.Application.Cells(1, 1).Value = "Dies ist Spalte A, Zeile 1"
' Speichern der Tabelle unter C:\test.xls 
ExcelSheet.SaveAs "C:\ TEST.XLS" 
' Schließen von Excel mit der Quit-Methode des 
' Application-Objekts.
ExcelSheet.Application.Quit
' Freigeben der Objektvariable.
Set ExcelSheet = Nothing

Das Deklarieren einer Objektvariable mit dem As Object-Abschnitt erstellt eine Variable, die einen Verweis auf jeden Objekttyp enthalten kann. Das Binden der Variable an das Objekt, damit über die Variable auf das Objekt zugegriffen werden kann, erfolgt jedoch erst zur Laufzeit, d.h., der Verweis wird erst beim Ausführen des Programms aufgelöst. Sie können eine Objektvariable erstellen, für die der Verweis zur Kompilierungszeit aufgelöst wird, indem Sie die Objektvariable mit einer bestimmten Klassen-ID deklarieren. Sie können beispielsweise die folgenden Microsoft Excel-Verweise deklarieren und erstellen:

Dim xlAnw As Excel.Application 
Dim xlBuch As Excel.Workbook
Dim xlArbBlatt As Excel.WorkSheet
Set xlAnw = CreateObject("Excel.Application")
Set xlBuch = xlApp.Workbooks.Add
Set xlArbBlatt = xlBook.Worksheets(1)

Der Verweis mit Hilfe einer Variablen, der zur Kompilierungszeit aufgelöst wird, kann zwar das Leistungsverhalten verbessern, die Variable kann jedoch nur einen Verweis auf die in der Deklaration angegebene Klasse enthalten.

Sie können ein von der CreateObject-Funktion zurückgegebenes Objekt einer Funktion übergeben, die ein Objekt als ein Argument erwartet. Der folgende Code erstellt und übergibt z.B. einen Verweis auf ein Excel.Application-Objekt:

Call MeineSub (CreateObject("Excel.Application"))

Sie können ein Objekt auf einem anderen Computer im Netzwerk erstellen, indem Sie den Namen des Computers im Argument Servername von CreateObject übergeben. Dieser Name ist derselbe wie der, der als Bestandteil des Freigabenamens den Computernamen angibt: bei einer Freigabe namens "\\MeinServer\Public" ist Servername "MeinServer".

Anmerkung   In der COM-Dokumentation (siehe Microsoft Developer Network) finden Sie weitere Informationen zum Bereitstellen einer Anwendung auf einem Remote-Comouter im Netzwerk. Möglicherweise müssen Sie einen Registrierungsschlüssel für Ihre Anwendung hinzufügen.

Der folgende Code gibt die Versionsnummer einer Instanz von Excel zurück, die auf einem Remote Computer MeinServer läuft:

Dim xlApp As Object
Set xlApp = CreateObject("Excel.Application", "MeinServer")
Debug.Print xlApp.Version

Falls der Remote Server nicht existiert oder nicht verfügbar ist, tritt ein Laufzeitfehler ein.

Anmerkung   Verwenden Sie CreateObject, wenn keine aktuelle Instanz des Objekts existiert. Wird eine Instanz des Objekts bereits ausgeführt, so wird eine neue Instanz gestartet und ein Objekt des angegebenen Typs erstellt. Damit Sie die aktuelle Instanz verwenden oder die Anwendung starten und eine Datei laden können, verwenden Sie die GetObject-Funktion.

Hat sich ein Objekt selbst als ein Objekt mit einer einzigen Instanz registriert, so wird nur eine Instanz des Objekts erstellt, ungeachtet dessen, wie oft CreateObject ausgeführt wird.