GetObject-FunktionGetObject function

Gibt einen Verweis auf ein Objekt zurück, das von einer ActiveX-Komponente bereitgestellt wird.Returns a reference to an object provided by an ActiveX component.

SyntaxSyntax

GetObject([ pathname ], [ class ])GetObject([ pathname ], [ class ])


Die Syntax der GetObject-Funktion verfügt über die folgenden benannten Argumente:The GetObject function syntax has these named arguments:

TeilPart BeschreibungDescription
pathnamepathname Optional; Variant (String).Optional; Variant (String). Der vollständige Pfad und der Name der Datei, die das abzurufende Objekt enthält.The full path and name of the file containing the object to retrieve. Wird pathname weggelassen, ist class erforderlich.If pathname is omitted, class is required.
Klasseclass Optional; Variant (String).Optional; Variant (String). Eine Zeichenfolge zur Darstellung der Klasse des Objekts.A string representing the class of the object.

Das Klasse-Argument verwendet die Syntax appname._ objecttype_ und besteht aus den folgenden Teilen:The class argument uses the syntax appname.objecttype and has these parts:

TeilPart BeschreibungDescription
appnameappname Erforderlich; Variant (String).Required; Variant (String). Der Name der Anwendung, die das Objekt bereitstellt.The name of the application providing the object.
Objekttypobjecttype Erforderlich; Variant (String).Required; Variant (String). Der Typ oder die Klasse des zu erstellenden Objekts.The type or class of object to create.

HinweiseRemarks

Verwenden Sie die GetObject-Funktion, um auf ein ActiveX-Objekt aus einer Datei zuzugreifen, und weisen Sie das Objekt einer Objektvariable zu.Use the GetObject function to access an ActiveX object from a file and assign the object to an object variable. Verwenden Sie die ** festlegen **-Anweisung, um das von GetObject zurückgegebene Objekt der Objektvariable zuweisen.Use the Set statement to assign the object returned by GetObject to the object variable. Beispiel:For example:

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

Wird dieser Code ausgeführt, wird die Anwendung gestartet, die mit dem verknüpften Pfadname angegeben wird und das Objekt in der angegebenen Datei wird aktiviert.When this code is executed, the application associated with the specified pathname is started, and the object in the specified file is activated.

Wenn Pfadname eine Zeichenfolge mit einer Länge von Null ist (""), gibt GetObject eine neue Objektinstanz des angegebenen Typs zurück.If pathname is a zero-length string (""), GetObject returns a new object instance of the specified type. Wenn das Pfadname-Argument ausgelassen wird, gibt GetObject ein derzeit aktives Objekt des angegebenen Typs zurück.If the pathname argument is omitted, GetObject returns a currently active object of the specified type. Existiert kein Objekt vom angegebenen Typ, tritt ein Fehler auf.If no object of the specified type exists, an error occurs.

Einige Programme ermöglichen es Ihnen, einen Teil einer Datei zu aktivieren.Some applications allow you to activate part of a file. Fügen Sie ein Ausrufezeichen (!) an das Ende des Dateinamens und lassen Sie eine Zeichenfolge darauf folgen, die den Teil der Datei kennzeichnet, den Sie aktivieren möchten.Add an exclamation point (!) to the end of the file name and follow it with a string that identifies the part of the file that you want to activate. Informationen zum Erstellen dieser Zeichenfolge finden Sie in der Dokumentation für die Anwendung, die das Objekt erstellt hat.For information about how to create this string, see the documentation for the application that created the object.

Sie haben beispielsweise in einem CAD-Programm mehrere Ebenen in einer Zeichnung, die in einer Datei gespeichert ist.For example, in a drawing application you might have multiple layers to a drawing stored in a file. Sie könnten den folgenden Code verwenden, um eine Ebene in einer Zeichnung mit der Bezeichnung SCHEMA.CAD zu aktivieren:You could use the following code to activate a layer within a drawing called SCHEMA.CAD:

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

Wenn Sie keine Klasse des Objekts angeben, bestimmt die Automatisierung die Anwendung, damit sie gestartet wird und das zu aktivierende Objekt auf Grundlage des Dateinamens, den Sie angegeben haben.If you don't specify the object's class, automation determines the application to start and the object to activate, based on the file name you provide. Einige Dateienn werden jedoch möglicherweise mehr unterstützt als eine Klasse des Objekts.Some files, however, may support more than one class of object. Eine Zeichnung unterstützt möglicherweise drei verschiedenen Objekttypen: ein Application-Objekt, ein Drawing-Objekt, und ein Toolbar-Objekt, die alle Teil derselben Datei sind.For example, a drawing might support three different types of objects: an Application object, a Drawing object, and a Toolbar object, all of which are part of the same file. Um anzugeben, welches Objekt in einer Datei Sie aktivieren möchten, können Sie das optionale Argument Klasse verwenden.To specify which object in a file you want to activate, use the optional class argument. Beispiel:For example:

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

Im Beispiel ist FIGMENT der Name eines Zeichenprogramms und DRAWING eines der Objekttypen, die es unterstützt.In the example, FIGMENT is the name of a drawing application and DRAWING is one of the object types it supports. Nachdem ein Objekt aktiviert wurde, verweisen Sie in Ihrem Code mithilfe der Objektvariable darauf, die Sie definiert haben.After an object is activated, you reference it in code by using the object variable you defined. Im vorherigen Beispiel greifen Sie mithilfe der Objektvariablen MyObject auf Eigenschaften und Methoden des neuen Objekts zu __.In the preceding example, you access properties and methods of the new object by using the object variable MyObject. Beispiel:For example:

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 Sie das zu erstellende Objekt mit einer Datei bereits geladen haben.Use the GetObject function when there is a current instance of the object or if you want to create the object with a file already loaded. Wenn keine aktuelle Instanz vorhanden ist, und Sie nicht möchten, dass das Objekt mit einer geladenen Datei startet, verwenden Sie die ** CreateObject **-Funktion.If there is no current instance, and you don't want the object started with a file loaded, use the CreateObject function.

Wenn sich ein Objekt als Objekt einer einzigen Instanz registriert hat, wird nur eine Instanz des Objekts erstellt, unabhängig davon, wie oft CreateObject ausgeführt wird.If an object has registered itself as a single-instance object, only one instance of the object is created, no matter how many times CreateObject is executed. Da ein einzelnes Instanzobjekt GetObject immer dieselbe Instanz zurückgibt, wenn die Zeichenfolge mit einer Längensyntax von Null ("") zurückgegeben wird, wird ein Fehler verursacht, wenn das Agrument Pfadname ausgelassen wird.With a single-instance object, GetObject always returns the same instance when called with the zero-length string ("") syntax, and it causes an error if the pathname argument is omitted. GetObject kann nicht verwendet werden, um einen Verweis zu einer Klasse abzurufen, die mit Visual Basic erstellt wurde.You can't use GetObject to obtain a reference to a class created with Visual Basic.

BeispielExample

Dieses Beispiel verwendet die GetObject-Funktion, um einen Verweis für ein bestimmtes Microsoft Excel-Arbeitsblatt (MyXL) abzurufen.This example uses the GetObject function to get a reference to a specific Microsoft Excel worksheet (MyXL). Es verwendet die Application-Eigenschaft des Arbeitsblatts, um Microsoft Excel sichtbar zu machen, es zu schließen usw..It uses the worksheet's Application property to make Microsoft Excel visible, to close it, and so on.

Mithilfe von zwei API-Aufrufen sucht das DetectExcel Sub-Verfahren nach Microsoft Excel, und wenn es ausgeführt wird, wird es in der Running Object-Tabelle eingegeben.Using two API calls, the DetectExcel Sub procedure looks for Microsoft Excel, and if it is running, enters it in the Running Object Table.

Der erste Aufruf von GetObject verursacht einen Fehler, wenn Microsoft Excel noch nicht ausgeführt wird.The first call to GetObject causes an error if Microsoft Excel isn't already running. Im Beispiel bewirkt der Fehler, dass die ExcelWasNotRunning-Kennzeichnung auf True festgelegt wird.In the example, the error causes the ExcelWasNotRunning flag to be set to True.

Der zweite Aufruf von GetObject gibt eine zu öffnende Datei an.The second call to GetObject specifies a file to open. Wenn Microsoft Excel noch nicht ausgeführt wird, wird es durch den zweiten Aufruf gestartet und gibt einen Verweis an das Tabellenblatt zurück, in Form der angegebenen Datei MYTEST.XLS.If Microsoft Excel isn't already running, the second call starts it and returns a reference to the worksheet represented by the specified file, mytest.xls. Die Datei muss am angegebenen Speicherort vorhanden sein; andernfalls wird der Visual Basic-Fehler Automation error generiert.The file must exist in the specified location; otherwise, the Visual Basic error Automation error is generated.

Als Nächstes wird durch den Beispielcode Microsoft Excel und das Fenster mit dem angegebenen Arbeitsblatt angezeigt.Next, the example code makes both Microsoft Excel and the window containing the specified worksheet visible. Wenn keine vorherige Version von Microsoft Excel ausgeführt wird, verwendet der Code die Quit-Methode des Application-Objekts, um Microsoft Excel zu schließen.Finally, if there was no previous version of Microsoft Excel running, the code uses the Application object's Quit method to close Microsoft Excel. Wenn die Anwendung bereits ausgeführt wurde, wird kein Versuch unternommen, es zu schließen.If the application was already running, no attempt is made to close it. Der Verweis selbst wird aufgehoben, indem er auf ** Nichts** festgelegt wird.The reference itself is released by setting it to Nothing.

' 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

Siehe auchSee also

Support und FeedbackSupport and feedback

Haben Sie Fragen oder Feedback zu Office VBA oder zu dieser Dokumentation?Have questions or feedback about Office VBA or this documentation? Unter Office VBA-Support und Feedback finden Sie Hilfestellung zu den Möglichkeiten, wie Sie Support erhalten und Feedback abgeben können.Please see Office VBA support and feedback for guidance about the ways you can receive support and provide feedback.