Чтобы использовать VBA, необходимо иметь представление об объектной модели приложения. Модель объектов показывает структуру объектов офисного приложения и их взаимосвязи. Каждое приложение предоставляет множество взаимосвязанных объектов. Объектами являются сами приложения Application (центральный или корневой объект) и их компоненты (встроенные объекты).
Примеры объектов
MS Excel – рабочий лист
MS Access – форма Form, отчет Report
MS Word – документ Document, абзац текста Paragraph
Каждый элемент меню, каждая командная кнопка, любой элемент офисного документа являются объектами MS Office, которыми можно управлять программно.
Подробно структура объектов, синтаксис свойств и методов, перечень событий рассматриваются в справочнике по VBA (Help) соответствующего приложения. Справка по Visual Basic на рис.14.1 отражает структуру справочника VBA для MS Word. Нажатие на Microsoft Word Object Model развернет структуру объектов MS Word. В MS Excel это строка Microsoft Excel Object Model, а в MS PowerPoint строка имеет название Microsoft PowerPoint Object Model.
(рис 14.1) Структура справочника VBA MS Word
На рис.14.2 представлены два фрагмента модели объектов MS Excel: фрагмент объекта Application и фрагмент объекта Range; видна иерархическая структура объекта Range, который подчинен объекту Application.
(рис 14.2) Модель объектов MS Excel
Модель объектов отражает иерархические связи между объектами. На нулевом уровне иерархии расположен центральный объект, представляющий само приложение, которому подчинены другие объекты, составляющие первый уровень иерархии. Каждому из объектов первого и последующих уровней могут быть подчинены объекты следующего уровня и т. д. Например, в объекте Document содержатся объекты Paragraph. Доступ к объектам любого уровня возможен, если выполняется приложение, т. е. объект Application существует.
Модель объектов содержит простые объекты и коллекции объектов. Коллекция объектов (Collection) – это объект специального типа, существующий для управления объектами группы. Например, Workbooks является коллекцией всех открытых рабочих книг – объектов Workbook, а
Операторы языка могут обращаться как к отдельному элементу коллекции (к объекту Workbook или к объекту
Коллекция объектов, объединяя группу подобных объектов, является упорядоченной совокупностью объектов. Для доступа к конкретному объекту в коллекции можно использовать его имя или порядковый номер в коллекции: например, Workbooks(1) указывает на первую рабочую книгу, а
Совокупность объектов приложения определяет содержимое и функциональные возможности приложения, а конкретные объекты, их свойства и методы – позволяют получить доступ к содержимому и функциональным возможностям объекта. В общем случае свойства описывают сам объект или его содержимое, а методы позволяют управлять функциональными возможностями объекта.
Средство Object Browser предоставляет возможность просмотра и
или одноименной командой из меню View. Можно нажать клавишу F2.
Окно Object Browser (рис.14.3) отображает классы, свойства, методы, события и константы объектных библиотек и процедур проекта. Средство Object Browser не дает представления об иерархии объектов.
Окно Object Browser состоит из нескольких раскрывающихся списков и панелей (окон), каждая из которых отображает часть результата поиска. Линии разбивки, разделяющие панели этого окна, позволяют изменять их размеры.
Верхний левый список на рис.14.3 называется Projects/Libraries и содержит перечень моделей объектов и библиотек, доступных для активного проекта (рис.14.4). При выборе значения All Libraries отображаются объекты всех доступных библиотек и проектов. Объект Office этого списка содержит объекты, общие для офисных приложений.
После выбора модели объектов в окне классов появляется перечень классов. Список всегда начинается с класса globals, компоненты которого доступны во всех модулях проекта.
После выделения класса компоненты этого класса отображаются в окне справа (рис.14.3). Компоненты класса обычно упорядочены по алфавиту. Порядок сортировки изменяется командой Group Members (Компоненты группы) контекстного меню. Каждому типу компонента соответствует свой значок (см. таблицу 14.1). Подробно см. Help, статья "Icons Used in the Object Browser and Code Windows". Если для класса или для компонента класса существует программный код, соответствующая строка выделяется жирным шрифтом.
(рис 14.3) Окно Object Browser
(рис 14.4) Перечень доступных библиотек
В окне описания (нижняя панель на рис.14.3) высвечиваются краткие сведения по
В окне классов на рис.14.3 отражена модель объектов MS Excel, выделен объект Sheets,в окне компонентов перечислены свойства, методы и события коллекции Sheets и показаны сведения о методе Add этой коллекции.
| Значок | Компонент | Значок | Компонент |
|---|---|---|---|
![]() | Свойства | ![]() | Свойства по умолчанию |
![]() | Методы | ![]() | Методы по умолчанию |
![]() | События | ![]() | Константы |
![]() | Модули | ![]() | Классы |
![]() | Типы, определяемые пользователем | ![]() | Глобальные объекты |
![]() | Библиотеки | ![]() | Проекты |
![]() | Встроенные ключевые слова и типы | ![]() | Сгруппированные константы |
На панели инструментов расположены кнопки, облегчающие поиск объектов приложения (см. рис.14.3).
Go Back позволяет перейти к объекту, ранее выбранному в списке компонентов класса.
Go Forward повторяет выбор объектов в списке компонентов класса, если осуществлялся возврат к ранее выбранному объекту.
Copy to Clipboard копирует текст из окна описания после выделения нужного фрагмента, например, имени процедуры со списком формальных параметров. Если фрагмент не выделен, то копируется только название компонента. Допускается перетаскивание мышью текста из окна описания в окно модуля. Можно использовать команду Copy из контекстного меню окна описания.
View Definition помещает курсор в окно описания выделенного класса или компонента.
Search выполняет поиск библиотек, название компонентов которых соответствует образцу текста в поисковой строке Search Text. В этой строке можно вводить или выбирать искомый текст. Запоминаются значения четырех последних поисковых строк. В строке поиска допускается использование стандартных подстановочных символов. Команда Find Whole Word Only ("Только слово целиком") контекстного меню пиктограммы поиска задает поиск целых слов. Если поиск произведен успешно, то сведения о найденных компонентах размещаются на панели результатов поиска – панели Search Results. Эта панель отображает найденные библиотеки в алфавитном порядке. На рис.14.3 показан результат поиска метода Add.
Hide/Show Search Results сворачивает или раскрывает окно результата поиска соответственно.
Help переключает в справочник по VBA на статью о компоненте, высвеченном в окне описания.
Переход к редактируемой процедуре осуществляется простым щелчком мыши, если текст процедуры виден на экране. В противном случае можно закрыть окно Object Browser нажатием на кнопку закрытия окна. При этом содержание справки сохраняется до следующего вызова Object Browser.
Можно в списке проектов/библиотек выбрать название нужного проекта, и тогда в окне классов появятся компоненты проекта (рис.14.5). Двойной щелчок на имени процедуры или названии модуля (процедурного листа) переводит в редактор VB.
(рис 14.5) Перечень процедур проекта
Объекты приложения обладают определенными свойствами, методами и событиями. Свойства отражают способы хранения данных в объектах или содержат характеристики объекта. Свойства могут возвращать вложенные объекты, поддерживая таким образом иерархию объектов MS Office. Методы осуществляют действия с объектами. Многие объекты реагируют на события. Большая часть событий связана с действиями пользователя, например, открытие файла или изменение данных. Если написать программу, обрабатывающую события, то приложение будет реагировать на действия пользователя.
Различные коллекции объектов имеют общие методы и свойства, но параметры вызова методов могут различаться.
Свойства объекта делятся на две группы:
Свойства-участники позволяют получить доступ к объекту, находящемуся на любом уровне вложенности. Например, для MS Excel запись Application.ActiveWorkbook осуществляет доступ к активной рабочей книге, а запись ActiveWorkbook.ActiveSheet – к активному листу активной рабочей книги. Изменение значений терминальных свойств – это один из способов изменить внешний объекта.
Свойства имеют статус:
Статус и типы значений свойств объектов можно уточнить, используя справочную систему (Help или Object Browser). Некоторые свойства являются общими для многих объектов и для разных объектов могут иметь разный статус, как, например, свойства Height, Width, являющиеся свойствами интервалов, окон и приложения.
Свойства объектов изменяются при помощи оператора присваивания или под влиянием методов. В качестве значений свойств могут использоваться константы приложения, например, константа xlCalculationManual устанавливает ручной пересчет таблицы Excel.
Синтаксис операторов присваивания object.property=expression
Каждое свойство может принимать значения только определенного типа, например, "текстовый", "числовой" или "дата", поэтому тип результата вычисления выражения должен соответствовать типу свойства, т. е. если свойство является числовым, то и результат вычисления выражения должен быть числом или должен корректно преобразовываться в число. Например, оператор ActiveCell.Font.Bold="b" является ошибочным, так как свойство Bold имеет тип Boolean и может принимать значения только True или False (1 или 0).
При помощи оператора присваивания можно сохранить значение свойства в переменной, при этом тип переменной должен соответствовать типу значения свойства. Значение свойства может использоваться как часть условного выражения. В таких случаях говорят о возврате значения свойства.
Синтаксис оператора, возвращающего значение свойства:
variable=object.property
Методы – это действия, которые выполняются с объектом. Например, если необходимо очистить интервал ячеек, то используется метод Clear для объекта Range. Очевидно, что методы могут влиять на значения свойств, например, метод Clear изменяет свойство Value интервала ячеек, устанавливая его в Empty.
Подобно процедурам, методы могут принимать аргументы. Функции VBA и методы Application могут иметь одинаковые имена, но различные аргументы, например, функция InputBox класса Interaction и метод InputBox класса Application.
Каждый объект имеет свои собственные методы. Некоторые методы являются уникальными, а другие встречаются у нескольких объектов. Например, метод Delete может удалять графический объект и рабочий лист рабочей книги Excel.
Синтаксис вызова метода без аргументов – object.method.
Например, ActiveCell.Justify.
Синтаксис вызова метода с аргументами:
variable=object.method(arguments) – object.method arguments – операторная форма вызова (аргументы записываются через пробел после названия метода). Операторная форма вызова метода используется, если не нужно сохранять возвращаемое методом значение.Аргументы можно задавать, используя позиционное или произвольное расположение. Во втором случае используются поименованные аргументы.
Событие, например, – это нажатие командной кнопки в диалоге, закрытие или активизация окна документа.
Объекты приложения могут содержать в себе объекты разных типов. Например, рабочая книга Excel может содержать один или несколько рабочих листов и листов диаграмм. Когда объект одного типа находится внутри объекта другого типа, говорят о контейнере (container), в котором содержится объект.
Самый старший контейнер объектов – это приложение Application. Приложение в Excel суть контейнер для всех открытых рабочих книг, и в то же время оно содержит такой глобальный объект, как строка меню, который доступен любой рабочей книге. Рабочий лист представляет пример того, что объект может быть частью нескольких контейнеров или коллекций одновременно: он входит в рабочую книгу, с одной стороны, а с другой стороны – является частью коллекции Sheets и коллекции
Рассмотрение объекта в качестве контейнера позволяет уточнить, сославшись на контейнер, с каким именно объектом производится действие в процедуре. Например, для Excel, если в рабочей книге имеются два рабочих листа Sheet1 и Sheet2, то запись указывает на ячейку A1 рабочего листа Sheet1, а запись указывает на ячейку A1 рабочего листа Sheet2.
Объект в VBA указывается при помощи ссылки. Запись Workbooks ("cross"). указывает на объект Excel, являющийся листом с именем Sheet2 в рабочей книге cross, отличая его таким образом от листа с тем же именем, но в другой рабочей книге. Свойства и методы объекта указываются через точку после ссылки на объект.
Ссылка на объект состоит из имени контейнера и названия свойства-участника и может состоять из нескольких спецификаторов (имен контейнеров), отделенных друг от друга точкой. Такая запись отражает иерархию объектов и позволяет точно указать конкретный объект. Например, оператор Application.ActiveWorkbook.Close закрывает активную рабочую книгу Excel. Свойство ActiveWorkbook является свойством объекта Excel, а Application определяет активную рабочую книгу.
Для объектов Excel, относящихся к классу globals (например, активная рабочая книга, активная ячейка рабочего листа, константа), спецификатор Application можно опустить. Предыдущий оператор можно записать как ActiveWorkbook.Close. Оператор ActiveCell.Value="False" устанавливает в False значение активной ячейки, а оператор ActiveSheet.Range("A1").Value="The First" сохраняет заданное значение в ячейке A1 активного рабочего листа.
Ссылка на объект коллекции – это название коллекции, после которого в скобках указывается индекс объекта или его имя в кавычках. Например, для Excel ссылка Workbooks(1) выбирает первую из открытых рабочих книг, а Workbooks("budget") ссылается на рабочую книгу с именем "budget".
Для PowerPoint ссылка на первый объект коллекции слайдов активной презентации имеет вид ActivePresentation.Slides(1).
В VBA перед обращением к каждому из методов или свойств объекта требуется наличие ссылки на объект. Конструкция With…End With позволяет применить последовательность операторов к объекту, указав ссылку на него только один раз в операторе With. Благодаря этому программа становится менее громоздкой, освобождаясь от повторений ссылки на объект.
Синтаксис оператора:
With Object [statements] End With
Первая строка этой структуры идентифицирует объект, с которым будут производиться действия. В последующих операторах используются свойства и методы идентифицированного объекта. Каждый оператор внутри блока statements начинается с точки. Оператор End With является закрывающей скобкой для оператора With.
Чтобы получить доступ к свойствам или методам объекта, можно использовать два способа: прямое указание на объект (ссылку) и объектную переменную, которая хранит адрес, указывающий на объект. Объектная переменная занимает 4 байта.
Применение объектных переменных улучшает читабельность программы, уменьшает время выполнения программы, т. к. при каждом выполнении оператора, обращающегося к объекту, не придется проходить полную цепочку иерархии объектов.
Для получения официальных документов о завершении программы дополнительного профессионального образования (удостоверения о повышении квалификации, дипломов о профессиональной переподготовке и MBA) необходимо предоставить:
Внимание! Вы можете не заказывать доставку бумажной версии официального документы, а скачать его в электронном виде и распечатать самостоятельно. Информация о выданном документе в течение 1 месяца загружается в Федеральную информационную систему «Федеральный реестр сведений о документах об образовании и (или) о квалификации, документах об обучении» - ФИС ФРДО.
Доступ на новый сайт осуществляется с использованием адреса электронной почты, который был указан вами при регистрации на "старом". Мы постарались перенести все ваши данные с прежнего ресурса, однако не исключена вероятность потери части информации.
При возникновении проблемы со входом, воспользуйтесь функцией сброса пароля
Если вы обнаружите несоответствия, пожалуйста, сообщите нам.