Interaction.CreateObject(String, String) 方法

定義

建立並傳回 COM 物件的參考; 除非類別已明確公開為 COM 元件,否則 CreateObject 無法用來在 Visual Basic 中建立類別的執行個體。

public static object CreateObject (string ProgId, string? ServerName = "");
[System.Runtime.Versioning.SupportedOSPlatform("windows")]
public static object CreateObject (string ProgId, string? ServerName = "");
public static object CreateObject (string ProgId, string ServerName = "");
static member CreateObject : string * string -> obj
[<System.Runtime.Versioning.SupportedOSPlatform("windows")>]
static member CreateObject : string * string -> obj
Public Function CreateObject (ProgId As String, Optional ServerName As String = "") As Object

參數

ProgId
String

必要。 String. 要建立之物件的程式 ID。

ServerName
String

選擇性。 String. 將建立物件的網路伺服器名稱。 如果 ServerName 為空字串 (""),則會使用本機電腦。

傳回

建立並傳回 COM 物件的參考; 除非類別已明確公開為 COM 元件,否則 CreateObject 無法用來在 Visual Basic 中建立類別的執行個體。

屬性

例外狀況

伺服器無法使用。

指定的型別物件不存在。

範例

下列範例會 CreateObject 使用 函式建立 Microsoft Excel 工作表,並將工作表儲存至檔案。 若要使用此範例,Excel 必須安裝在執行此程序的計算機。 此外,您必須從 [專案] 功能表上 [加入參考] 對話方塊的 [COM] 索引標籤,將參考新增至類型庫。 類型連結庫的名稱會根據計算機上安裝的 Excel 版本而有所不同。 例如,Microsoft Excel 2002 的類型庫名為 Microsoft Excel 10.0 物件庫

Sub TestExcel()
    Dim xlApp As Microsoft.Office.Interop.Excel.Application
    Dim xlBook As Microsoft.Office.Interop.Excel.Workbook
    Dim xlSheet As Microsoft.Office.Interop.Excel.Worksheet

    xlApp = CType(CreateObject("Excel.Application"), 
                Microsoft.Office.Interop.Excel.Application)
    xlBook = CType(xlApp.Workbooks.Add, 
                Microsoft.Office.Interop.Excel.Workbook)
    xlSheet = CType(xlBook.Worksheets(1), 
                Microsoft.Office.Interop.Excel.Worksheet)

    ' The following statement puts text in the second row of the sheet.
    xlSheet.Cells(2, 2) = "This is column B row 2"
    ' The following statement shows the sheet.
    xlSheet.Application.Visible = True
    ' The following statement saves the sheet to the C:\Test.xls directory.
    xlSheet.SaveAs("C:\Test.xls")
    ' Optionally, you can call xlApp.Quit to close the workbook.
End Sub

備註

若要建立 COM 元件的實體,請將 所 CreateObject 傳回的物件指派給物件變數:

Sub CreateADODB()  
   Dim adoApp As Object  
   adoApp = CreateObject("ADODB.Connection")  
End Sub  

您用來儲存傳回物件的物件變數類型可能會影響應用程式的效能。 使用 As Object 子句宣告物件變數會建立可包含任何物件類型參考的變數。 不過,透過該變數存取物件是 晚期綁定的,也就是說,系結會在程序執行時發生。 您應該避免晚期綁定的原因有很多,包括較慢的應用程式效能。

您可以建立會導致早期系結的物件變數,也就是編譯程式時系結。 若要這樣做,請從 [專案] 功能表上 [加入參考] 對話方塊的 [COM] 索引卷標,將對象的參考新增至物件的類型庫。 然後宣告物件特定類型的物件變數。 在大部分情況下,使用 Dim 語句和主要 Interop 元件來建立物件比使用 CreateObject 函式更有效率。

與 Unmanaged 程式代碼互動

另一個問題是 COM 物件使用 Unmanaged 程式代碼 - 沒有 Common Language Runtime 優點的程式代碼。 從 COM 混合 Visual Basic 的 Managed 程式代碼與 Unmanaged 程式代碼時,有相當程度的複雜度。 當您新增 COM 對象的參考時,Visual Basic 會搜尋該連結庫的主要 Interop 元件 (PIA) ;如果找到一個,則會使用它。 如果找不到 PIA,則會建立互操作性元件,其中包含 COM 連結庫中每個類別的本機互操作性類別。 如需詳細資訊,請參閱 .NET Framework 應用程式中的 COM 互操作性

您應該盡可能使用強式系結物件和主要 Interop 元件。 下列範例僅針對示範目的,使用 CreateObject 函式搭配 Microsoft Office 物件。 不過,當搭配適當的主要 Interop 元件使用時,這些物件更容易使用且更可靠。

在遠端電腦上建立物件

您可以在遠端網路電腦上建立 物件,方法是將計算機的名稱傳遞至 ServerNameCreateObject 式的 自變數。 該名稱與共用名稱的機器名稱部分相同:針對名為 “\\MyServer\Public” 的 ServerName 共用,則為 “MyServer”。

注意

如需在遠端網路計算機上存取應用程式的其他資訊,請參閱 COM 檔案 (請參閱 Microsoft Developer Network) 。 您可能需要為應用程式新增登錄機碼。

下列程式代碼會傳回在名為 MyServer的遠端電腦上執行的 Excel 實例版本號碼:

Sub CreateRemoteExcelObj()  
    Dim xlApp As Object  
    ' Replace string "\\MyServer" with name of the remote computer.  
    xlApp = CreateObject("Excel.Application", "\\MyServer")  
    MsgBox(xlApp.Version)  
End Sub  

如果遠端伺服器名稱不正確,或無法使用,就會發生運行時錯誤。

注意

當物件目前沒有實例時,請使用 CreateObject 。 如果對象的實例已在執行中,則會啟動新的實例,並建立指定型別的物件。 若要使用目前的實例,或啟動應用程式並載入檔案,請使用函式 GetObject 。 如果物件已將本身註冊為單一實例物件,則不論執行多少次 CreateObject ,只會建立一個對象的實例。

建立 Framework 物件

您只能使用 函 CreateObject 式來建立 COM 物件。 雖然沒有建立 .NET Framework 對象的確切對等機制,但 Activator 命名空間中的 System 會包含建立本機或遠端物件的方法。 特別是,方法 CreateInstanceCreateInstanceFrom 方法可能很有用。

重要

CreateObject 式需要 Unmanaged 程式代碼許可權,這可能會在部分信任的情況下影響其執行。 如需詳細資訊,請參閱 SecurityPermission程式碼存取權限

適用於

另請參閱