在声明对象变量之后,必须给变量赋值对象引用,才能使用对象的属性、方法及事件。可以用几种方法赋值一个新的对象引用:
如果 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 语句”。
不管 ActiveX 是否提供一个类型库,可以在 Set 语句中使用 CreateObject 函数创建一个新对象,并将对象引用赋予一个对象变量。必须规定对象的编程标识符作为函数的参数,而且想要访问的对象必须是外部可创建的。
要用 CreateObject 赋值对象引用,请
Set objectvariable = CreateObject ("progID")
通常,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 函数也能用于赋值对一个新对象的引用,但是它一般还是用于赋值对已经存在的对象的引用。
使用下列语法,赋值对现存的对象的引用。
Set objectvariable = GetObject([pathname] [, progID])
pathname 参数可能是一个现存文件的路径、一个空字符串,也可以完全省略。如果被省略,则要求 progID。指定一个现存文件的路径,将引起 GetObject 使用存于文件中的信息创建一个对象。如第一个参数为空字符串,则 GetObject 的作用与 CreateObject 一样,将创建编程标识符是 progID 的类的一个新对象。下列表格描述了使用 GetObject 的结果。
如果 ActiveX 部件正在运行 | 结果 |
|
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 函数”。