Interaction.CreateObject 方法
建立並傳回 COM 物件的參考;除非類別已明確公開為 COM 元件,否則 CreateObject 無法用來在 Visual Basic 中建立類別的執行個體。
命名空間: Microsoft.VisualBasic
組件: Microsoft.VisualBasic (在 microsoft.visualbasic.dll 中)
語法
'宣告
Public Shared Function CreateObject ( _
ProgId As String, _
<OptionalAttribute> Optional ServerName As String = "" _
) As Object
'用途
Dim ProgId As String
Dim ServerName As String
Dim returnValue As Object
returnValue = Interaction.CreateObject(ProgId, ServerName)
public static Object CreateObject (
string ProgId,
[OptionalAttribute] string ServerName
)
public:
static Object^ CreateObject (
String^ ProgId,
[OptionalAttribute] String^ ServerName
)
public static Object CreateObject (
String ProgId,
/** @attribute OptionalAttribute() */ String ServerName
)
public static function CreateObject (
ProgId : String,
ServerName : String
) : Object
參數
- ProgId
必要項。String。要建立物件的程式 ID。
- ServerName
選擇項。String。將建立物件的網路伺服器名稱。如果 ServerName 為空字串 (""),則會使用本機電腦。
傳回值
建立並傳回 COM 物件的參考;除非類別已明確公開為 COM 元件,否則 CreateObject 無法用來在 Visual Basic 中建立類別的執行個體。
備註
如需詳細資訊,請參閱 Visual Basic 的主題 CreateObject 函式 (Visual Basic)。
若要建立 COM 元件的執行個體,請將 CreateObject 傳回的物件指派給物件變數:
Sub CreateADODB()
Dim adoApp As Object
adoApp = CreateObject("ADODB.Connection")
End Sub
您用來儲存傳回的物件之物件變數型別可能會影響應用程式的效能。以 As Object 子句宣告物件變數會建立變數,此變數中可以包含任何物件型別的參考。但是,透過該變數進行的物件存取為「晚期繫結」(Late-Bound),也就是在程式執行時發生的繫結。應該避免使用晚期繫結的原因有很多個,其中一個原因是會降低應用程式效能。
您可以建立會產生早期繫結的物件變數,也就是在編譯程式時發生的繫結。如果要這麼做,請在 [專案] 功能表之 [加入參考] 對話方塊的 [COM] 索引標籤中,加入物件的型別程式庫參考。然後宣告您物件的特定型別之物件變數。在大多數的情況下,使用 Dim 陳述式及主要 Interop 組件來建立物件要比使用 CreateObject 函式更有效率。
與 Unmanaged 程式碼互動
另一個問題是 COM 物件會使用 Unmanaged 程式碼,也就是沒有 Common Language Runtime 優點的程式碼。將 Visual Basic 的 Managed 程式碼與 COM 的 Unmanaged 程式碼混和使用時,會牽涉到相當程度的複雜性。當您加入 COM 物件的參考時,Visual Basic 會搜尋該程式庫的主要 Interop 組件 (PIA);如果有找到這個組件,則會使用它。如果沒有找到 PIA,則它會建立互通性 (Interoperability) 組件,其中包含 COM 程式庫中每一個類別的區域互通性類別。如需詳細資訊,請參閱 .NET Framework 應用程式中的 COM 互通性。
您通常應該盡可能使用強繫結物件和主要 Interop 組件。底下的範例將 CreateObject 函式與 Microsoft Office 物件一起搭配使用,以當做示範。但是,當這些物件與適當的主要 Interop 組件一起搭配時,其使用上會更輕鬆,且可靠性會更好。
在遠端電腦上建立物件
您可以將已連接網路的遠端電腦名稱傳遞給 CreateObject 函式的 ServerName 引數,以在該電腦上建立物件。該名稱與共用名稱的機器名稱部分相同:如果共用的名稱為 "\\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 執行多少次,都只會建立一個物件執行個體。 |
建立架構物件
CreateObject 函式只能用來建立 COM 物件。雖然並沒有完全相同的機制可以建立 .NET Framework 物件,System 命名空間中的 Activator 還是有包含一些方法可以建立區域或遠端物件。CreateInstance 方法或 CreateInstanceFrom 方法可能會特別有用。
安全性注意事項 |
---|
CreateObject 函式需要 Unmanaged 程式碼的使用權限,而該權限在部分信任的情況下,可能會影響其執行。如需詳細資訊,請參閱 SecurityPermission 和 程式碼存取使用權限。 |
範例
下列範例會使用 CreateObject 函式來建立 Microsoft Excel 工作表,並將工作表儲存到檔案中。若要使用這個範例,Excel 必須安裝在執行這個程式的電腦上。此外,也必須從 [專案] 功能表上 [加入參考] 對話方塊的 [COM] 索引標籤中,加入型別程式庫的參考。型別程式庫的名稱需視安裝在電腦上的 Excel 版本而定。例如,Microsoft Excel 2002 的型別程式庫名稱是 [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
平台
Windows 98、 Windows 2000 SP4、 Windows CE、 Windows Millennium Edition、 Windows Mobile for Pocket PC、 Windows Mobile for Smartphone、 Windows Server 2003、 Windows XP Media Center Edition、 Windows XP Professional x64 Edition、 Windows XP SP2、 Windows XP Starter Edition
.NET Framework 並不支援各種平台的所有版本。如需支援平台版本的相關資訊,請參閱系統需求一節的內容。
版本資訊
.NET Framework
支援版本:2.0、1.1、1.0
請參閱
參考
Interaction 類別
Interaction 成員
Microsoft.VisualBasic 命名空間
Exception
FileNotFoundException
Activator
CreateInstance
CreateInstanceFrom
其他資源
CreateObject 函式 (Visual Basic)
GetObject 函式 (Visual Basic)
Dim 陳述式 (Visual Basic)
Declare 陳述式
.NET Framework 應用程式中的 COM 互通性
與 Unmanaged 程式碼互通