image

Как следует из названия, функция CreateObject используется для создания объектов. Но почему мы используем метод или функцию CreateObject, если мы можем напрямую создать объект, используя ключевое слово new? Что ж, это правильный вопрос, и у нас есть подходящий ответ. Создание объекта с помощью CreateObject называется поздним связыванием *. При позднем связывании создание объектов происходит во время выполнения. Добавлять ссылки не нужно. Это делает код VBA переносимым.

Например, если вы создаете приложение, которое работает с другими приложениями, и используете раннее связывание, добавляя ссылки и используя ключевое слово new *. Позже вы перенесете этот код на другую машину, и тогда вам придется добавить ссылки на эту машину.

Но если вы использовали метод CreateObject для создания других объектов приложения, вам не нужно будет добавлять ссылки на других машинах, если вы передадите или поделитесь кодом.

В этой статье мы узнаем о методе CreateObject на некоторых примерах.

Синтаксис функции CreateObject:

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

имя класса как строка: это обязательная переменная. Это строка, которая ссылается на имя приложения и тип объекта. Имя приложения и класс создаваемого объекта должны быть объявлены в AppName.ObjecType. Например, если мне нужен объект приложения Word, я напишу «Word.Application». Мы увидим это подробно на примерах позже.

[servername]: это необязательная переменная. Это строка имени сетевого сервера, на котором будет создан объект. Если имя сервера — пустая строка («»), используется локальный компьютер. Мы не будем использовать это в этой главе.

Теперь, когда мы знаем основы функции CreateObject, давайте используем их в некоторых примерах:

Пример 1: открытие приложения Microsoft Word с помощью Excel VBA Итак, если мы хотим использовать раннее связывание, мы бы добавили ссылки на приложения 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

Так что да, ребята, вот как вы используете метод CreateObject в VBA. Давайте обсудим преимущества и недостатки этого.

Преимущества CreateObject для создания объекта Основным преимуществом CreateObject является то, что он делает ваш код переносимым (когда создание объекта является проблемой). Вы можете поделиться кодом с кем угодно, не беспокоясь о том, добавили ли они ссылку на объектную программу, используя или нет.

Недостаток CreateObject

Недостатки метода CreateObject:

Вам необходимо знать структуру класса, который вы собираетесь использовать для создания объекта.

После того, как вы создали объект, вы полностью зависите от своей памяти для методов и свойств объектов, поскольку VBA не предоставляет никакого intellisense, чтобы помочь вам.

Мы можем преодолеть указанные выше недостатки. У меня есть хитрость.

Всякий раз, когда я пишу код, который будет доступен другим, я использую первый метод для создания объектов (добавление ссылок из инструментов). Это помогает мне писать код быстрее. Завершив программу VBA и протестировав ее, я заменяю метод New на метод CreateObject. Это делает код переносимым. Вы можете использовать этот трюк.

Так что да, ребята, вот как вы можете использовать функцию CreateObject для создания объектов в VBA. Надеюсь, я смог все объяснить. Если у вас есть какие-либо вопросы относительно этой статьи или любые другие вопросы, связанные с VBA, задавайте мне в разделе комментариев ниже.

Статьи по теме:

link: / applications-word-outlook-in-vba-Getting-started-with-excel-vba-userforms [Начало работы с пользовательскими формами Excel VBA] | * Я объясню, как создать форму в Excel, как использовать Панель инструментов VBA, как обрабатывать вводимые пользователем данные и, наконец, как хранить вводимые пользователем данные. Мы рассмотрим эти темы на одном примере и пошаговом руководстве.

link: / general-themes-in-vba-vba-variables-in-excel [переменные VBA в Excel] | * VBA означает Visual Basic для приложений.

Это язык программирования от Microsoft. Он используется с приложениями Microsoft Office, такими как MSExcel, MS-Word и MS-Access, тогда как переменные VBA являются конкретными ключевыми словами.

link: / general-themes-in-vba-excel-vba-variable-scope [Область переменных Excel VBA] | * Во всех языках программирования у нас есть спецификаторы доступа к переменным, которые определяют, откуда можно получить доступ к определенной переменной. Excel VBA — не исключение. VBA тоже имеет спецификаторы области видимости.

link: / cells-range-rows-and-columns-in-vba-what-is-the-difference-between-byref-and-byval-arguments-vba-интервью-question [ByRef and ByVal Arguments] | Когда аргумент передается как аргумент ByRef в другую подпрограмму или функцию, отправляется ссылка на фактическую переменную. Любые изменения, внесенные в копию переменной, будут отражены в исходном аргументе.

link: / files-workbook-and-worksheets-in-vba-delete-sheet-without-confirm-prompts-using-vba-in-microsoft-excel [Удалять листы без запросов подтверждения с помощью VBA в Microsoft Excel] | Поскольку вы удаляете листы с помощью VBA, вы знаете, что делаете.

Вы хотите сказать Excel, чтобы он не показывал это предупреждение и не удалял этот проклятый лист.

link: / files-workbook-and-worksheets-in-vba-add-and-save-new-workbook-using-vba-in-microsoft-excel [Добавить и сохранить новую книгу с помощью VBA в Microsoft Excel 2016] | В этом коде мы сначала создали ссылку на объект книги. А затем мы инициализировали его новым объектом книги. Преимущество этого подхода заключается в том, что вы можете легко выполнять операции с этой новой книгой. Например, сохранение, закрытие, удаление и т. Д. Display A Message On Строка состояния Excel VBA * | Строку состояния в Excel можно использовать как монитор кода. Когда ваш код VBA длинный и вы выполняете несколько задач с помощью VBA, вы часто отключаете обновление экрана, чтобы экран не мерцал.

link: / general-themes-in-vba-turn-off-warning-messages-using-vba-in-microsoft-excel [Отключить предупреждающие сообщения с помощью VBA в Microsoft Excel 2016] | * Этот код отключает не только VBA предупреждения, но также увеличивает временную эффективность кода. Посмотрим как.

Популярные статьи:

link: / keyboard-formula-shortcuts-50-excel-shortcuts-to-вашу-продуктивность [50 комбинаций клавиш Excel для повышения вашей продуктивности] | Выполняйте свою задачу быстрее. Эти 50 ярлыков заставят вас работать в Excel еще быстрее.

link: / формулы-и-функции-введение-функции-vlookup [Функция ВПР в Excel] | Это одна из наиболее используемых и популярных функций Excel, которая используется для поиска значений из разных диапазонов и листов. link: / tips-countif-in-microsoft-excel [COUNTIF в Excel 2016] | Подсчитайте значения с условиями, используя эту удивительную функцию. Вам не нужно фильтровать данные для подсчета определенных значений.

Функция Countif важна для подготовки вашей приборной панели.

link: / excel-formula-and-function-excel-sumif-function [Как использовать функцию СУММЕСЛИ в Excel] | Это еще одна важная функция приборной панели. Это поможет вам суммировать значения для конкретных условий.