GetObject 函数

重要:  本文是由机器翻译的,请参阅免责声明。请在 此处 中查找本文的英文版本以便参考。

注意: 如果 Microsoft Jet 表达式服务运行在沙盒模式下,可防止潜在不安全的表达式的求值,则禁用函数、 方法、 对象或本主题中介绍的属性。沙盒模式的详细信息,"沙盒模式"中搜索帮助。

返回由 ActiveX 组件提供对象的引用。

语法

GetObject ([路径名] [、 类] )

GetObject函数语法具有以下参数︰

参数

说明

路径名

可选。变体(字符串)。完整路径和文件包含要检索的对象的名称。如果省略,是必需的。

可选。变体(字符串)。表示该对象类的字符串。


参数使用语法应用程序名.对象类型,包含以下部分︰

部分

说明

应用程序名

必填。变体(字符串)。提供该对象的应用程序名称。

对象类型

必填。变体(字符串)。若要创建的类型或类的对象。


注解

注意: 下面的示例说明使用此函数在 Visual Basic for Applications (VBA) 模块。有关处理 VBA 的详细信息,搜索旁边的下拉列表中选择开发人员参考,然后在搜索框中输入一个或多个术语。

GetObject函数用于从文件访问 ActiveX 对象和为对象变量分配的对象。使用设置语句分配到的对象变量GetObject返回的对象。例如︰

Dim CADObject As Object
Set CADObject = GetObject("C:\CAD\SCHEMA.CAD")

执行此代码时,与指定的路径名相关联的应用程序和激活指定文件中的对象。

如果路径名是零长度字符串 (""), GetObject返回特定类型的新对象实例。如果省略路径名参数,则GetObject返回特定类型的当前活动对象。如果不存在的对象指定的类型,则会出现错误。

某些应用程序允许您激活文件的一部分。一个字符串,用于标识要激活的文件的一部分,请并后面添加一个感叹号 () 文件的名称。有关如何创建该字符串的信息,请参阅创建对象的应用程序的文档。

例如,绘图的应用程序中可能有多个图层,在文件中存储的图形。您可以使用以下代码激活名为SCHEMA.CAD:

Set LayerObject = GetObject("C:\CAD\SCHEMA.CAD!Layer3")

如果您未指定对象的,来确定要启动应用程序和对象激活,根据您提供的文件名。一些文件,但是,可能支持多个类别的对象。例如,一个图形可能支持三种不同类型的对象︰应用程序对象、图形对象和工具栏对象,它们都是相同的文件的一部分。若要指定要激活文件中的对象,请使用可选的参数。例如︰

Dim MyObject As Object
Set MyObject = GetObject("C:\DRAWINGS\SAMPLE.DRW", _
"FIGMENT.DRAWING")

在示例中, FIGMENT是绘图的应用程序和DRAWING的名称是它支持的对象类型之一。

对象激活后,您可以在代码中使用您定义的对象变量引用它。在前面的示例中,通过使用对象变量MyObject访问属性和新对象的方法。例如︰

MyObject.Line 9, 90
MyObject.InsertText 9, 100, "Hello, world."
MyObject.SaveAs "C:\DRAWINGS\SAMPLE.DRW"

注意: 当没有对象的当前实例,或者如果您想要使用已加载的文件创建对象,请使用GetObject函数。如果没有当前实例,并且不希望开始使用加载的文件的对象,请使用CreateObject函数。

如果对象已注册本身作为单个对象,仅创建一个实例的对象,无论执行CreateObject次数。对单个对象, GetObject始终返回相同实例调用替换为零长度字符串 ("") 的语法,它会导致错误如果省略路径名。不能使用GetObject获得使用 Visual Basic 创建的课堂的引用。

示例

此示例使用GetObject函数以获取对特定Microsoft Office Excel 2007工作表 (MyXL) 的引用。使用工作表应用程序属性以使 Excel 可见,其关闭,等等。使用两个 API 调用,DetectExcel Sub过程 Excel 中,查找并如果它正在运行,输入其运行对象表中。如果尚未运行 Microsoft Excel, GetObject第一次调用会导致错误。该错误的示例中,将导致 ExcelWasNotRunning 标志设置为 True。GetObject第二次调用指定要打开的文件。如果尚未运行 Excel,第二个呼叫启动它,并返回到指定的文件,以表示工作表中的引用 mytest.xls。文件必须位于指定位置;否则,生成 Visual Basic 错误自动化错误。接下来,该代码示例使 Excel 和包含指定的工作表可见的窗口。最后,如果有任何早期版本的 Excel 运行,代码使用应用程序对象的Quit方法关闭 Excel。如果已在运行应用程序,不尝试关闭它。通过将其设置为释放本身的引用。

' Declare necessary API routines:
Declare Function FindWindow Lib "user32" Alias _
"FindWindowA" (ByVal lpClassName as String, _
ByVal lpWindowName As Long) As Long
Declare Function SendMessage Lib "user32" Alias _
"SendMessageA" (ByVal hWnd as Long,ByVal wMsg as Long, _
ByVal wParam as Long, _
ByVal lParam As Long) As Long
Sub GetExcel()
Dim MyXL As Object ' Variable to hold reference
' to Microsoft Excel.
Dim ExcelWasNotRunning As Boolean ' Flag for final release.
' Test to see if there is a copy of Microsoft Excel already running.
On Error Resume Next ' Defer error trapping.
' GetObject function called without the first argument returns a
' reference to an instance of the application. If the application isn't
' running, an error occurs.
Set MyXL = GetObject(, "Excel.Application")
If Err.Number <> 0 Then ExcelWasNotRunning = True
Err.Clear ' Clear Err object in case error occurred.
' Check for Microsoft Excel. If Microsoft Excel is running,
' enter it into the Running Object table.
DetectExcel
' Set the object variable to reference the file you want to see.
Set MyXL = GetObject("c:\vb4\MYTEST.XLS")
' Show Microsoft Excel through its Application property. Then
' show the actual window containing the file using the Windows
' collection of the MyXL object reference.
MyXL.Application.Visible = True
MyXL.Parent.Windows(1).Visible = True
Do manipulations of your file here.
' ...
' If this copy of Microsoft Excel was not running when you
' started, close it using the Application property's Quit method.
' Note that when you try to quit Microsoft Excel, the
' title bar blinks and a message is displayed asking if you
' want to save any loaded files.
If ExcelWasNotRunning = True Then
MyXL.Application.Quit
End IF
Set MyXL = Nothing ' Release reference to the
' application and spreadsheet.
End Sub
Sub DetectExcel()
' Procedure dectects a running Excel and registers it.
Const WM_USER = 1024
Dim hWnd As Long
' If Excel is running this API call returns its handle.
hWnd = FindWindow("XLMAIN", 0)
If hWnd = 0 Then ' 0 means Excel not running.
Exit Sub
Else
' Excel is running so use the SendMessage API
' function to enter it in the Running Object Table.
SendMessage hWnd, WM_USER + 18, 0, 0
End If
End Sub

注意: 机器翻译免责声明:本文是由无人工介入的计算机系统翻译的。Microsoft 提供机器翻译是为了帮助非英语国家/地区用户方便阅读有关 Microsoft 产品、服务和技术的内容。由于机器翻译的原因,本文可能包含词汇、语法或文法方面的错误。

扩展你的技能
了解培训
抢先获得新功能
加入 Office 预览体验计划

此信息是否有帮助?

谢谢您的反馈!

谢谢你的反馈! 可能需要转接到 Office 支持专员。

×