Vba создать объект excel
Объекты являются очень важными понятиями в кодировании VBA, и понимание того, что модель работы объекта довольно сложна. Когда мы ссылаемся на объекты в кодировании VBA, мы делаем это двумя способами, т. е. «раннее связывание» и «позднее связывание». «Раннее связывание» — это процесс установки ссылки на объект из библиотеки ссылок VBA, и когда мы отправляем файл кому-то другому, им также требуется установить ссылку на эти соответствующие объекты. Однако «Поздняя привязка» не требует от пользователя установки каких-либо ссылок на объекты, потому что в кодировании с поздней привязкой мы устанавливаем ссылку на соответствующий объект с помощью функции VBA «CreateObject».
Что такое CreateObject в Excel VBA?
«Создать объект», как следует из самого названия, создаст указанный объект из Excel VBA. Итак, функция Create Object возвращает ссылку на объект, инициированный компонентом Active X.
Ниже приведен синтаксис функции CreateObject в VBA.
Пример функции создания объекта в Excel VBA
Ниже приведены примеры VBA CreateObject.
Теперь мы увидим, как инициировать приложение PowerPoint из Excel с помощью функции CreateObject в VBA. Откройте файл Excel и перейдите в окно редактора Visual Basic, нажав кнопку ALT + F11 ключ.
Код:
Объявите переменную как PowerPoint.Application.
Как вы можете видеть выше, когда мы начинаем вводить слово «PowerPoint», мы не видим никакого списка IntelliSense, показывающего связанные поисковые запросы. Это потому, что «PowerPoint» является внешним объектом. Но не о чем беспокоиться, объявите переменную как «Объект».
Код:
Поскольку мы объявили переменную как «Объект», нам нужно установить ссылку на объект с помощью ключевого слова «Set». Введя ключевое слово «Set», укажите переменную и поставьте знак равенства.
Код:
Теперь откройте функцию CreateObject.
Поскольку мы ссылаемся на внешний объект «PowerPoint» для «Класс» параметра функции «Создать объект», укажите имя внешнего объекта в двойных кавычках как «PowerPoint.Application».
Код:
Теперь функция «Создать объект» инициирует приложение PowerPoint. Как только объект инициирован, нам нужно сделать его видимым, используя имя переменной.
Одна из проблем с методом Create Object или методом поздней привязки заключается в том, что мы не видим список IntelliSense в определенный момент времени. Вы должны быть абсолютно уверены в коде, который пишете.
Для переменной «PPT» используйте свойство «Visible» и установите статус «True».
Код:
Чтобы добавить слайд в PPT, определите строку ниже Код VBA Код VBA Код VBA относится к набору инструкций, написанных пользователем на языке программирования приложений Visual Basic в редакторе Visual Basic (VBE) для выполнения определенной задачи. читать далее .
Код:
Теперь выполните код вручную или с помощью клавиши F5 и увидите, как откроется приложение «PowerPoint».
Как только приложение PowerPoint включено с помощью переменной «PPT», мы можем начать доступ к приложению PowerPoint.
Теперь мы увидим, как инициировать приложение Excel с помощью функции CreateObject в VBA. Еще раз объявите переменную как «Объект».
Код:
В тот момент, когда мы объявляем переменную как объект, это вызывает позднее связывание, и нам нужно использовать ключевое слово «Set», чтобы установить ссылку на требуемый объект.
Поскольку мы ссылаемся на рабочий лист Excel из приложения Excel, введите «Excel. Лист» в двойных кавычках.
Код:
После того, как ссылка для листа Excel установлена, нам нужно сделать ее видимой, чтобы использовать ее. Это похоже на то, как мы сделали приложение PowerPoint видимым.
Код:
Теперь он активирует рабочий лист Excel.
Точно так же, чтобы инициировать книгу Excel из других продуктов Microsoft, мы можем использовать приведенный ниже код.
Примечание: Функция, метод, объект или свойство, описанные в данном разделе, отключаются, если служба обработки выражений Microsoft Jet выполняется в режиме песочницы, который не позволяет рассчитывать потенциально небезопасные выражения. Для получения дополнительных сведений выполните в справке поиск по словам "режим песочницы".
Создает и возвращает ссылку на объект ActiveX.
CreateObject ( класс [, имя_сервера] )
Функция CreateObject имеет следующие аргументы:
класс
Обязательный аргумент. Variant (String). Имя приложения и класс создаваемого объекта.
имя_сервера
Необязательный аргумент. Variant (String). Имя сетевого сервера, где будет создан объект. Если имя_сервера является пустой строкой (""), используется локальный компьютер.
Аргумент классАргумент использует синтаксис имя_приложения.тип_объекта и содержит следующие части:
имя_приложения
Обязательный аргумент. Variant (String). Имя приложения, предоставляющего объект.
тип_объекта
Обязательный аргумент. Variant (String). Тип (класс) объекта, который требуется создать.
В каждом приложении, поддерживающем автоматизацию, имеется хотя бы один тип объекта. Например, в приложении для обработки текстов могут быть объекты Application, Document и Toolbar.
Чтобы создать ActiveX, назначьте объекту CreateObject объекту, объектная переменная:
Примечание: В примерах ниже показано, как использовать эту функцию в модуле Visual Basic для приложений (VBA). Чтобы получить дополнительные сведения о работе с VBA, выберите Справочник разработчика в раскрывающемся списке рядом с полем Поиск и введите одно или несколько слов в поле поиска.
В этом примере мы автоматиз будем автоматизировать объект электронной таблицы Excel из базы данных Access. Этот код запускает приложение, созда которое создает объект, в данном случае таблицу Microsoft Excel. На созданный объект можно ссылаться в коде с помощью определенной вами объектной переменной. В следующем примере доступ к свойствам и методам нового объекта осуществлялся с помощью объектной переменной, ExcelSheet и других объектов Excel, включая объект Application и коллекцию Cells .
При объявлении объектной переменной с помощью предложения As Object создается переменная, которая может содержать ссылку на любой тип объекта. Однако обращение к объекту через эту переменную выполняется с поздним связыванием, то есть привязка создается при выполнении программы. Чтобы создать объектную переменную с ранним связыванием, то есть со связыванием при компиляции программы, объявите объектную переменную с определенным идентификатором класса. Например, объявите и создайте следующие ссылки Excel:
С помощью ссылки на ранняя переменная можно улучшить производительность, но она может содержать только ссылку на класс, заданную в объявление.
Можно передать объект, возвращаемый функцией CreateObject, функции, которая использует объект в качестве аргумента. Например, в следующем коде создается и передается ссылка на объект Excel.Application:
Call MySub (CreateObject("Excel.Application"))
Вы можете создать объект на удаленном компьютере, подключенном к сети, указав его имя в аргументе имя_сервера функции CreateObject. Это имя совпадает с именем компьютера в имени общего ресурса: для имени "\\MyServer\Public" имя_сервера будет "MyServer".
Примечание: Дополнительные сведения о том, как сделать приложение видимым на удаленном сетевом компьютере, см. в документации COM (Microsoft Developer Network). Возможно, понадобится добавить раздел реестра для приложения.
Следующий код возвращает номер версии экземпляра приложения Excel, запущенного на удаленном компьютере с именем MyServer :
Если удаленный сервер не существует или недоступен, возникает ошибка во время выполнения.
Примечание: Используйте функцию CreateObject, если текущий экземпляр объекта отсутствует. Если экземпляр объекта уже запущен, запускается новый экземпляр и создается объект указанного типа. Чтобы использовать текущий экземпляр или запустить приложение и загрузить файл, следует воспользоваться функцией GetObject.
Если объект зарегистрировал себя как объект типа "единственный экземпляр", создается только один экземпляр этого объекта независимо от того, сколько раз выполнялась функция CreateObject.
Пример
В данном примере функция CreateObject используется для задания ссылки (
) в Excel. Ссылка используется для доступа к свойству "Видимый" в Excel, а затем используется метод выхода Excel, чтобы закрыть его. Наконец, выпустится сама ссылка.
Объект представляет собой сочетание кода и данных, которое рассматривается как единое целое. Объект может быть частью приложения, как, например, элемент управления или форма. Также объектом может являться само приложение в целом.
при создании приложения в Visual Basic вы постоянно работаете с объектами. можно использовать объекты, предоставляемые Visual Basic, такие как элементы управления, формы и объекты доступа к данным. кроме того, в приложении Visual Basic можно использовать объекты других приложений. Вы даже можете создать собственные объекты и определить для них дополнительные свойства и методы. Объекты выполняют функцию готовых блоков для создания программ — вы можете один раз написать фрагмент кода и использовать его многократно.
В этой статье мы подробно расскажем вам про объекты.
Объекты и классы
каждый объект в Visual Basic определяется классом. Класс описывает переменные, свойства, процедуры и события объекта. Объекты являются экземплярами классов. Определив класс, вы можете создать из него любое количество объектов.
Взаимосвязь между объектом и его классом можно проиллюстрировать на примере печенья и формочки для печенья. Форма для печенья — это класс. Она определяет характеристики каждого печенья, то есть размер и форму. Класс используется для создания объектов. Отдельные печенья — это и есть объекты.
Необходимо создать объект, чтобы получить доступ к его членам, за исключением Shared элементов, к которым можно получить доступ без объекта класса.
Создание объекта из класса
Определите, из какого класса нужно создать объект, или определите собственный класс. Пример.
Напишите оператор Dim для создания переменной, значением которой будет новый экземпляр класса. Переменная должна иметь тип, соответствующий нужному классу.
Добавьте ключевое слово New Operator, сохранить новый экземпляр класса в переменную.
Теперь члены класса будут доступны через переменную объекта.
Всегда, если это возможно, следует объявлять переменную с типом того класса, который будет в ней храниться. Этот принцип называется раннее связывание. Если во время компиляции тип класса не известен, можно использовать позднее связывание, объявив переменную с типом данных объекта. Но помните, что позднее связывание может снижать производительность и ограничивать доступ к членам объекта во время выполнения. Дополнительные сведения см. в статье Object Variable Declaration (Объявление объектной переменной).
Несколько экземпляров
Обычно все только что созданные из класса объекты идентичны друг другу. Но с того момента, когда они возникают как отдельные объекты, их переменные и свойства изменяются независимо от других экземпляров объекта. Например, если вы добавляете в форму три флажка, каждый из объектов флажков является экземпляром класса CheckBox. Отдельные объекты CheckBox имеют одинаковый набор характеристик и возможностей (свойства, переменные, процедуры и события), которые определены в этом классе. Но каждый из объектов имеет собственное имя, каждый можно отдельно включать и отключать, а также перемещать в другое место на форме.
Члены объекта
Объект является элементом приложения и представляет собой экземпляр некоторого класса. Поля, свойства, методы и события являются составными частями объекта, и совокупно именуются членами объекта.
Доступ к членам
Чтобы обратиться к члену объекта, нужно указать имя соответствующей переменной объекта и имя нужного члена, отделив его точкой ( . ). В следующем примере задается свойство Text объекта Label.
Список членов IntelliSense
Технология IntelliSense перечисляет члены класса, когда вы обращаетесь к функции списка членов, например вводите точку ( . ) в контексте доступа к члену. Если точка ставится после имени переменной, объявленной как экземпляр некоторого класса, IntelliSense перечисляет все члены экземпляра, но опускает общие члены. Если точка ставится после имени класса, то IntelliSense перечисляет все общие члены, но опускает члены экземпляра. Дополнительные сведения см. в разделе Using IntelliSense.
Поля и свойства
Поля и свойства представляют сведения, содержащиеся в объекте. Их значения можно задавать и получать с помощью инструкций присваивания, так же как для локальных переменных в процедуре. В следующем примере мы получаем значение свойства Width и устанавливаем значение свойства ForeColor для объекта Label.
Поле можно также называть переменная-член.
Процедуры свойств удобно использовать в следующих случаях.
Вы хотите контролировать, когда и как значения будут задаваться и извлекаться.
Свойство имеет строго определенный набор значений, которые требуется проверять.
Изменение значения приводит к существенному изменению состояния объекта (как, например, значение свойства IsVisible ).
Изменение значения свойства изменяет другие внутренние переменные или значения других свойств.
Перед установкой или получением свойства необходимо выполнить определенный набор действий.
Если выполняются следующие условия, можно использовать поля.
Значение имеет тип, для которого существует встроенная проверка. Например, если присвоить переменной типа Boolean любое значение, кроме True или False , создается ошибка или выполняется автоматическое преобразование данных.
Допустимым является любое значение из диапазона, поддерживаемого для этого типа данных. Это справедливо для многих свойств с типами Single или Double .
Свойство имеет тип данных String и не имеет ограничений на размер или значение строки.
Дополнительные сведения см. в статье Property Procedures (Visual Basic) (Процедуры свойств в Visual Basic).
Всегда оставляйте неконстантные поля частными. Если вы хотите сделать его общедоступным, используйте вместо него свойство.
Методы
Действие, которое выполняет объект, называется методом. Например, Add — это метод объекта ComboBox, который добавляет новую запись в поле со списком.
В следующем примере иллюстрируется использование метода Start объекта Timer.
По сути метод — это просто процедура, предоставляемая объектом.
Дополнительные сведения см. в разделе Procedures in Visual Basic (Процедуры в Visual Basic).
События
Событие — это действие, распознаваемое объектом, например, щелчок мышью или нажатие клавиши. Вы можете написать код для реагирования на эти события. События могут происходить в результате действий пользователя, выполнения программного кода или изменения состояния системы. Принято говорить, что код, который объявляет о наступлении события, создает это событие, а код, который реагирует на него, обрабатывает событие.
Вы можете разработать собственные события, которые будут создаваться и обрабатываться созданными вами объектами. Дополнительные сведения см. в статье Events (Visual Basic) (События в Visual Basic).
Члены экземпляров и общие члены
Когда вы создаете объект на основе класса, вы получаете экземпляр этого класса. Члены, которые объявлены без ключевого слова Shared, являются членами экземпляра, то есть принадлежат исключительно одному определенному экземпляру. Член экземпляра в одном экземпляре никак не зависит от такого же члена в другом экземпляре того же класса. Например, переменная-член экземпляра может иметь разные значения в разных экземплярах.
Члены, объявленные с ключевым словом Shared , являются Shared , то есть относятся к классу в целом, а не к отдельному экземпляру. Существует только одна копия каждого общего члена, независимо от количества созданных экземпляров. Общий член определен даже в том случае, если не создано ни одного экземпляра. Например, общая переменная-член имеет только одно значение, которое можно получить из любого фрагмента кода, имеющего доступ к соответствующему классу.
Доступ к членам, не являющимся общими
Убедитесь, что объект уже создан на основе нужного класса и сохранен в объектной переменной.
В операторе, который должен обращаться к члену, после имени переменной объекта введите оператор доступа к члену ( ), а затем имя члена.
Доступ к общим членам
После имени класса введите оператор доступа к члену ( ), а затем имя члена. К члену объекта, объявленному с ключевым словом Shared , нужно всегда обращаться напрямую через имя класса.
Если вы уже создали из этого класса объект, вы можете обращаться к члену, объявленному с ключевым словом Shared , и через переменную этого объекта.
Различия между классами и модулями
Основное различие между классами и модулями заключается в том, что для классов можно создавать экземпляры в качестве объектов. Модули таким свойством не обладают. Поскольку все данные стандартного модуля существуют только в одной копии, любые изменения общей переменной стандартного модуля, выполненные в любой части программы, будут влиять на все остальные обращения к значению этой переменной. Данные объекта, наоборот, существуют отдельно для каждого созданного экземпляра объекта. Еще одно важное различие состоит в том, что классы могут реализовывать интерфейсы, а модули — нет. Если класс помечен модификатором MustInherit , он не может быть создан напрямую. Однако он по-прежнему отличается от модуля, так как он может быть унаследован, пока модули не могут быть унаследованы.
Если к члену класса применяется модификатор Shared , он устанавливается для класса в целом, а не для конкретного экземпляра класса. Прямой доступ к члену осуществляется через имя класса, так же как и к членам модуля.
Также классы и модули используют разные области действия для своих членов. Члены, определенные внутри класса, относятся к определенному экземпляру класса и существуют только в то время, когда существует этот объект. Для обращения к членам класса из кода за пределами этого класса следует использовать полные имена в формате Объект.Член.
С другой стороны, все объявленные в модуле члены по умолчанию свободно используются из любого места в коде, откуда есть доступ к этому модулю. Это означает, что переменные стандартного модуля являются фактически глобальными переменными. Они видимы из любой точки проекта и существуют в течение всего времени жизни программы.
Повторное использование классов и объектов
Объекты позволяют один раз объявить переменную или процедуру, а затем использовать ее везде, где потребуется. Например, если в приложении вам нужно средство проверки орфографии, то для него потребуется определить все необходимые переменные и служебные функции. Создав специальный класс для средства проверки орфографии, вы сможете использовать его снова в других приложениях, просто добавив ссылку на скомпилированную сборку. Более того, вы можете сэкономить время и силы, взяв готовый класс проверки орфографии, созданный ранее кем-то другим.
В предыдущем примере первый оператор Dim объявляет переменную объекта типа и присваивает ей объект TimeZone, который возвращается свойством CurrentTimeZone.
Отношения между объектами
Между объектами могут существовать связи нескольких видов. В первую очередь эти связи подразделяются на иерархию и вложенность.
Иерархические связи
Если классы являются производным от других, более фундаментальных классов, такие отношения именуются иерархической связью. Иерархии классов удобны при описании объектов, являющихся подтипами более общих классов.
Для следующего примера предположим, что нам нужен особый вид объекта Button, который действует как обычная кнопка Button, но в дополнение имеет метод, меняющий местами цвет фона и цвет переднего плана.
Определить класс, производный от уже существующего класса
С помощью инструкции Class определите класс, из которого вы будете создавать нужный объект.
Код определения класса должен завершаться строкой End Class . По умолчанию интегрированная среда разработки (IDE) автоматически создает End Class при вводе инструкции Class .
Сразу за инструкцией Class создайте Class . Укажите класс, производным от которого будет этот новый класс.
Новый класс наследует все члены, определенные в базовом классе.
Добавьте код для дополнительных элементов, которые будет предоставлять производный класс. Например, вы можете добавить метод ReverseColors , тогда определение производного класса будет выглядеть примерно так:
При создании объекта из ReversibleButton класса он может получить доступ ко всем членам Button класса, а также ReverseColors к методу и другим новым элементам, определенным в ReversibleButton .
Производные классы наследуют члены класса, на котором они основаны, что позволяет постепенно повышать сложность при продвижении по иерархии классов. Дополнительные сведения см. в статье Inheritance Basics (Visual Basic) (Основная информация о наследовании в Visual Basic).
Компиляция кода
Убедитесь, что компилятор сможет получить доступ к классу, на основе которого вы намерены создать новый класс. Возможно, для этого придется указать его полное имя, как в предыдущем примере, или определить его пространства имен в операторе Imports. Если класс находится в другом проекте, может потребоваться ссылка на этот проект. Дополнительные сведения см. в статье Управление ссылками в проекте.
Отношение вложения
Также объекты могут быть связаны отношением вложения. Объекты-контейнеры на логическом уровне содержат в себе другие объекты. Например, объект OperatingSystem логически содержит объект Version, который он возвращает с помощью свойства Version. Важно понимать, что физически объект-контейнер не содержит в себе других объектов.
Коллекции
В качестве примера объектов-контейнеров можно привести коллекции. Коллекции представляют собой группы однотипных перечисляемых объектов. Visual Basic поддерживает конкретный синтаксис в области For Each. Оператор Next , позволяющий выполнять итерацию по элементам коллекции. Кроме того, коллекции часто позволяют использовать свойство Item[] для обращения к элементам по индексу или по уникальной строке. Коллекции иногда проще в использовании, чем массивы, поскольку они позволяют добавлять или удалять элементы без использования индексов. Благодаря простоте использования коллекции часто применяются для хранения форм и элементов управления.
Связанные темы
Основы наследования
Описание модификаторов наследования, переопределения методов и свойств, MyClass и MyBase.
Анонимные типы
Описание создания и использования анонимных типов, которые позволяют создавать объекты без определения класса для типа данных.
Инициализаторы объектов: именованные и анонимные типы
Описание инициализаторов объектов, которые позволяют создавать экземпляры именованных и анонимных типов с помощью одного выражения.
Создает и возвращает ссылку на объект ActiveX.
Синтаксис
CreateObject(класс, [ имя_сервера ])
Синтаксис функции CreateObject состоит из следующих частей:
Часть | Описание |
---|---|
класс | Обязательный элемент, Variant (String). Имя приложения и класс создаваемого объекта. |
имя_сервера | Необязательный элемент, Variant (String). Имя сетевого сервера, где будет создан объект. Если имя_сервера является пустой строкой (""), используется локальный компьютер. |
Для аргумента класс используется синтаксис имя_приложения.тип_объекта, содержащий указанные ниже части:
Часть | Описание |
---|---|
имя_приложения | Обязательный элемент; Variant (String). Имя приложения, предоставляющего объект. |
тип_объекта | Обязательный элемент, Variant (String). Тип или класс создаваемого объекта. |
Примечания
Каждое приложение, поддерживающее автоматизацию, предоставляет как минимум один тип объекта. Например, в приложении для обработки текстов могут быть объекты Application, Document и Toolbar.
Чтобы создать объект ActiveX, назначьте объект, возвращаемый функцией CreateObject, переменной объекта.
Этот код запускает приложение, в котором создается объект, в данном случае электронная таблица Microsoft Excel. После создания объекта на него можно ссылаться в коде, используя переменную объекта. В приведенном ниже примере доступ к свойствам и методам нового объекта осуществлялся с помощью объектной переменной ExcelSheet и других объектов Microsoft Excel, включая объект Application и коллекцию Cells .
При объявлении объектной переменной с помощью предложения As Object создается переменная, которая может содержать ссылку на любой тип объекта. Однако обращение к объекту через эту переменную выполняется с поздним связыванием, то есть привязка создается при выполнении программы. Чтобы создать объектную переменную с ранним связыванием, то есть со связыванием при компиляции программы, объявите объектную переменную с определенным идентификатором класса. Например, можно объявить и создать следующие ссылки Microsoft Excel:
Ссылка с ранней привязкой может обеспечить большее быстродействие, но может содержать ссылку только на класс, указанный в объявлении.
Можно передать объект, возвращаемый функцией CreateObject, функции, которая использует объект в качестве аргумента. Например, в следующем коде создается и передается ссылка на объект Excel.Application:
Вы можете создать объект на удаленном компьютере, подключенном к сети, указав его имя в аргументе имя_сервера функции CreateObject. Это имя совпадает с именем компьютера в имени общего ресурса; для имени "\\MyServer\Public" имя_сервера будет "MyServer".
[!NOTE] > Refer to COM documentation (see _Microsoft Developer Network_) for additional information about making an application visible on a remote networked computer. You may have to add a registry key for your application.-->
Следующий код возвращает номер версии экземпляра приложения Excel, запущенного на удаленном компьютере с именем MyServer :
Если удаленный сервер не существует или недоступен, возникает ошибка во время выполнения.
Используйте функцию CreateObject, если текущий экземпляр объекта отсутствует. Если экземпляр объекта уже запущен, запускается новый экземпляр и создается объект указанного типа. Для использования текущего экземпляра или запуска приложения с одновременной загрузкой файла используйте функцию GetObject.
Если объект зарегистрировал себя как объект типа "единственный экземпляр", создается только один экземпляр этого объекта независимо от того, сколько раз выполнялась функция CreateObject.
Пример
В этом примере функция CreateObject используется для создания ссылки ( xlApp ) на Microsoft Excel. Эта ссылка используется для доступа к свойству Visible Microsoft Excel, а затем используется метод Quit Microsoft Excel, чтобы закрыть это приложение. В конце ссылка освобождается.
См. также
Поддержка и обратная связь
Есть вопросы или отзывы, касающиеся Office VBA или этой статьи? Руководство по другим способам получения поддержки и отправки отзывов см. в статье Поддержка Office VBA и обратная связь.
Creates and returns a reference to an ActiveX object.
Syntax
CreateObject(class, [ servername ])
The CreateObject function syntax has these parts:
Part | Description |
---|---|
class | Required; Variant (String). The application name and class of the object to create. |
servername | Optional; Variant (String). The name of the network server where the object will be created. If servername is an empty string (""), the local machine is used. |
The class argument uses the syntax appname.objecttype and has these parts:
Part | Description |
---|---|
appname | Required; Variant (String). The name of the application providing the object. |
objecttype | Required; Variant (String). The type or class of object to create. |
Remarks
Every application that supports Automation provides at least one type of object. For example, a word processing application may provide an Application object, a Document object, and a Toolbar object.
To create an ActiveX object, assign the object returned by CreateObject to an object variable.
This code starts the application creating the object, in this case, a Microsoft Excel spreadsheet. After an object is created, you reference it in code by using the object variable you defined. In the following example, you access properties and methods of the new object by using the object variable, ExcelSheet , and other Microsoft Excel objects, including the Application object and the Cells collection.
Declaring an object variable with the As Object clause creates a variable that can contain a reference to any type of object. However, access to the object through that variable is late bound; that is, the binding occurs when your program is run. To create an object variable that results in early binding, that is, binding when the program is compiled, declare the object variable with a specific class ID. For example, you can declare and create the following Microsoft Excel references:
The reference through an early-bound variable can give better performance, but can only contain a reference to the class specified in the declaration.
You can pass an object returned by the CreateObject function to a function expecting an object as an argument. For example, the following code creates and passes a reference to a Excel.Application object:
You can create an object on a remote networked computer by passing the name of the computer to the servername argument of CreateObject. That name is the same as the Machine Name portion of a share name; for a share named "\MyServer\Public," servername is "MyServer."
[!NOTE] > Refer to COM documentation (see _Microsoft Developer Network_) for additional information about making an application visible on a remote networked computer. You may have to add a registry key for your application.-->
The following code returns the version number of an instance of Excel running on a remote computer named MyServer :
If the remote server doesn't exist or is unavailable, a run-time error occurs.
Use CreateObject when there is no current instance of the object. If an instance of the object is already running, a new instance is started, and an object of the specified type is created. To use the current instance, or to start the application and have it load a file, use the GetObject function.
If an object has registered itself as a single-instance object, only one instance of the object is created, no matter how many times CreateObject is executed.
Example
This example uses the CreateObject function to set a reference ( xlApp ) to Microsoft Excel. It uses the reference to access the Visible property of Microsoft Excel, and then uses the Microsoft Excel Quit method to close it. Finally, the reference itself is released.
See also
Support and feedback
Have questions or feedback about Office VBA or this documentation? Please see Office VBA support and feedback for guidance about the ways you can receive support and provide feedback.
Читайте также: