Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
SrrazOffpril_Vecher.rtf
Скачиваний:
9
Добавлен:
18.09.2019
Размер:
1.9 Mб
Скачать

2.2. Автоматизация операций с использованием объектов

Чтобы автоматизировать операцию в Microsoft Excel, следует сначала получить ссылку на объект с соответствующими содержимым и функциональностью, а затем воспользоваться его свойствами и методами.

2.2.1. Получение ссылки на объект

Прежде чем делать что-то с объектом, необходимо получить ссылку на него. Для этого необходимо составить выражение, которое обеспечивает доступ к этому объекту; при этом ссылку на очередной объект в иерархии можно получить через соответствующие свойства или методы – аксессоры объектов (object accessors), или просто аксесоры. При построении выражения для доступа к объекту с помощью аксессоров следует иметь в виду:

  • чаще всего точкой входа в модель объектов служит объект верхнего уровня, каковым обычно является объект Application. Чтобы получить ссылку на него, используется свойство Application;

  • чтобы после этого перейти к необходимому объекту, нужно последовательно пройти все «вышестоящие» объекты, получая ссылку на очередной объект с помощью аксессоров. Например, свойство Documents объекта Application в Word возвращает объект-набор Documents, представляющий все открытые документы;

  • существует другой вид аксессоров – сокращенный; они обеспечивают прямой доступ к объектам модели, не требуя «спуска» от объекта Application. К таким объектам относятся свойства Documents, Workbooks и Presentations, которые позволяют напрямую получить ссылку на набор документов данного приложения. Поэтому для открытия в Word документа MyDoc.doc можно использовать любое из выражений:

Application.Documents.Open FileName := “C:\DOCS\MYDOC.DOC”

Documents.Open FileName := “C:\DOCS\MYDOC.DOC”

Есть и другие сокращенные аксессоры, например, свойства ActiveWindow, ActiveDocument, ActiveWorsheet или ActiveCell, которые возвращают ссылку на какой-либо активный элемент приложения. Например, оператор, приведенный ниже, закрывает активный документ Word. Здесь не упоминаются ни объект Application, ни объект-набор Documents:

ActiveDocument.Close

В качестве сокращенных можно использовать любые аксессоры, содержащиеся в списке Members Of (Компонент) окна Object Browser (Просмотр объектов), когда в списке Classes (Классы) выбрана строка <global> (<глобальные>). Иначе говоря, перед их применением не нужно получать ссылку на объект, к которому они относятся, - Visual Basic определяет это сам по текущему контексту выполнения кода;

  • многие объекты – рабочие книги, рабочие листы, документы, презентации, слайды – являются элементами наборов. Поскольку набор всегда стоит в иерархии на один уровень выше находящихся в нем объектов, то обычно, чтобы получить доступ к элементу набора, следует сначала получить ссылку на набор. Имя аксессора, возвращающего ссылку на объект-набор, часто совпадает с именем набора;

  • чтобы получить ссылку на отдельный элемент набора, обычно используют свойство или метод Item, которому передают имя или порядковый номер данного элемента. Свойство или метод Item в большинстве наборов применяется по умолчанию;

  • переход к объекту, стоящему в иерархии на ступеньку выше, зачастую возможен через свойство Parent текущего объекта. Но оно не всегда возвращает ссылку на прямого предка объекта – иногда можно получить ссылку на его «прапредка» (особенно, если этот объект входит в какой-нибудь набор). Иными словами, свойство Parent объекта из набора может возвращать ссылку на предка набора, а не на сам набор. Например, свойство Parent объекта Document в Word возвращает ссылку на объект Application, а не на набор Documents. Чтобы определить тип объекта, ссылку на который возвращает свойство Parent, необходимо вызвать функцию TypeName. Например, в Microsoft Excel следующий оператор сообщает тип объекта, возвращаемого свойством Parent объекта Worksheet:

MsgBox TypeName(Workbook(1).Worksheets(1).Parent)

Функция TypeName позволяет определять тип объекта, полученного в любом выражении, а не только в тех, где используется свойство Parent;

  • для перехода от какого-либо объекта к объекту Application, стоящему на вершине иерархии, часто используется свойство Application. Оно особенно полезно, если необходимо добраться до объектов приложения, в котором был создан внедренный объект. Например, в Power Point следующее выражение возвращает ссылку на объект Application того приложения, в котором создан OLE-объект, размещенный в третьей фигуре (shape) первого слайда текущей презентации:

ActivePresentation.Slides(1).Shapes(3).Object.Application

2.2.2. Вызов свойств и методов объекта

Получив ссылку на нужный объект, можно установить атрибуты этого объекта или выполнить над ним какие-то операции, используя его свойства и методы. При этом точка (.) отделяет выражение, возвращающее ссылку на объект, от имени свойства или метода объекта. Следующий оператор – он будет работать в Microsoft Excel, Word и Power Point – устанавливает левый край активного окна через свойство Left объекта Window, ссылку на который возвращает свойство ActiveWindow:

ActiveWindow.Left = 200

Свойства и методы могут принимать аргументы, управляющие их поведением. Например, в Word метод PrintOut объекта Document, ссылку на который возвращает свойство ActiveDocument, принимает аргументы, определяющие диапазон распечатываемых страниц:

ActiveDocument.PrintOut From := “3”, To := “7”

Чтобы добраться до нужных данных приложения (значения в ячейке рабочего листа Microsoft Excel или текста в документе Word), необходимо пройти несколько уровней модели объектов. В примере для Word, приведенном ниже, для перехода от объекта верхнего уровня к тексту документа используются такие свойства и методы:

  • свойство Application – возвращает ссылку на объект Application;

  • свойство Documents объекта Application – возвращает ссылку на набор Documents;

  • метод Item набора Documents – возвращает ссылку на отдельный объект Document;

  • свойство Words объекта Document – возвращает ссылку на набор Words;

  • свойство Item набора Words – возвращает ссылку на отдельный объект Range;

  • свойство Text объекта Range – записывает текст как первое слово в документе.

Application.Documents.Item(1).Words.Item(1).Text = “The”

Поскольку свойство Documents глобальное, его можно использовать без указания Application, а так как Item – свойство или метод по умолчанию для объектов-наборов, его можно не упоминать в тексте программы. Следовательно, предыдущий оператор можно записать иначе, и при этом новый оператор будет неявно делать то же, что предыдущий – явно:

Documents(1).Words(1).Text = “The”

2.2.3. Инструментальные средства Visual Basic

В большинстве случаев определить нужный объект, свойство или метод достаточно сложно, но в приложениях Office предусмотрен ряд инструментальных средств, которые могут помочь при формировании программы для выполнения необходимых операторов. К таким инструментальным средствам можно отнести запись макроса. Данная операция транслирует последовательность действий с пользовательским интерфейсом в набор инструкций Visual Basic. Хотя полученный таким образом код дает представление о необходимых свойствах или методах, все же не стоит его использовать без редактирования, так как код, генерируемый при записи макроса, не слишком эффективен и надежен. Часто код, полученный при записи макроса, работает корректно лишь в том случае, если выделен или активизирован определенный объект. Код будет надежнее и гибче, если проход по модели объектов в нем не начинается с выделенного или активизированного объекта. Чтобы улучшить записанный код, можно воспользоваться справочной системой Visual Basic для любого приложения Office, которая содержит разделы по каждому объекту, свойству, методу и событию в модели объектов. Для того, чтобы по имени объекта определить его содержимое и функциональность, необходимо его активизировать и открыть раздел справочной системы с подробной информацией о нем. Разделы справочной системы, посвященные конкретным объектам, содержат:

  • схему (в верхней части раздела), отражающую наиболее значимые объекты, расположенные непосредственно выше и ниже данного объекта в иерархии (модели объектов). Активизировав любой объект на схеме, можно получить подробную информацию о нем;

  • описание содержимого и функциональных возможностей объекта;

  • инструкции и примеры, поясняющие, как добраться до этого объекта в иерархии и работать с его свойствами и методами. Код из раздела справочной системы можно копировать в свою программу;

  • гипертекстовые ссылки в верхней части раздела, с помощью которых можно открывать списки свойств и методов объекта.

В разделах справочной системы по отдельным свойствам или методам описывается содержимое или функциональность, доступ к которым обеспечивает конкретное свойство или метод, а также приведены ссылки на примеры их использования. Можно скопировать код из раздела справочной системы (в буфер обмена) и вставить его в свой модуль.

У каждого приложения office есть файл – библиотека объектов или библиотека типов; в нем содержится информация об объектах, свойствах, методах, событиях и встроенных константах, предоставляемых данным приложением. Для просмотра содержимого файла и описываемой им модели объектов можно использовать средство просмотра объектов – Object Browser. Для просмотра полного списка объектов из всех библиотек, на которые есть ссылки, предусмотрена строка верхнего списка <All Libraries> (<Все библиотеки>), а для просмотра объектов из отдельной библиотеки следует выбрать в том же списке строку, содержащую название соответствующего приложения. Если такая библиотека отсутствует в списке, необходимо создать ссылку на нее в диалоговом окне References (Ссылки), которое открывается одноименной командой из меню Tools (Сервис).

В списке Classes (Классы) отображаются имена объектов и перечислимых типов из всех библиотек, на которые есть ссылки. Класс – это тип, или описание объекта, а объект – фактический экземпляр класса. Активизировав имя объекта в списке Classes (Классы), в списке Members Of (Компонент) отображаются все свойства, методы и события, связанные с данным объектом. Событие – это действие, распознаваемое объектом, например, щелчок мыши или нажатие клавиши. Активизировав имя свойства или метода в списке Members Of (Компонент), можно получить справку по выделенному ключевому слову с помощью кнопки F1 или в нижней секции окна Object Browser (Просмотр объектов), в которой сообщается синтаксис, тип свойства («только чтение» или «чтение/запись»), имя библиотеки, к которой относится объект, и тип данных, возвращаемых свойством или методом. Если какое-то слово в нижней секции выделено зеленым цветом и подчеркнуто, значит это ссылка, с помощью которой можно получить более подробную информацию. Ссылки позволяют выяснить, как добраться до того или иного объекта. Нижняя секция полезна и тех случаях, когда неизвестен точный синтаксис – имена и порядок аргументов – данного свойства или метода, а также какие аргументы необязательны.

При наличии ссылок на несколько библиотек, содержащих определенные объекты, в диалоговом окне Object Browser (Просмотр объектов) появляются дублирующие друг друга имена – если в верхнем списке выбрана строка <All Libraries> (<Все библиотеки>). Различить дубликаты можно, выделив одни из них и обратившись к нижней секции окна, где будет показано, к какой библиотеке относится выделенное ключевое слово.

В среду разработки встроено множество средств, помогающих писать выражения и операторы Visual Basic. Для включения и отключения этих средств в редакторе Visual Basic (Microsoft Excel, Word или Power Point) следует пометить (снять пометку) соответствующие флажки (таблица 2.1) в разделе Code Settings (Параметры программирования) на вкладке Editor (Редактор) диалогового окна Options (Параметры), которое открывается с помощью одноименной команды мены Tools (Сервис).

Таблица 2.1

Назначение флажков диалогового окна Options (Параметры)

Параметр

Действие

Auto Syntax Check (Проверка синтаксиса)

Указывает Visual Basic, надо ли автоматически проверять синтаксис после ввода очередной строки кода

Require Variable Declaration (Явное описание переменных)

Определяет, требуется ли явное объявление переменных в модулях. Если этот флажок активен, в раздел общих объявлений каждого нового модуля автоматически вставляется оператор Option Explicit

Auto List Member (Список компонентов)

Открывает список и информацией, которая позволяет логически закончить оператор в текущей позиции курсора ввода

Auto Quick Info (Краткие сведения)

Выводит информацию о функциях и их параметрах в процессе набора текста

Auto Data Tips (Подсказки значений данных)

Отображает значение переменной, поверх которой находится курсор мыши. Это средство действует только при пошаговом исполнении программы

Auto Indent (Автоотступ)

При нажатии клавиши Enter автоматически повторяет отступ предыдущей строки. Таким образом, все последующие строки сдвигаются вправо на одно и то же расстояние. Для удаления автоотступов используется клавиша Backspace

Tab Width (Интервал табуляции)

Устанавливает размер табулятора в диапазоне от 1 до 32 пробелов (по умолчанию – 4)

Эти инструменты автоматически отображают информацию и предоставляют соответствующие варианты выбора на каждом этапе ввода выражения или оператора. Кроме того, в построении выражений в любой момент помогут такие команды в контекстном меню для модуля, как List Properties/Methods (Список свойств/методов), List Constants (Список констант), Quick Info (Сведения), Parameter Info (Параметры) или Complete Word (Завершить слово).

Когда в одном приложении создается объектная переменная, ссылающаяся на объект другого приложения, Visual Basic должен проверить, что этот объект существует, и что его свойства и методы заданы правильно. Такая проверка называется связыванием (binding). Связывание может проходить в период выполнения программы (позднее связывание) или на этапе компиляции (ранее связывание). Программа с поздним связыванием выполняется медленнее, чем программа с ранним связыванием. Кроме того, многие вспомогательные средства, встроенные в среду разработки, работают только при использовании раннего связывания.

Чтобы добиться раннего связывания кода, необходимо:

  • установить ссылку на библиотеку типов, содержащую используемые объекты. Это осуществляется с помощью диалогового окна References (Ссылки);

  • объявить тип объектных переменных в явном виде. Например, если в объектной переменной будет ссылка на объект Document, объявить переменную следует следующим образом:

Dim wdObject As Document

Не следует объявлять ее как универсальный тип Object:

Dim wdObject As Object

  • если в программе используются объекты из нескольких библиотек типов, то при объявлении объектной переменной указывается имя приложения (особенно если в этих библиотеках есть одноименные объекты):

Dim wndXL As Excel.Window

Dim wndWD As Word.Window

Если свойство или метод, применяемые для получения ссылки на объект, возвращают не конкретный объектный тип, а универсальный тип Object, следует пойти на дополнительные меры, чтобы гарантировать для программы раннее связывание и возможность работы со средствами, помогающими в написании операторов. Например, в Microsoft Excel метод Item объекта Worksheets возвращает тип Object, а не Worksheet, поэтому следует явно объявить переменную типа Worksheet и присвоить ей значение выражения, возвращающего ссылку на объект Worksheet:

Dim testWS As Worksheet

Set testWS = Workbooks(1).Worksheets(1)

После ввода объектной переменной и следующей за ним точки, команда List Properties/Methods (Список свойств/методов) предложит на выбор свойства и методы объекта Worksheet, на который ссылается эта переменная.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]