GetObject 函數

重要:  本文係由機器翻譯而成,請參閱免責聲明。本文的英文版本請見這裡,以供參考。

附註: 如果在沙箱模式中,可避免可能不安全的運算式的評估執行的 Microsoft Jet 運算式服務,就會停用函數、 方法、 物件或在本主題中所述的屬性。如需有關沙箱模式的詳細資訊,搜尋 「 沙箱模式 」 的說明。

傳回由 ActiveX 元件物件的參照。

語法

GetObject ([路徑] [、 類別] )

GetObject函數語法具有下列引數︰

引數

描述

路徑

選用。variant(字串)。完整路徑和檔案包含要擷取之物件的名稱。如果省略路徑類別是必要。

類別

選用。variant(字串)。代表類別物件的字串。


課程 引數使用語法應用程式名稱.save並包含下列部分︰

部分

描述

應用程式名稱

所需。variant(字串)。提供物件的應用程式的名稱。

save

所需。variant(字串)。類型或類別物件的建立。


註解

附註: 下列範例示範如何在 Visual Basic for Applications (VBA) 模組中使用此函數。 如需使用 VBA 的詳細資訊,請在 [搜尋] 旁的下拉式清單中選取 [開發人員參考],並在 [搜尋] 方塊中輸入一個或多個字詞。

若要從檔案中存取 ActiveX 物件並指定物件變數物件,請使用GetObject函數。使用設定陳述式指定GetObject傳回物件變數的物件。例如︰

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

執行這個程式碼時,啟動與指定的路徑相關應用程式,然後指定檔案中的物件就會啟動。

路徑名稱 是否為零長度字串 (""), GetObject會傳回指定類型的新物件執行個體。如果省略路徑名稱引數,則GetObject就會傳回目前使用中的指定類型的物件。如果指定類型的物件不存在,會發生錯誤。

部分應用程式可讓您啟動檔案的一部分。移至檔案名稱結尾新增驚嘆號 () 並識別您想要啟動的檔案的組件的字串。如需如何建立此字串的資訊,請參閱建立物件的應用程式的文件。

例如,在繪圖的應用程式中,您可能必須的繪圖儲存在檔案中的多個圖層。若要啟動稱為SCHEMA.CAD繪圖中的圖層,您可以使用下列程式碼︰

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

如果您不指定物件的類別,自動化會決定要啟動應用程式的物件,若要啟動,根據您所提供的檔案名稱。不過,某些檔案,可能會支援物件的多個的類別。例如,繪圖可能支援三種不同類型的物件︰應用程式物件、繪圖物件] 和工具列物件都是相同檔案的一部分。若要指定您想要啟動檔案中的物件,請使用選擇性課程引數。例如︰

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

在範例中, FIGMENT會是繪圖的應用程式和DRAWING名稱為其中一個支援的物件類型。

一旦啟動物件,您會參考它在程式碼中使用您所定義的物件變數。在上述範例中,您使用物件變數MyObject存取屬性和新物件的方法。例如︰

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

附註: 目前的執行個體的物件時,或是如果您想要建立物件已載入的檔案,請使用GetObject函數。如果沒有目前執行個體,而且您不想啟動載入的檔案物件,請使用CreateObject函數。

如果物件具有註冊本身為單一執行個體物件,物件只有一個執行個體建立,無論CreateObject執行的次數。使用單一執行個體物件時, GetObject一定會傳回相同的執行個體呼叫零長度字串時 (「 」) 語法,並將其會造成錯誤如果省略路徑引數。您無法使用GetObject以取得使用 Visual Basic 建立類別的參考。

範例

此範例使用GetObject函數取得特定Microsoft Office Excel 2007工作表 (MyXL) 的參考。它會使用工作表的應用程式屬性,讓 Excel 顯示時,將其關閉,依此類推。使用兩個 API 呼叫,DetectExcel Sub程序 for Excel,看起來,如果它正在執行,將它輸入 [執行] 物件資料表。如果不正在執行 Microsoft Excel GetObject第一次呼叫會導致錯誤。在此範例中,錯誤會造成 ExcelWasNotRunning 標幟,將它設定為 True。第二個通話GetObject指定要開啟的檔案。如果 Excel 不正在執行,第二個通話會啟動它,並傳回指定的檔案,以表示的工作表的參照 mytest.xls。檔案必須存在指定的位置。否則,會產生 Visual Basic 錯誤自動化錯誤。接下來,Excel 和包含指定的工作表顯示的視窗,可讓您在 [程式碼範例。最後,如果有任何舊版的 Excel 執行,程式碼會使用應用程式物件的結束t方法來關閉 Excel。如果已經在執行應用程式,不會嘗試將其關閉。設定為執行任何動作釋放本身的參考。

' 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

附註: 機器翻譯免責聲明︰本文係以電腦系統翻譯而成,未經人為介入。Microsoft 提供此等機器翻譯旨在協助非英語系使用者輕鬆閱讀 Microsoft 產品、服務及技術相關內容。基於本文乃由機器翻譯而成,因此文中可能出現詞辭、語法、文法上之錯誤。

擴展您的技能
探索訓練
優先取得新功能
加入 Office 測試人員

這項資訊有幫助嗎?

感謝您的意見反應!

感謝您的意見反應! 我們將協助您與其中一位 Office 支援專員連絡以深入了解您的意見。

×