Share via


GetObject 函式 (Visual Basic)

更新:2007 年 11 月

傳回 COM 元件所提供物件的參考。

Public Function GetObject( _
    Optional ByVal PathName As String = Nothing, _
    Optional ByVal [Class] As String = Nothing _
) As Object

參數

參數

描述

PathName

選擇項。String。包含要擷取之物件的檔案完整路徑和名稱。如果省略 PathName 或者它是長度為零的字串 (""),就需要 Class。

Class

如果未提供 PathName,則為必要項。String。代表物件類別的字串。Class 引數具有下列語法和組成部分:

appname.objecttype

參數

描述

appname

必要項。String。提供物件的應用程式名稱。

objecttype

必要項。String。要建立物件的型別或類別。

例外狀況

例外狀況類型

錯誤代碼

條件

Exception

429

指定類別型別的物件不存在。

FileNotFoundException

432

具有指定路徑和檔名的物件不存在。

如果將使用非結構化錯誤處理的 Visual Basic 6.0 應用程式升級,請參閱「錯誤代碼」資料行 (您可以將錯誤代碼與 Number 屬性 (Err 物件) 比對)。但是,請盡可能考慮以 Visual Basic 的結構化例外處理概觀 取代這類錯誤控制項。

備註

使用 GetObject 函式,從檔案中載入 COM 元件的執行個體。下列範例將說明這點:

Dim CADObject As Object
CADObject = GetObject("C:\CAD\schema.cad")

在執行此段程式碼時,與指定 PathName 關聯的應用程式就會啟動,在指定檔案中的物件也會啟動。

預設情況

如果 PathName 是長度為零的字串 (""),GetObject 會傳回指定類別型別的新物件執行個體。如果省略 PathName 引數,則 GetObject 會傳回 Class 所指定之類別型別的目前作用中物件。如果所指定型別的物件不存在,將會發生錯誤。

存取子物件

某些應用程式可讓您啟動與檔案關聯的子物件。若要這麼做,請在檔名後面加上驚嘆號 (!),並在其後加上可識別所要啟動檔案部分的字串。如需如何建立此一字串的資訊,請參閱建立該物件之應用程式的文件。

例如,繪圖應用程式中,檔案中儲存的圖形可能含有許多層。您可以使用下列程式碼來啟動繪圖中稱為 schema.cad 的圖層。

layerObject = GetObject("C:\CAD\schema.cad!Layer3")

指定類別

如果未指定物件的 Class,Automation 會根據您所提供的檔案名稱來決定要啟動的應用程式以及要啟用的物件。不過,某些檔案可以支援一種以上的物件類別。例如,繪圖可能會支援三個不同的物件型別:Application 物件、Drawing 物件和 Toolbar 物件,它們都是相同檔案的一部分。若要指定檔案中要啟動的物件,請使用選擇性的 Class 引數。下列範例將說明這點:

Dim drawObj As Object
drawObj = GetObject("C:\Drawings\sample.drw", "Figment.Drawing")

在前述範例中,Figment 是繪圖應用程式的名稱,而 Drawing 是其支援的一種物件型別。

使用物件

物件一旦啟動後,您就可以使用您所宣告的物件變數,在程式碼中進行參考。在上述範例中,您會使用物件變數 drawObj,存取新物件的屬性和方法。下列範例將說明這點:

drawObj.Line(9, 90)
drawObj.InsertText(9, 100, "Hello, world.")
drawObj.SaveAs("C:\Drawings\sample.drw")
注意事項:

當物件目前有執行個體,或您想用載入的檔案來建立物件時,可使用 GetObject 函式。如果目前沒有執行個體,而您也不想使用載入的檔案來啟動物件,請使用 CreateObject 函式 (Visual Basic)

如果物件已將本身註冊為 ActiveX 單一執行個體物件,則無論呼叫 CreateObject 幾次,該物件也只能建立一個執行個體。對於單一執行個體的物件,使用長度為零的字串 ("") 語法呼叫 GetObject 時,一律會傳回相同的執行個體,如果省略 PathName 引數,則會造成錯誤。您無法使用 GetObject 來取得 Visual Basic 所建立類別的參考。

安全性注意事項:

GetObject 函式需要 Unmanaged 程式碼的使用權限,而該權限在部分信任的情況下,可能會影響其執行。如需詳細資訊,請參閱 SecurityPermission程式碼存取使用權限

物件使用完畢之後,請將該物件的所有參考設定為 Nothing,讓執行階段可以處置掉該 COM 元件。

範例

下列範例使用 GetObject 函式判斷 Excel 是否正在執行中。

' Test to see if a copy of Excel is already running.
Private Sub testExcelRunning()
    On Error Resume Next
    ' GetObject called without the first argument returns a
    ' reference to an instance of the application. If the
    ' application is not already running, an error occurs.
    Dim excelObj As Object = GetObject(, "Excel.Application")
    If Err.Number = 0 Then
        MsgBox("Excel is running")
    Else
        MsgBox("Excel is not running")
    End If
    Err.Clear()
    excelObj = Nothing
End Sub

下列範例會使用 GetObject 函式,取得特定 Microsoft Excel 工作表 (excelObj) 的參考。呼叫 GetObject 會傳回參考,指到指定之檔案 test.xls 所代表的工作表。接下來,此程式碼範例會同時顯示 Excel 和包含指定之工作表的視窗。

這個範例需要 Option Strict Off,原因在於它使用晚期繫結,而其中物件會指派給型別為 Object 的變數。如果您將專案參考加入至 Excel 型別程式庫中,則您可以指定 Option Strict On 並宣告指定之物件型別的物件。若要執行此作業,請在 Visual Studio 的 [專案] 功能表中開啟 [加入參考] 對話方塊,然後在 [COM] 索引標籤上選取 Excel 型別程式庫。

' Add Option Strict Off to the top of your program.
Option Strict Off
Private Sub getExcel()
    Dim fileName As String = "c:\vb\test.xls"

    If Not My.Computer.FileSystem.FileExists(fileName) Then
        MsgBox(fileName & " does not exist")
        Exit Sub
    End If

    ' Set the object variable to refer to the file you want to use.
    Dim excelObj As Object = GetObject(fileName)
    ' Show Excel through its Application property. 
    excelObj.Application.Visible = True
    ' Show the window containing the file.
    Dim winCount As Integer = excelObj.Parent.Windows.Count()
    excelObj.Parent.Windows(winCount).Visible = True

    ' Insert additional code to manipulate the test.xls file here.
    ' ...

    excelObj = Nothing
End Sub

智慧型裝置開發人員注意事項

不支援這個函式。

需求

命名空間︰Microsoft.VisualBasic

**模組︰**Interaction

組件:Visual Basic Runtime Library (在 Microsoft.VisualBasic.dll 中)

請參閱

參考

CreateObject 函式 (Visual Basic)

Declare 陳述式

Option Strict 陳述式

Exception

FileNotFoundException