将对象引用赋予变量

在声明对象变量之后,必须给变量赋值对象引用,才能使用对象的属性、方法及事件。可以用几种方法赋值一个新的对象引用:

用 New 关键字赋值对象引用

如果 ActiveX 部件提供一个类型库,就可以在变量声明或 Set 语句中,用 New 关键字创建一个新对象并将对象引用赋予对象变量。

如果用 New 关键字声明一个对象变量,在第一次使用该变量时,Visual Basic 会自动地创建一个新对象。关于更详细的信息,请参阅“声明对象变量”。

也可以在 Set 语句中,使用 New 关键字赋值对特定类的新对象的引用。例如,下列语句将对于新的 DAO 表对象的引用赋予变量 tdfOrders,将表的 Name 属性设置为 "Orders":

Dim tdfOrders As DAO.TableDef
Set tdfOrders = New DAO.TableDef
tdfOrders.Name = "Orders"

详细信息 请参阅“Dim 语句”或“Set 语句”。

用 CreateObject 赋值对象引用

不管 ActiveX 是否提供一个类型库,可以在 Set 语句中使用 CreateObject 函数创建一个新对象,并将对象引用赋予一个对象变量。必须规定对象的编程标识符作为函数的参数,而且想要访问的对象必须是外部可创建的。

要用 CreateObject 赋值对象引用,请

通常,progID 参数是正在创建对象的完全限定类名,例如 Word.Document。但是,progID 也可以与类名不同。例如,Microsoft Excel 对象的 progID 是 "Sheet" 而不是 "Worksheet"。可以指定可选的 servername 参数来创建一个在跨网络的远程机器上的对象。它占用共享名称的 Machine Name 部分。例如,带有网络共享名称的 \\MyServer\Public,servername 参数将会是 "MyServer"。

下列代码例子启动 Microsort Excel (如果Microsft Excel 尚未运行)并创建变量 xlApp 来引用一个 Application 类的对象。参数 "Excel. Application" 充分限定 Application 为 Microsoft Excel 定义的类:

Dim xlChart As Excel.Chart
Set xlChart = CreateObject("Excel.Chart")

下列代码启动 Microsoft Excel 并创建变量 xlSheet 来引用 Worksheet 类的对象:

Dim xlApp As Excel.Application
Set xlApp = CreateObject("Excel.Application")

详细信息 请参阅“CreateObject 函数”。

用 GetObject 赋值对象引用

虽然 GetObject 函数也能用于赋值对一个新对象的引用,但是它一般还是用于赋值对已经存在的对象的引用。

使用下列语法,赋值对现存的对象的引用。

Set objectvariable = GetObject([pathname] [, progID])

pathname 参数可能是一个现存文件的路径、一个空字符串,也可以完全省略。如果被省略,则要求 progID。指定一个现存文件的路径,将引起 GetObject 使用存于文件中的信息创建一个对象。如第一个参数为空字符串,则 GetObject 的作用与 CreateObject 一样,将创建编程标识符是 progID 的类的一个新对象。下列表格描述了使用 GetObject 的结果。

如果 ActiveX 部件正在运行 结果
Set X = GetObject(, "MySrvr.Application")
X 引用一个现存的 Application 对象。
Set X = GetObject("", "MySrvr.Object") X 引用一个新的,外部可创建的对象。
如果 ActiveX 部件没在运行 结果
Set X = GetObject(, "MySrvr.Object") 返回一个错误
Set X = GetObject("", "MySrvr.Object") ActiveX 部件 (MySrvr) 被启动,X 引用一个新的对象。

例如,变量 wrdApp 引用一个正在运行的 Microsoft Wor Applicatdion:

Dim wdApp As Word.Application
Set wdApp = GetObject("", "Word.Application")

同 CreateObject 一样,参数 "Word.Application" 是一个由 Microsoft word 定义的 Application 类的编程标志符。如果有多个 Microsoft Word 实例在运行,不能预先指出 wdApp 将引用那个实例。

重点 可以用 GetObject 赋值对复合文档文件中的对象引用。一个复合文档文件含有对多个对象类型的引用。例如,一个复合文档文件可以含有电子数据表,文本与位图。

如果电子数据表应用程序还没有运行,下列例子就启动该程序并打开文件 Revenue.xls:

Dim xlBook As Excel.Workbook
Set xlBook = GetObject("C:\Accounts\Revenue.xls")

详细信息 请参阅“GetIObject 函数”。