CreateObject是指创建并返回一个对 ActiveX 对象的引用的
函数。
基本介绍
语法
CreateObject(class[,servername])
CreateObject 函数的语法有如下部分:
部分 描述
class 必需的; Variant (String). 要创建的
应用程序名称和类。
servername 可选的; Variant (String). 要在其上创建对象的网络
服务器名称。
class 参数使用 appname.objecttype 这种语法,包括以下部分:
部分 描述
appname 必需的;Variant(字符串)。提供该对象的应用程序名。
objecttype 必需的;Variant(字符串)。待创建对象的类型或类。
说明
每个支持自动化的应用程序都至少提供一种对象类型。例如,一个字处理应用程序可能会提供 Application 对象,Document 对象,以及 Toolbar 对象。
要创建 ActiveX 对象,只需将 CreateObject 返回的对象赋给一个对象变量:
'声明一个对象变量来存放该对象的引用。
'Dim as Object 采用后期绑定方式。
Dim ExcelSheet As Object
上述代码将启动该应用程序创建该对象,在本例中就是创建一个 Microsoft Excel 电子数据表。对象创建后,就可以在代码中使用自定义的对象变量来引用该对象。在下面的示例中,可以使用对象变量 ExcelSheet 来访问新建对象的属性和方法,以及访问 Microsoft Excel 的其它对象,包括应用程序对象和
单元格集合。
'设置 Application 对象使 Excel 可见
ExcelSheet.Application.Visible = True
'在表格的第一个单元中写些文本
'将该表格保存到 C: est.doc 目录
'使用应用程序对象的 Quit 方法关闭 Excel。
ExcelSheet.Application.Quit
'释放该对象变量
Set ExcelSheet = Nothing
使用 As Object 子句声明对象变量,可以创建一个能包含任何类型对象引用的变量。不过,该变量访问对象是后期绑定的,也就是说,绑定在程序运行时才进行。要创建一个使用前期绑定方式的对象变量,也就是说,在
程序编译时就完成绑定,则对象变量在声明时应指定类 ID。例如,可以声明并创建下列 Microsoft Excel 引用:
Dim xlApp As Excel.Application
Dim xlBook As Excel.Workbook
Dim xlSheet As Excel.WorkSheet
Set xlBook = xlApp.Workbooks.Add
Set xlSheet = xlBook.Worksheets(1)
前期绑定的变量引用可以提供更好的性能,但该变量只能存放声明中所指定的类的引用。
可以将 CreateObject 函数返回的对象传给一个参数为对象的函数。例如,下面的代码创建并传递了一个 Excel.Application 对象的引用:
下面的代码返回在一个名为 MyServer 的远端计算机上运行的 Excel 实例的版本号:
Dim xlApp As Object
Debug.Print xlApp.Version
如果远端服务器不存在或者不可用,则会发生一个运行时错误。
注意 当该对象当前没有实例时,应使用 CreateObject。如果该对象已有实例在运行,就会启动一个新的实例,并创建一个指定类型的对象。要使用当前实例,或要启动该应用程序并加载一个文件,可以使用 GetObject 函数。
如果对象已登记为单个实例对象,则不管执行多少次 CreateObject,都只能创建该对象的一个实例。
C#调用方式
C#中类似 CreateObject 的方法就是 System.Activator.CreateInstance. 后续的对象函数的调用可以通过InvokeMember方法来实现。
如在VB中的源代码如下:
Public Sub TestLateBind()
o.SomeMethod(arg1, arg2)
w = o.SomeFunction(arg1, arg2)
w = o.SomeGet
o.SomeSet = w
End Sub
转换成C#的代码如下所示:
public void TestLateBind()
{
object o = System.Activator.CreateInstance(oType);
}
里面有方法,属性的调用设定,很简单。
实际例子如下,调用Office功能的:
public void TestLateBind()
{
Object word = System.Activator.CreateInstance( wordType );
}
这种Activator.CreateInstance方法还可以用来创建实例,并调用某些接口方法。毕竟接口必须要实例才能调用。