Poznámka: Funkce, metoda, objekt nebo vlastnost popsaná v tomto tématu jsou zakázány, pokud je služba Microsoft Jet Expression Service spuštěna v režimu sandboxu, což brání vyhodnocení potenciálně nebezpečných výrazů. Další informace o režimu sandboxu najdete v nápovědě pro "režim sandboxu".
Vrátí odkaz na objekt poskytnutý komponentou ActiveX.
Syntaxe
GetObject([název_cesty ] [; třída ] )
Syntaxe funkce GetObject má tyto argumenty:
Argument |
Popis |
---|---|
Cesta |
Nepovinný argument. Varianta (řetězec). Úplná cesta a název souboru obsahujícího objekt, který se má načíst. Pokud je název _cesty vynechán, je požadována třída . |
třída |
Nepovinný argument. Varianta (řetězec). Řetězec představující Třída objektu. |
TřídaArgument používá syntaxi appname.objecttype a má tyto části:
Část |
Popis |
---|---|
Appname |
Povinný argument. Varianta (řetězec). Název aplikace poskytující objekt. |
Objecttype |
Povinný argument. Varianta (řetězec). Typ nebo třída objektu, který chcete vytvořit. |
Poznámky
Poznámka: Následující příklady ukazují použití této funkce v modulu VBA (Visual Basic pro Applications). Pokud chcete další informace o práci s modulem VBA, vyberte Referenční informace pro vývojáře, které najdete v rozevíracím seznamu vedle položky Hledat a do vyhledávacího pole napište požadované pojmy.
Funkce GetObject slouží k přístupu k objektu ActiveX ze souboru a přiřazení objektu k Objektová proměnná. Pomocí příkazu Set přiřaďte objekt vrácený objektem GetObject k proměnné objektu. Příklady:
Dim CADObject As Object
Set CADObject = GetObject("C:\CAD\SCHEMA.CAD")
Po spuštění tohoto kódu se spustí aplikace přidružená k zadanému názvu cesty a objekt v zadaném souboru se aktivuje.
Pokud pathname je řetězec nulové délky (""), GetObject vrátí novou instanci objektu zadaného typu. Pokud je argument pathname vynechán, getObject vrátí aktuálně aktivní objekt zadaného typu. Pokud neexistuje žádný objekt zadaného typu, dojde k chybě.
Některé aplikace umožňují aktivovat část souboru. Na konec názvu souboru přidejte vykřičník (!) a za ním řetězec, který identifikuje část souboru, kterou chcete aktivovat. Informace o tom, jak vytvořit tento řetězec, najdete v dokumentaci k aplikaci, která objekt vytvořila.
Například v aplikaci výkresu můžete mít více vrstev výkresu uloženého v souboru. K aktivaci vrstvy ve výkresu s názvem SCHEMA.CADmůžete použít následující kód:
Set LayerObject = GetObject("C:\CAD\SCHEMA.CAD!Layer3")
Pokud třídu objektu nezadáte , služba Automation určí aplikaci, která se má spustit, a objekt, který se má aktivovat, na základě zadaného názvu souboru. Některé soubory však můžou podporovat více než jednu třídu objektu. Výkres může například podporovat tři různé typy objektů: objekt aplikace , objekt Kreslení a objekt panelu nástrojů , které jsou součástí stejného souboru. Pokud chcete určit, který objekt v souboru chcete aktivovat, použijte volitelný argument třídy . Příklady:
Dim MyObject As Object
Set MyObject = GetObject("C:\DRAWINGS\SAMPLE.DRW", _
"FIGMENT.DRAWING")
V příkladu je FIGMENT název aplikace výkresu a DRAWING je jedním z typů objektů, které podporuje.
Jakmile je objekt aktivován, odkazujete na něj v kódu pomocí proměnné objektu, kterou jste definovali. V předchozím příkladu přistupujete k vlastnostem a metodám nového objektu pomocí proměnné objektu MyObject. Příklady:
MyObject.Line 9, 90
MyObject.InsertText 9, 100, "Hello, world."
MyObject.SaveAs "C:\DRAWINGS\SAMPLE.DRW"
Poznámka: Funkci GetObject použijte, pokud existuje aktuální instance objektu nebo pokud chcete vytvořit objekt s již načteným souborem. Pokud neexistuje žádná aktuální instance a nechcete, aby se objekt spustil se souborem, použijte funkci CreateObject .
Pokud se objekt zaregistroval jako objekt s jednou instancí, vytvoří se pouze jedna instance objektu bez ohledu na to, kolikrát je objekt CreateObject proveden. U objektu s jednou instancí getObject vždy vrátí stejnou instanci při volání se syntaxí řetězce nulové délky ("") a způsobí chybu, pokud je argument pathname vynechán. GetObject nelze použít k získání odkazu na třídu vytvořenou pomocí jazyka Visual Basic.
Příklad
Tento příklad používá funkci GetObject k získání odkazu na konkrétní excelový list (MyXL). Používá vlastnost Aplikace listu k tomu, aby byl Excel viditelný, zavřel a tak dále. Pomocí dvou volání rozhraní API vyhledá procedura DetectExcel Sub excel, a pokud je spuštěná, zadá ji do tabulky běžících objektů. První volání GetObject způsobí chybu, pokud microsoft excel ještě není spuštěný. V příkladu tato chyba způsobí, že příznak ExcelWasNotRunning bude nastaven na Hodnotu True. Druhé volání GetObject určuje soubor, který se má otevřít. Pokud excel ještě není spuštěný, spustí ho druhé volání a vrátí odkaz na list reprezentovaný zadaným souborem mytest.xls. Soubor musí existovat v zadaném umístění; v opačném případě se vygeneruje chyba automatizace jazyka Visual Basic. V dalším příkladu kódu se zobrazí Excel i okno obsahující zadaný list. A konečně, pokud nebyla spuštěna žádná předchozí verze Aplikace Excel, kód použije Qui t metodu Quitobjektu Aplikace k zavření Aplikace Excel. Pokud už byla aplikace spuštěná, nedojde k žádnému pokusu o zavření. Samotný odkaz se uvolní tak, že ho nastavíte na 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