GetObject-Funktion

Hinweis : Die Funktion, die Methode, das Objekt oder die Eigenschaft, die bzw. das in diesem Thema erläutert wird, ist deaktiviert, falls der Ausdrucksdienst in Microsoft Jet im geschützten Modus (Sandkastenmodus) ausgeführt wird. In diesem Modus wird die Auswertung von potenziell unsicheren Ausdrücken verhindert. Weitere Informationen zum geschützten Modus finden Sie in der Hilfe unter "Sandkastenmodus".

Gibt einen Verweis auf ein Objekt zurück, das von einer ActiveX-Komponente zur Verfügung gestellt wird.

Syntax

GetObject ([Pfadname ] [, Klasse ] )

Die Syntax der Funktion GetObject weist die folgenden Argumente auf:

Argument

Beschreibung

Pfadname

Optional. Variant (String). Der vollständige Pfad und Name der Datei, die das abzurufende Objekt enthält. Ist Pfadname nicht angegeben, ist Klasse erforderlich.

Klasse

Optional. Variant (String). Eine Zeichenfolge, die die Klasse des Objekts angibt.


Das ArgumentKlasse hat die Syntax Anwendungsname.Objekttyp und besteht aus den folgenden Teilen:

Teil

Beschreibung

Anwendungsname

Erforderlich. Variant (String). Der Name der Anwendung, die das Objekt bereitstellt.

Objekttyp

Erforderlich. Variant (String). Der Typ oder die Klasse des zu erstellenden Objekts.


Hinweise

Hinweis : Die folgenden Beispiele zeigen die Verwendung dieser Funktion in einem VBA-Modul (Visual Basic for Applications). Wenn Sie weitere Informationen zum Arbeiten mit VBA wünschen, wählen Sie Entwicklerreferenz in der Dropdownliste neben Suchen aus, und geben Sie einen oder mehrere Begriffe in das Suchfeld ein.

Verwenden Sie die GetObject-Funktion, um auf ein ActiveX-Objekt in einer Datei zuzugreifen und das Objekt zu einer Objektvariablen zuzuweisen. Verwenden Sie die Set-Anweisung, um das Objekt, das von GetObject zurückgegeben wurde, der Objektvariablen zuzuweisen. Beispiel:

Dim CADObject As Object
Set CADObject = GetObject("C:\CAD\SCHEMA.CAD")

Wird dieser Code ausgeführt, wird die Anwendung gestartet, die mit Pfadname verknüpft ist, und das Objekt in der angegebenen Datei wird aktiviert.

Ist Pfadname eine leere Zeichenfolge, gibt GetObject eine neue Objektinstanz des angegebenen Typs zurück. Fehlt das Argument Pfadname, gibt GetObject ein derzeit aktives Objekt des angegebenen Typs zurück. Ist kein Objekt des angegebenen Typs vorhanden, tritt ein Fehler auf.

Einige Programme ermöglichen es Ihnen, einen Teil einer Datei zu aktivieren. Fügen Sie am Ende des Dateinamens ein Ausrufezeichen (!) hinzu, gefolgt von der Zeichenfolge, die den zu aktivierenden Teil der Datei angibt. Informationen dazu, wie diese Zeichenfolge erstellt wird, finden in der Dokumentation für die Anwendung, die das Objekt erstellt hat.

Beispielsweise könnte es in einem CAD-Programm mehrere Ebenen in einer Zeichnung geben, die in einer Datei gespeichert ist. Sie könnten den folgenden Code verwenden, um eine Ebene in einer Zeichnung namens SCHEMA.CAD zu aktivieren:

Set LayerObject = GetObject("C:\CAD\SCHEMA.CAD!Layer3")

Wenn Sie die Klasse des Objekts nicht angeben, ermittelt Automatisierung die zu startende Anwendung und das zu aktivierende Objekt anhand des Dateinamens, den Sie bereitstellen. In einigen Dateien werden jedoch möglicherweise mehrere Objektklassen unterstützt. Für eine Zeichnung könnten z. B. drei verschiedene Typen von Objekten unterstützt werden: ein Application-Objekt, ein Drawing-Objekt und ein Toolbar-Objekt, die alle Teile derselben Datei sind. Um anzugeben, welches Objekt in einer Datei aktiviert werden soll, verwenden Sie das optionale Argument Klasse. Beispiel:

Dim MyObject As Object
Set MyObject = GetObject("C:\DRAWINGS\SAMPLE.DRW", _
"FIGMENT.DRAWING")

In diesem Beispiel ist FIGMENT der Name eines Zeichenprogramms, und DRAWING ist einer der Objekttypen, die das Programm unterstützt.

Sobald ein Objekt aktiviert wurde, verweisen Sie in Code über die von Ihnen definierte Objektvariable auf dieses Objekt. Im vorangehenden Beispiel greifen Sie auf Eigenschaften und Methoden des neuen Objekts zu, indem Sie die Objektvariable MyObject verwenden. Beispiel:

MyObject.Line 9, 90
MyObject.InsertText 9, 100, "Hello, world."
MyObject.SaveAs "C:\DRAWINGS\SAMPLE.DRW"

Hinweis :  Verwenden Sie die GetObject-Funktion, wenn eine aktuelle Instanz des Objekts vorhanden ist oder wenn Sie das Objekt mit einer Datei erstellen möchten, die bereits geladen ist. Wenn keine aktuelle Instanz vorhanden ist und Sie das Objekt nicht mit einer geladenen Datei starten möchten, verwenden Sie die CreateObject-Funktion.

Wenn sich ein Objekt als Objekt mit einer einzigen Instanz selbst registriert hat, wird nur eine Instanz des Objekts erstellt, unabhängig davon, wie oft CreateObject ausgeführt wird. Bei einem Objekt mit einer einzigen Instanz gibt die GetObject-Funktion immer dieselbe Instanz zurück, wenn sie mit einer leeren Zeichenfolge ("") aufgerufen wird, und sie löst einen Fehler aus, wenn das Argument Pfadname fehlt. Sie können GetObject nicht dazu verwenden, einen Verweis auf eine Klasse abzurufen, die mit Visual Basic erstellt wurde.

Beispiel

In diesem Beispiel wird die GetObject-Funktion verwendet, um einen Verweis auf ein bestimmtes Microsoft Office Excel 2007-Arbeitsblatt (MyXL) abzurufen. Die Application-Eigenschaft des Arbeitsblatts wird verwendet, um Excel anzuzeigen, zu schließen usw. Über zwei API-Aufrufe wird in der Sub-Prozedur "DetectExcel"nach Excel gesucht, und wenn Excel ausgeführt wird, wird es in der Prozedur in die Tabelle für aktive Objekte (Running Object table) eingetragen. Der erste Aufruf von GetObject verursacht einen Fehler, wenn Microsoft Excel noch nicht ausgeführt wird. In diesem Beispiel bewirkt der Fehler, dass das Flag "ExcelWasNotRunning" auf "True" festgelegt wird. Der zweite Aufruf von GetObject gibt die Datei an, die geöffnet werden soll. Wenn Excel noch nicht ausgeführt wird, wird es durch den zweiten Aufruf gestartet, und dieser gibt einen Verweis auf das Arbeitsblatt zurück, das sich in der angegebenen Datei (MYTEST.XLS) befindet. Die Datei muss im angegebenen Speicherort vorhanden sein. Andernfalls wird der Visual Basic-Fehler "Automatisierungsfehler" ausgelöst. Anschließend werden im Beispielcode sowohl Excel als auch das Fenster, in dem das angegebene Arbeitsblatt enthalten ist, sichtbar gemacht. Schließlich wird im Code, wenn keine frühere Version von Excel ausgeführt wurde, die Quit-Methode des Application-Objekts verwendet, um Excel zu schließen. Wurde die Anwendung bereits ausgeführt, wird nicht versucht, sie zu schließen. Der Verweis selbst wird freigegeben, indem er auf Nothing festgelegt wird.

' Declare necessary API routines:
Declare Function FindWindow Lib "user32" Alias _
"FindWindowA" (ByVal lpClassName as String, _
ByVal lpWindowName As Long) As Long
Declare Function SendMessage Lib "user32" Alias _
"SendMessageA" (ByVal hWnd as Long,ByVal wMsg as Long, _
ByVal wParam as Long, _
ByVal lParam As Long) As Long
Sub GetExcel()
Dim MyXL As Object ' Variable to hold reference
' to Microsoft Excel.
Dim ExcelWasNotRunning As Boolean ' Flag for final release.
' Test to see if there is a copy of Microsoft Excel already running.
On Error Resume Next ' Defer error trapping.
' GetObject function called without the first argument returns a
' reference to an instance of the application. If the application isn't
' running, an error occurs.
Set MyXL = GetObject(, "Excel.Application")
If Err.Number <> 0 Then ExcelWasNotRunning = True
Err.Clear ' Clear Err object in case error occurred.
' Check for Microsoft Excel. If Microsoft Excel is running,
' enter it into the Running Object table.
DetectExcel
' Set the object variable to reference the file you want to see.
Set MyXL = GetObject("c:\vb4\MYTEST.XLS")
' Show Microsoft Excel through its Application property. Then
' show the actual window containing the file using the Windows
' collection of the MyXL object reference.
MyXL.Application.Visible = True
MyXL.Parent.Windows(1).Visible = True
Do manipulations of your file here.
' ...
' If this copy of Microsoft Excel was not running when you
' started, close it using the Application property's Quit method.
' Note that when you try to quit Microsoft Excel, the
' title bar blinks and a message is displayed asking if you
' want to save any loaded files.
If ExcelWasNotRunning = True Then
MyXL.Application.Quit
End IF
Set MyXL = Nothing ' Release reference to the
' application and spreadsheet.
End Sub
Sub DetectExcel()
' Procedure dectects a running Excel and registers it.
Const WM_USER = 1024
Dim hWnd As Long
' If Excel is running this API call returns its handle.
hWnd = FindWindow("XLMAIN", 0)
If hWnd = 0 Then ' 0 means Excel not running.
Exit Sub
Else
' Excel is running so use the SendMessage API
' function to enter it in the Running Object Table.
SendMessage hWnd, WM_USER + 18, 0, 0
End If
End Sub
Ihre Fähigkeiten erweitern
Schulung erkunden
Neue Funktionen als Erster erhalten
An Office Insider teilnehmen

War diese Information hilfreich?

Vielen Dank für Ihr Feedback!

Vielen Dank für Ihr Feedback. Es klingt, als ob es hilfreich sein könnte, Sie mit einem unserer Office-Supportmitarbeiter zu verbinden.

×