image

顾名思义,CreateObject函数用于创建对象。但是,如果我们可以使用new关键字直接创建对象,为什么还要使用CreateObject方法或函数呢?好吧,这是一个有效的问题,我们有一个合适的答案。使用CreateObject创建对象的方法称为Late Binding *。在后期绑定中,对象的创建在运行时发生。它不需要添加任何引用。这使VBA代码具有可移植性。

例如,如果您创建一个处理其他应用程序的应用程序,并且您通过添加引用和使用new *关键字来使用早期绑定。稍后,您将该代码传输到其他计算机上,那么您也必须在该计算机上添加引用。

但是,如果您使用CreateObject方法创建其他应用程序对象,则在传输或共享代码的情况下,无需在其他计算机上添加引用。

在本文中,我们将使用一些示例来学习CreateObject方法。

CreateObject函数的语法:

Set object_name= CreateObject(classname as string,[servername])

类名作为字符串:这是必需变量。它是一个字符串,它引用应用程序的名称和对象类型。应在AppName.ObjecType中声明要创建的对象的应用程序名称和类。例如,如果我想要Word Application的对象,则可以编写“ Word.Application”。我们将在后面的示例中详细介绍它。

[服务器名称]:这是一个可选变量。它是将在其中创建对象的网络服务器的名称的字符串。如果servername是一个空字符串(“”),则使用本地计算机。我们将不在本章中使用它。

现在,我们知道CreateObject函数的基础知识,让我们在一些示例中使用它们:

示例1:使用Excel VBA打开Microsoft Word应用程序因此,如果我们想使用早期绑定,则可以使用“工具”→“参考”菜单为Word应用程序添加引用。

image

我们的代码看起来像这样。

Sub OpenWordApp()

Dim wordApp As New Word.Application

Dim wordDoc As Document

wordApp.Visible = True

wordDoc = wordApp.Documents.Add

End Sub

该代码的优势在于,您可以获得VBA的智能帮助,并向您显示了已创建对象的可用方法和属性,它将在您的系统上完美运行。但是,如果您将此代码共享给其他人,而他们还没有从工具中添加对Microsoft Word库的引用,则他们会收到错误消息。

image

为避免此错误,请使用以下代码。

Sub OpenWordApp()

Dim wordApp As Object



Set wordApp = CreateObject("Word.Application")



Dim wordDoc As Object

wordApp.Visible = True

Set wordDoc = wordApp.Documents.Add

End Sub

上面的代码在任何机器上都能正常工作。它是可移植的,因为我们使用CreateObject方法进行后期绑定来创建对象。

让我们看另一个示例:

示例2:使用CreateObject函数创建工作簿对象如果您使用VBA已有一段时间,则必须使用New关键字创建或添加到工作簿中。在此示例中,我们将使用CreateObject进行操作。

Sub addSheet()



' Declare an object variable to hold the object

' reference. Dim as Object causes late binding.

Dim ExcelSheet As Object

Set ExcelSheet = CreateObject("Excel.Sheet")

' 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

End Sub

好的,这就是您在VBA中使用CreateObject方法的方式。让我们讨论它的优点和缺点。

CreateObject创建对象的优点CreateObject的主要优点在于,它使您的代码具有可移植性(当您关注对象创建时)。您可以将代码共享给任何人,而不必担心他们是否使用该方法将引用添加到目标程序。

CreateObject的缺点

CreateObject方法的缺点是:

您需要知道要用于对象创建的类的结构。

创建对象后,对象的方法和属性完全取决于内存,因为VBA不会提供任何智能帮助。

我们可以克服以上缺点。我有个把戏

每当我编写要与他人共享的代码时,我都会使用第一种方法来创建对象(从工具中添加引用)。这可以帮助我更快地编写代码。完成VBA程序并对其进行测试后,将New方法替换为CreateObject方法。这使代码可移植。您可以使用此技巧。

好的,这就是您可以使用CreateObject函数在VBA中创建对象的方式。我希望我能解释一切。如果您对本文有任何疑问或任何其他与VBA相关的问题,请在下面的评论部分中问我。

相关文章:

Excel VBA UserForms入门 | *我将解释如何在excel中创建表单,如何使用VBA工具箱,如何处理用户输入,最后如何存储用户输入。我们将使用一个示例和逐步指南来逐步介绍这些主题。

`link:/ general-topics-in-vba-vba-variables-in-excel [Excel中的VBA变量] || * VBA代表Visual Basic for Applications。

它是Microsoft的一种编程语言。它与Microsoft Office应用程序(例如MSExcel,MS-Word和MS-Access)一起使用,而VBA变量是特定的关键字。

Excel VBA变量范围 | *在所有编程语言中,我们都有变量访问说明符,用于定义可从何处访问已定义变量。 Excel VBA也不例外。 VBA也具有范围说明符。

ByRef和ByVal参数当参数作为ByRef参数传递给其他子函数时,将发送实际变量的引用。对变量副本所做的任何更改都将反映在原始参数中。

在Microsoft Excel中使用VBA删除没有确认提示的工作表由于要使用VBA删除工作表,因此您知道自己在做什么。

您想告诉Excel不要显示此警告并删除该死的表。

在Microsoft Excel 2016中使用VBA添加和保存新工作簿] |在此代码中,我们首先创建了对工作簿对象的引用。然后,我们使用一个新的工作簿对象对其进行了初始化。这种方法的好处是您可以轻松地对此新工作簿进行操作。像保存,关闭,删除等一样,链接:/ menus-toolbars-status-bar-in-vba-在Microsoft Excel中使用vba-显示状态栏上的消息Excel VBA状态栏*]| excel中的状态栏可用作代码监视器。当您的VBA代码很长并且您使用VBA执行多项任务时,通常会禁用屏幕更新,以免看到屏幕闪烁。

`link:/ general-topics-in-vba-off-warning-messages-using-vba-in-microsoft-excel [在Microsoft Excel 2016中使用VBA关闭警告消息] | **此代码不仅禁用VBA警报,但也增加了代码的时间效率。让我们看看如何。

热门文章:

50 Excel快捷方式以提高生产率更快地完成任务。这50个快捷键将使您在Excel上的工作速度更快。

Excel中的VLOOKUP函数在Excel 2016中为COUNTIF使用此惊人的功能对条件进行计数。您无需过滤数据即可计算特定值。

Countif功能对于准备仪表板至关重要。

如何在Excel中使用SUMIF函数这是仪表板的另一个重要功能。这可以帮助您汇总特定条件下的值。