You have multiple accounts
Choose the account you want to sign in with.

附註: 如果 MicrosoftJet 運算式服務是在沙箱模式中執行,則本主題中所述的函數、方法、物件或屬性會停用,這可防止評估可能不安全的運算式。 有關沙箱模式的詳細資訊,在 「協助」中搜尋「沙箱模式」。

傳回 ActiveX 元件提供之物件的參照。

語法

GetObject ( pathname ] [, class ])

GetObject 函數語法具有這些引數:

引數

描述

路徑

選用。 Variant (字串) 。 包含要取取之物件之檔案的完整路徑和名稱。 如果省略 pathname,則必填類別。

類別

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


課程引數使用語法appname。objecttype, 並包含以下各部分:

部分

描述

appname

必要。 Variant (字串) 。 提供物件的應用程式名稱。

objecttype

必要。 Variant (字串) 。 要建立的物件類型或類別。


註解

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

使用 GetObject 函數 從檔案存取 ActiveX 物件,並將物件指派給 物件變數。 使用 Set 語句將 GetObject 所返回的物件指派給物件變數。 例如:

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

執行此程式碼時,會啟動與指定 路徑 名稱相關聯的應用程式,並啟用指定檔案中的物件。

如果 pathname 是零長度字串 ("") ,GetObject 返回指定類型的新物件實例。 如果 省略 pathname 引數 ,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 會一直會返回相同的實例,如果 省略 pathname 引數,則會導致錯誤。 您無法用 GetObject 取得使用 Visual Basic 所建立之班級的參照。

範例

此範例使用 GetObject 函數取得工作表或工作表 Microsoft Office Excel 2007 參照 (MyXL) 。 它會使用工作表的 Application 屬性來顯示 Excel、關閉 Excel 等等。 使用兩個 API 呼叫時,DetectExcel Sub 程式會尋找 Excel,如果 Excel 執行中,則輸入到執行中的物件資料表中。 如果 Microsoft Excel 尚未運作,第一次 撥打 GetObject 會造成錯誤。 在範例中,錯誤會導致 ExcelWasNotRunning 標號設為 True。 第二次 呼叫 GetObject 會指定要開啟的檔案。 如果 Excel 尚未執行,第二個呼叫會啟動,並返回指定檔案所代表的工作表參照,mytest.xls。 檔案必須存在於指定的位置;否則,會產生 Visual Basic 錯誤自動化錯誤。 接下來,範例程式碼會同時顯示 Excel 和包含指定工作表的視窗。 最後,如果沒有執行先前的 Excel 版本,程式碼會使用 Application 物件的 Quit 方法來關閉 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

Need more help?

Expand your skills
Explore Training
Get new features first
Join Microsoft Office Insiders

Was this information helpful?

How satisfied are you with the translation quality?
What affected your experience?

Thank you for your feedback!

×