CreateObject 函数创建并返回对 COM 对象的引用。CreateObject 不能用于在 Visual Basic 中创建类的实例,除非这些类已显式公开为 COM 对象。 若要创建 COM 组件的实例,请将由 CreateObject 返回的对象赋给一个对象变量:
Sub CreateADODB() Dim adoApp As Object adoApp = CreateObject("ADODB.Connection") End Sub
用于存储返回对象的对象变量的类型可影响应用程序的性能。通过用 As Object 子句声明对象变量所创建的变量可以包含对任何对象类型的引用。然而,通过该变量访问对象是晚期绑定的,即绑定在程序运行时发生。由于包括应用程序性能降低在内的多种原因,应该避免晚期绑定。若要创建导致早期绑定(即在编译程序时绑定)的对象变量,请从“项目”菜单上打开“添加引用”对话框,再打开“COM”选项卡,为您的对象添加对类型库的引用,并声明特定对象类型的对象变量。大多数情况下,使用 Dim 语句和主 Interop 程序集来创建对象比使用 CreateObject 函数更为有效。
另一个问题是 COM 对象使用非托管代码,即没有公共语言运行库优点的代码。在将 Visual Basic .NET 的托管代码与来自 COM 的非托管代码混合时,将涉及到相当程度的复杂性。当添加对 COM 对象的引用时,将搜索该库的主 Interop 程序集;如果找到一个,则使用它。如果没有找到,Visual Basic .NET 将创建一个互操作性程序集,其中包含 COM 库中每个类的局部互操作性类。有关更多信息,请参见 Visual Basic 和 Visual C# 中的 COM 互操作性。通常,您应该尽可能使用强绑定对象和主 Interop 程序集。以下示例仅出于演示的目的将 CreateObject 函数用于 Microsoft Office 对象。但是,当与适当的主 Interop 程序集一起使用时,这些对象将更易于使用,并且更加可靠。
注意 有关使应用程序在联网的远程计算机上可见的附加信息,请参考 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