CreateObject 函数

应用对象
Microsoft 365 专属 Access Access 2024 Access 2021 Access 2019 Access 2016

注意

如果 Microsoft Jet 表达式服务在沙盒模式下运行,则禁用本主题中所述的函数、方法、对象或属性,从而阻止计算潜在的不安全表达式。 有关沙盒模式的详细信息,请在“帮助”中搜索“沙盒模式”。

创建并返回对 ActiveX 对象的引用。

语法

CreateObject ( [, servername] )

CreateObject 函数语法具有以下参数:

参数 说明
必需。 变量 (字符串) 。 要创建的对象的应用程序名称和类。
servername 可选。 变量 (字符串) 。 要在其中创建对象的网络服务器的名称。 如果 servername 是空字符串 (“”) ,则使用本地计算机。

    

参数使用语法 appname.objecttype,并具有以下部分:

部分 说明
appname 必需。 变量 (字符串) 。 提供 对象的应用程序的名称。
objecttype 必需。 变量 (字符串) 。 要创建的对象的类型或类。

    

备注

每个支持自动化的应用程序都提供至少一种类型的对象。 例如,字处理应用程序可以提供 Application 对象、 Document 对象和 Toolbar 对象。

若要创建 ActiveX 对象,请将 CreateObject 返回的对象分配给对象变量:

注意

下面的示例演示了如何在 Visual Basic for Applications (VBA) 模块中使用此函数。 有关使用 VBA 的详细信息,请在搜索旁边的下拉列表中选择“开发人员参考”,并在搜索框中输入一个或多个术语。

' Declare an object variable to hold the object 
' reference. Dim as Object causes late binding. 
Dim ExcelSheet As Object
Set ExcelSheet = CreateObject("Excel.Sheet")

在此示例中,我们将从 Access 数据库中自动执行 Excel 电子表格对象。 此代码启动创建对象的应用程序,在本例中为Microsoft Excel 电子表格。 创建对象后,可以使用定义的对象变量在代码中引用它。 在以下示例中,使用 对象变量 ExcelSheet、 和其他 Excel 对象(包括 Application 对象和 集合)访问新对象的属性和 Cells 方法。

' Make Excel visible through the Application object.
ExcelSheet.Application.Visible = True
' Place some text in the first cell of the sheet.
ExcelSheet.Application.Cells(1, 1).Value = "This is column A, row 1"
' Save the sheet to C:\test.xls directory.
ExcelSheet.SaveAs "C:\TEST.XLS"
' Close Excel with the Quit method on the Application object.
ExcelSheet.Application.Quit
' Release the object variable.
Set ExcelSheet = Nothing

使用 As Object 子句声明对象变量会创建一个变量,该变量可以包含对任何类型的对象的引用。 但是,通过该变量对 对象的访问是后期绑定的;也就是说,绑定在程序运行时发生。 若要创建导致早期绑定的对象变量(即编译程序时绑定),请使用特定的类 ID 声明对象变量。 例如,可以声明并创建以下 Excel 引用:

Dim xlApp As Excel.Application 
Dim xlBook As Excel.Workbook
Dim xlSheet As Excel.WorkSheet
Set xlApp = CreateObject("Excel.Application")
Set xlBook = xlApp.Workbooks.Add
Set xlSheet = xlBook.Worksheets(1)

通过早期绑定变量的引用可以提供更好的性能,但只能包含对声明中指定的类的引用。

可以将 CreateObject 函数返回的对象传递给需要对象作为参数的函数。 例如,以下代码创建并传递对 Excel.Application 对象的引用:

Call MySub (CreateObject("Excel.Application"))

通过将计算机的名称传递给 CreateObjectservername 参数,可以在远程联网计算机上创建对象。 该名称与共享名称的“计算机名称”部分相同:对于名为“\\MyServer\Public”的共享, 服务器名称 为“MyServer”。

注意

有关使应用程序在远程联网计算机上可见的其他信息,请参阅 COM 文档 (Microsoft开发人员网络) 。 可能需要为应用程序添加注册表项。

以下代码返回在名为 MyServer的远程计算机上运行的 Excel 实例的版本号:

Dim xlApp As Object
Set xlApp = CreateObject("Excel.Application", "MyServer")
Debug.Print xlApp.Version

如果远程服务器不存在或不可用,则会发生运行时错误。

注意

如果没有对象的当前实例,请使用 CreateObject 。 如果对象的实例已在运行,则启动一个新实例,并创建指定类型的对象。 若要使用当前实例,或者要启动应用程序并使其加载文件,请使用 GetObject 函数。

如果对象已将自身注册为单实例对象,则只创建对象的一个实例,无论执行多少次 CreateObject

示例

此示例使用 CreateObject 函数设置引用 (

xlApp

) Excel。 它使用 引用访问 Excel 的 Visible 属性,然后使用 Excel Quit 方法将其关闭。 最后,释放引用本身。

Dim xlApp As Object    ' Declare variable to hold the reference.
Set xlApp = CreateObject("excel.application")
    ' You may have to set Visible property to True
    ' if you want to see the application.
xlApp.Visible = True
    ' Use xlApp to access Microsoft Excel's 
    ' other objects.
xlApp.Quit    ' When you finish, use the Quit method to close 
Set xlApp = Nothing    ' the application, then release the reference.