GetObject-Funktion

Wichtig :  Dieser Artikel wurde maschinell übersetzt. Bitte beachten Sie den Haftungsausschluss. Die englische Version des Artikels ist als Referenz hier verfügbar: hier.

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 (Sandbox Mode) ausgeführt wird. In diesem Modus wird die Auswertung von potenziell unsicheren Ausdrücken verhindert. Weitere Informationen zum geschützten Modus erhalten Sie, wenn Sie in der Hilfe nach "sandbox mode" suchen.

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

Syntax

GetObject ([Pfadnamen ] [, Class ] )

Die Syntax der Funktion GetObject weist die folgenden Argumente:

Argument

Beschreibung

pathname

Optional. Ein Wert vom Typ Variant (Zeichenfolge). Der vollständige Pfad und der Name der Datei, die das abzurufende Objekt enthält. class ist erforderlich, wenn pathname nicht angegeben ist.

class

Optional. Ein Wert vom Typ Variant (Zeichenfolge). Eine Zeichenfolge, die die Klasse des Objekts darstellt.


Das Argumentclass verwendet die Syntax appname.objecttype und besteht aus den folgenden Teilen:

Teil

Beschreibung

appname

Erforderlich. Ein Wert vom Typ Variant (String). Der Name der Anwendung, die das Objekt bereitstellt.

objecttype

Erforderlich. Ein Wert vom Typ 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 ein ActiveX-Objekt aus einer Datei aufzurufen und es einer Objektvariable zuzuweisen. Verwenden Sie die Set-Anweisung, um das von GetObject zurückgegebene Objekt der Objektvariablen zuzuweisen. Beispiel:

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

Wenn dieser Code ausgeführt wird, wird die mit dem angegebenen pathname verknüpfte Anwendung gestartet und das Objekt in der angegebenen Datei aktiviert.

Wenn pathname eine leere Zeichenfolge ("") ist, gibt GetObject eine neue Objektinstanz des angegebenen Typs zurück. Wenn das Argument pathname nicht angegeben wird, gibt GetObject ein derzeit aktives Objekt vom angegebenen Typ zurück. Wenn kein Objekt des angegebenen Typs vorhanden ist, tritt ein Fehler auf.

Einige Anwendungen ermöglichen die Aktivierung eines Teils einer Datei. Fügen Sie ein Ausrufezeichen (!) am Ende des Dateinamens hinzu, gefolgt von einer Zeichenfolge, die den Teil der Datei bezeichnet, den Sie aktivieren möchten. Informationen zum Erstellen dieser Zeichenfolge finden Sie in der Dokumentation der Anwendung, von der das Objekt erstellt wurde.

In einer Zeichenanwendung besteht eine in einer Datei gespeicherte Zeichnung z. B. aus mehreren Ebenen. Sie könnten dann den folgenden Code verwenden, um eine Ebene der Zeichnung SCHEMA.CAD zu aktivieren:

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

Wenn Sie keine class für das Objekt angeben, werden die zu startende Anwendung und das zu aktivierende Objekt basierend auf dem von Ihnen angegebenen Dateinamen automatisch festgelegt. Einige Dateien unterstützen jedoch eventuell mehr als eine Objektklasse. Eine Zeichnung kann z. B. drei verschiedene Objekttypen unterstützen: ein Objekt vom Typ Anwendung, vom Typ Zeichnung und vom Typ Symbolleiste, die alle Teil derselben Datei sind. Um festzulegen, welches Objekt einer Datei Sie aktivieren möchten, verwenden Sie das optionale Argument class. Beispiel:

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

FIGMENT ist in diesem Beispiel der Name eines Zeichenprogramms und DRAWING einer der Objekttypen, die es unterstützt.

Sobald ein Objekt aktiviert ist, verweisen Sie darauf über die von Ihnen definierten Objektvariable Code ein. Im vorherigen Beispiel greifen Sie auf Eigenschaften und Methoden des neuen Objekts mithilfe der Variable Objekt MyObject. 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 existiert oder wenn Sie das Objekt mit einer Datei erstellen möchten, die bereits geladen wurde. Verwenden Sie die CreateObject-Funktion, wenn keine aktuelle Instanz vorhanden ist und wenn das Objekt nicht mit einer geladenen Datei gestartet werden soll.

Wenn sich ein Objekt als Einzelinstanzenobjekt registriert hat, wird nur eine Instanz des Objekts erstellt, unabhängig davon, wie häufig CreateObject ausgeführt wird. Wenn GetObject bei einem Einzelinstanzenobjekt mit der Syntax einer leeren Zeichenfolge ("") aufgerufen wird, wird immer dieselbe Instanz ausgegeben. Wenn das Argument pathname nicht angegeben ist, wird ein Fehler verursacht. Um einen Verweis auf eine mit Visual Basic erstellte Klasse zu erhalten, können Sie GetObject nicht verwenden.

Beispiel

In diesem Beispiel wird mit der GetObject -Funktion einen Verweis auf eine bestimmte Microsoft Office Excel 2007 Arbeitsblatt (MyXL) erhalten. Es wird die Anwendung Eigenschaft des Arbeitsblatts Excel angezeigt wird, um es zu schließen und viele andere. Unter Verwendung von zwei API Aufrufen DetectExcel Sub -Prozedur sucht nach Excel, und wenn er ausgeführt wird, gibt es in der Running Object Table. Der erste Anruf an GetObject führt zu einem Fehler, wenn Microsoft Excel noch nicht ausgeführt wird. Im Beispiel führt der Fehler die Kennzeichnung ExcelWasNotRunning true festgelegt werden. Der zweite Anruf an GetObject gibt eine zu öffnende Datei an. Wenn Excel nicht bereits ausgeführt wird, der zweite Anruf gestartet, und gibt einen Bezug auf das Arbeitsblatt mit dem Dateinamen, Speicherort. Die Datei muss in der angegebenen Position vorhanden sein; Andernfalls wird der Visual Basic-Fehler Fehler Automatisierung generiert. Anschließend werden mit der folgenden Code sowohl Excel als auch das Fenster mit dem angegebenen Arbeitsblatt angezeigt. Wenn keine frühere Version von Excel ausgeführt wurde, verwendet den Code schließlich die Anwendung Methode des Objekts Quit , um Excel zu schließen. Wenn die Anwendung bereits ausgeführt wurde, wird kein Versuch unternommen, um es zu schließen. Der Verweis selbst freigegeben auf nichtsfestgelegt 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

Hinweis : Haftungsausschluss für maschinelle Übersetzungen: Dieser Artikel wurde mithilfe eines Computersystems und ohne jegliche Bearbeitung durch Personen übersetzt. Microsoft bietet solche maschinellen Übersetzungen als Hilfestellung für Benutzer ohne Englischkenntnisse an, damit Sie von den Informationen zu Produkten, Diensten und Technologien von Microsoft profitieren können. Da es sich bei diesem Artikel um eine maschinelle Übersetzung handelt, enthält er möglicherweise Fehler in Bezug auf (Fach-)Terminologie, Syntax und/oder Grammatik.

Teilen Facebook Facebook Twitter Twitter E-Mail E-Mail

War diese Information hilfreich?

Sehr gut. Noch anderes Feedback?

Was können wir verbessern?

Vielen Dank für Ihr Feedback!

×