Interaction.CreateObject(String, String) 方法
定義
重要
部分資訊涉及發行前產品,在發行之前可能會有大幅修改。 Microsoft 對此處提供的資訊,不做任何明確或隱含的瑕疵擔保。
建立並傳回 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 與程式碼存取權限。