共用方式為


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

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

在遠端電腦上建立物件

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

注意

請參閱 COM 檔案 (請參閱 Microsoft 開發人員網路) ,以取得讓遠端網路電腦上可存取應用程式的其他資訊。 您可能需要為應用程式新增登錄機碼。

下列程式代碼會傳回在名為 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 包含建立本機或遠端物件的方法。 特別是, CreateInstance 方法或 CreateInstanceFrom 方法可能很有用。

重要

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

適用於

另請參閱