GetObject
返回对COM/Automation对象的引用——可以是已运行的实例,也可以是绑定到文件的实例。
语法:GetObject( [ pathname ] [ , class ] )
- pathname
- 可选 Variant(String)。包含要检索对象的文件的完整路径和名称。如果省略pathname,则需要class。
- class
- 可选 Variant(String)。要检索的对象的类,格式为appname.objecttype——例如
"Excel.Application"。
要将返回的引用赋给变量,请使用Set:
vb
Dim CADObject As Object
Set CADObject = GetObject("C:\CAD\SCHEMA.CAD")使用pathname调用时,为该文件注册的应用程序被启动(如果尚未运行),并激活文件内的对象。
如果pathname为零长度字符串(""),GetObject返回class指定类型的新实例。如果完全省略pathname,GetObject尝试附加到class指定类型的当前运行中的实例;如果没有这样的实例,则产生运行时错误。
某些应用程序支持激活文件的部分。在文件名后附加!和应用程序特定的标识符——例如CAD绘图的第三层:
vb
Set LayerObject = GetObject("C:\CAD\SCHEMA.CAD!Layer3")当未指定class时,操作系统根据提供的文件名确定要启动的应用程序和要激活的对象。但是,某些文件可能支持不止一种对象类。要明确指定,请提供两个参数:
vb
Dim MyObject As Object
Set MyObject = GetObject("C:\Drawings\Sample.drw", "Figment.Drawing")INFO
GetObject附加到对象的当前实例,或创建已加载文件的对象。当没有当前实例且不应以加载文件的方式启动对象时,CreateObject创建新实例。
对于注册为单实例的对象,使用零长度字符串语法的GetObject始终返回同一实例,省略pathname的形式会导致错误。
示例
本示例使用GetObject从文件附加到Microsoft Excel Worksheet。第一次调用(不带pathname)尝试附加到正在运行的Excel;第二次调用打开文件。如果脚本启动时Excel尚未运行,则在最后通过Application.Quit关闭。
vb
Dim MyXl As Object
Dim ExcelWasNotRunning As Boolean
On Error Resume Next
Set MyXl = GetObject(, "Excel.Application")
If Err.Number <> 0 Then ExcelWasNotRunning = True
Err.Clear
On Error GoTo 0
Set MyXl = GetObject("C:\Reports\MyTest.xls")
MyXl.Application.Visible = True
MyXl.Parent.Windows(1).Visible = True
' ... work with the workbook through MyXl ...
If ExcelWasNotRunning Then MyXl.Application.Quit
Set MyXl = Nothing