Interaction.CreateObject(String, String) 方法
定义
重要
一些信息与预发行产品相关,相应产品在发行之前可能会进行重大修改。 对于此处提供的信息,Microsoft 不作任何明示或暗示的担保。
创建并返回对 COM 对象的引用。 不能在 Visual Basic 中使用 CreateObject
创建这些类的实例,除非将类显式公开为 COM 组件。
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 对象的引用。 不能在 Visual Basic 中使用 CreateObject
创建这些类的实例,除非将类显式公开为 COM 组件。
- 属性
例外
服务器不可用。
不存在指定类型的 对象。
示例
以下示例使用 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
语句和主互操作程序集创建对象比使用 CreateObject
函数更高效。
与非托管代码交互
另一个问题是 COM 对象使用非托管代码 - 没有公共语言运行时优势的代码。 将 Visual Basic 的托管代码与 COM 中的非托管代码混合时,存在相当程度的复杂性。 添加对 COM 对象的引用时,Visual Basic 将搜索该库的主互操作程序集 (PIA) ;如果找到一个,则使用它。 如果找不到 PIA,则会创建一个互操作性程序集,其中包含 COM 库中每个类的本地互操作性类。 有关详细信息,请参阅 .NET Framework 应用程序中的 COM 互操作性。
通常应尽可能使用强绑定对象和主互操作程序集。 以下示例将 函数与 Microsoft Office 对象一起使用 CreateObject
,仅用于演示目的。 但是,当这些对象与适当的主互操作程序集一起使用时,这些对象更易于使用且更可靠。
在远程计算机上创建对象
可以通过将计算机的名称传递给 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
,都只创建对象的一个实例。
创建框架对象
只能使用 CreateObject
函数创建 COM 对象。 虽然没有用于创建 .NET Framework 对象的确切等效机制, Activator 但 命名空间中的 System 包含用于创建本地或远程对象的方法。 具体而言, CreateInstance 方法或 CreateInstanceFrom 方法可能很有用。
重要
函数 CreateObject
需要非托管代码权限,这可能会影响它在部分信任情况下的执行。 有关详细信息,请参阅 SecurityPermission 和代码访问权限。