Interaction.CreateObject(String, String) 方法
定義
重要
部分資訊涉及發行前產品,在發行之前可能會有大幅修改。 Microsoft 對此處提供的資訊,不做任何明確或隱含的瑕疵擔保。
建立並回傳一個 COM 物件的參考。
CreateObject 無法用來建立 Visual Basic 中的類別實例,除非這些類別被明確暴露為 COM 元件。
public static object CreateObject(string ProgId, string ServerName = "");
static member CreateObject : string * string -> obj
Public Function CreateObject (ProgId As String, Optional ServerName As String = "") As Object
參數
- ProgId
- String
必須的。
String。 要建立物件的程式 ID。
- ServerName
- String
Optional.
String。 物件將被建立的網路伺服器名稱。 若 ServerName 為空字串(“”),則使用本地電腦。
傳回
建立並回傳一個 COM 物件的參考。
CreateObject 無法用來建立 Visual Basic 中的類別實例,除非這些類別被明確暴露為 COM 元件。
例外狀況
伺服器無法使用。
不存在指定類型的物件。
範例
以下範例使用 CreateObject 函式建立 Microsoft Excel 工作表,並將工作表儲存為檔案。 使用此範例時,必須在執行該程式的電腦上安裝 Excel。 此外,你必須從Project選單中Add Reference的 COM 標籤中新增對型別庫的參考。 型別函式庫的名稱會依你電腦上安裝的 Excel 版本而有所不同。 例如,2002 Microsoft Excel型態庫名為 Microsoft Excel 10.0 Object Library。
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 句宣告物件變數會產生一個可包含任意類型物件參考的變數。 然而,透過該變數存取物件是 延遲綁定的,也就是綁定發生在程式執行時。 有許多原因應該避免延遲綁定,包括應用程式效能較慢。
你可以建立一個物件變數,導致早期綁定——也就是程式編譯時綁定。 要做到這點,請從Dim 語句和主要互操作組合來建立物件,比使用 CreateObject 函式更有效率。
與非管理程式碼互動
另一個問題是 COM 物件使用非管理程式碼——也就是沒有通用語言執行環境的程式碼。 將 Visual Basic 的託管程式碼與 COM 的非託管程式碼混合使用,涉及相當程度的複雜度。 當你新增 COM 物件的參考時,Visual Basic 會搜尋該函式庫的主要互操作組件(PIA);如果找到,就會使用它。 如果找不到 PIA,則會建立一個互通性組合,包含 COM 函式庫中每個類別的本地互通性類別。 如需詳細資訊,請參閱 .NET Framework 應用程式中的 COM 互作性。
你通常應該盡可能使用強綁定物件和主要互操作組件。 以下範例僅用於示範目的,使用 CreateObject 函數搭配 Microsoft Office 物件。 然而,當這些物件搭配適當的主要互操作組件時,使用起來更簡單且更可靠。
在遠端電腦上建立物件
你可以透過將電腦名稱傳給 ServerName 函式的 CreateObject 參數,在遠端網路電腦上建立物件。 這個名稱和分享名稱中的機器名稱部分相同:對於名為「\\MyServer\Public」的 ServerName 分享,則是「MyServer」。
備註
請參閱 COM 文件(參見 Microsoft Developer Network)以獲得如何在遠端網路電腦上讓應用程式可存取的更多資訊。 你可能需要為申請新增登錄檔金鑰。
以下程式碼會回傳一個在遠端電腦上執行的 Excel 版本號,該電腦名為 MyServer:
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 次,該物件只會建立一個實例。
建立框架物件
你只能用這個 CreateObject 函式來建立 COM 物件。 雖然沒有完全等效的機制來建立 .NET Framework 物件,但 System 命名空間中的 Activator 包含建立本地或遠端物件的方法。 特別是,該 CreateInstance 方法或該 CreateInstanceFrom 方法可能非常有用。
Important
該 CreateObject 函式需要非管理程式碼權限,這可能會影響部分信任情況下的執行。 欲了解更多資訊,請參閱SecurityPermission及代碼存取權限。
適用於
另請參閱
- GetObject(String, String)
- Exception
- FileNotFoundException
- Activator
- CreateInstance
- CreateInstanceFrom
- Dim 陳述(Visual Basic)
- Declare 陳述
- .NET Framework 應用程式中的 COM 互通性
- 與非受控程式碼互操作