Лекция Введение в модели объектов Влюбом приложении Office две основные составляющие: содержимое (content) и функциональные возможности (functionality).
Вид материала | Лекция |
СодержаниеЧто такое объекты и модели объектов Свойства и методы объектов Получение ссылки на объект Вызов свойств и методов объекта Sub FONTS() |
- Курс лекций "Базы данных и субд" Ульянов В. С. Лекция. Манипулирование реляционными, 276.31kb.
- Лекция № Тема: Основные функциональные схемы ЭВМ, 222.9kb.
- Программа Scan Disc Программа дефрагментации диска (Defrag) Архиватор Winrar пакет, 84.18kb.
- Лекция 1 Введение в Visual Basic для приложений, 129.16kb.
- Курс лекций "Базы данных и субд" Ульянов В. С. Лекция. Целостная часть реляционной, 213.79kb.
- Функциональные возможности, 34.58kb.
- Вопросы к экзамену по дисциплине «спортивная физиология», 205.39kb.
- Вные модели аптечного бизнеса и, соответственно, две основные модели поведения аптечных, 156.67kb.
- Лекция Функциональные и обеспечивающие подсистемы, 164.54kb.
- 1. Лекция: Понятие информационной безопасности. Основные составляющие. Важность проблемы, 3421.17kb.
Лекция 3. Введение в модели объектов
В любом приложении Office две основные составляющие: содержимое (content) и функциональные возможности (functionality). Содержимое – это данные, содержащиеся в документе: слова, числа, графика; информация об атрибутах отдельных элементов (размер окна документа, цвет изображения или размер шрифта того или иного слова). Функциональные возможности – это способы работы с содержимым (например: открытие, закрытие, добавление, удаление, копирование, вставка, редактирование или форматирование его элементов).
Содержимое и функциональность приложения разбиваются на дискретные единицы, называемые объектами. Некоторые объекты уже известны Вам как элементы пользовательского интерфейса: рабочие книги, рабочие листы и диапазоны ячеек Microsoft Excel; документы и разделы Word; презентации и слайды PowerPoint.
Основные темы этой лекции:
- . обзор моделей объектов;
- . автоматизация операций с использованием объектов;
- . программирование объектов другого приложения.
Что такое объекты и модели объектов
Объектом верхнего уровня является объект Application, представляющий само приложение. Например, в модели объектов Microsoft Excel таковым является сам Microsoft Excel. Объект Application содержит другие объекты, доступ к которым возможен только в тот период, когда существует объект-приложение (т. е. при выполнении приложения). Так, объект Application Microsoft Excel содержит объекты Workbook, а объект Application Word – объекты Document. Поскольку существование объекта Document зависит от существования объекта Application Word, принято говорить, что объект Document – потомок объекта Application, и наоборот, объект Application – предок объекта Document.
У многих объектов-потомков у самих есть потомки. Скажем, объект Workbook Microsoft Excel содержит набор (семейство, коллекцию, collection) объектов Worksheet (или является их предком); этот набор представляет все листы рабочей книги. У объекта-предка может быть несколько потомков – например, у объекта Window в Word есть объекты-потомки Panes, Selection и View. По аналогии и у потомка может быть несколько предков, в частности объект-набор Windows в Word – потомок как объекта Application, так и объекта Document.
Взаимосвязь объектов, составляющих приложение, вкупе с тем, как содержимое и функциональные возможности приложения распределяются между объектами, называют иерархией объектов, или моделью объектов. Графическое представление объектных моделей приложений MS Excel и MS Word представлено на рис.1. Полную информацию о структуре объектов можно получить из справочных файлов Visual Basic и Просмотрщика объектов (Object Browser). (Если при установке Office Вы выбрали режим Typical (Обычная), Вам придется запустить программу Setup еще раз и установить справочные файлы Visual Basic для приложений, в которых Вы хотите заняться программированием).
Каждый объект в иерархии включает в себя не только объекты более низких уровней, но и их содержимое и функциональность. Чем выше объект в иерархии, тем больше его содержимое и шире функциональные возможности. Например, в Microsoft Excel объект Application содержит размер окна приложения и позволяет завершить работу приложения, объект Workbook содержит имя файла и формат рабочей книги и позволяет сохранить ее, а объект Worksheet содержит имя рабочего листа и позволяет удалить рабочий лист.
С объектами приложения можно взаимодействовать двумя способами: вручную (через пользовательский интерфейс) и программно (посредством того или иного языка программирования). Пользовательский интерфейс и Visual Basic – это два способа доступа к одним и тем же содержимому и функциональности, имена многих объектов, свойств и методов совпадают с названиями элементов пользовательского интерфейса, а общая структура модели объектов напоминает структуру пользовательского интерфейса.
Это значит также, что для любой операции, которую можно выполнить через пользовательский интерфейс, существует эквивалентный код на Visual Basic. Более того, существует встроенное средство – макрорекодер – позволяющее осуществить трансляцию операций в пользовательском интерфейсе в эквивалентный код на Visual Basic.
Свойства и методы объектов
Доступ к содержимому и функциональности объекта ведется через его свойства и методы. В общем случае свойства используются для доступа к содержимому, которое может включать в себя текст, хранящийся в объекте, или значение атрибута объекта, а методы – для доступа к функциональным возможностям, под которыми понимается все, что разрешается делать с содержимым.
В примере для Microsoft Excel, приведенном ниже, свойство Value объекта Range используется для просмотра значения в ячейке ВЗ на рабочем листе Sales из рабочей книги Current.xls.
Workbooks(“Current.xls”).Worksheets(“Sales”).Range(“B3”).Value = 3
Свойство Bold объекта Font позволяет изменить начертание шрифта в ячейке ВЗ рабочего листа Sales на полужирное:
Workbooks(“Current.xls”).Worksheets(“Sales”).Range(“B3”).Font.Bold = True
А вот пример для Word, где метод Close объекта Document применяется для закрытия файла Draft3.doc:
Documents(“Draft3.doc”).Close
Объекты-наборы
Некоторые объекты могут содержать в себе несколько однотипных объектов. Например, приложение MS Excel может содержать несколько рабочих книг – объектов Workbook. В свою очередь, рабочая книга может состоять их нескольких листов – объектов Worksheet. Такие однотипные объекты объединяются в наборы (семейства, коллекции). Имя коллекции традиционно образуется добавлением буквы s к имени объекта – Workbooks, Worksheets.
Объект-набор можно использовать для доступа к отдельным объектам в наборе – обычно посредством метода или свойства Item. Свойство или метод Item в большинстве наборов используется по умолчанию:
Documents.Item(1)
Documents(1)
Documents(.имя_первого_документа.)
Вы можете также создавать и добавлять к набору новые элементы – обычно методом Add этого набора. Чтобы создать в Word новый документ на основе шаблона Normal (Обычный), напишите:
Documents.Add
Число объектов в наборе можно определить через свойство Count. В следующем примере Microsoft Excel выводит сообщение, если открыто более трех рабочих книг:
If Workbooks.Count > 3 Then MsgBox “Открыто > 3 рабочие книги”
Наборы полезны и для других целей. Они, например, позволяют выполнять операции над всеми объектами набора. Для этого Вы перебираете элементы набора с помощью операторов For Each...Next или For...Next. В следующем примере распечатываются имена всех листов рабочей книги .MyBook.xls.:
Dim Sheet As Worksheet
For Each Sheet In Application.Workbooks(.MyBook.xls.).Worksheets
Debug.Print Sheet.Name
Next Sheet
Получение ссылки на объект
Прежде чем делать что-то с объектом, Вы должны получить ссылку на него. Для этого нужно составить выражение, которое обеспечивает доступ к этому объекту; при этом ссылку на очередной объект в иерархии Вы получаете через соответствующие свойства или методы – аксессоры объектов (object accessors), или просто аксессоры. При построении выражения для доступа к объекту с помощью аксессоров имейте в виду следующее:
Чаще всего точкой входа в модель объектов служит Application – объект верхнего уровня. Поэтому выражение, которое возвращает ссылку на набор документов Word, выглядит так:
Application.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, ActiveWorkbook, ActiveWorksheet или
ActiveCell, которые возвращают ссылку на какой-либо активный элемент
приложения. Чтобы закрыть активный документ Word, не нужно ссылаться
ни на объект Application, ни на набор Documents.
ActiveDocument. Close
Вызов свойств и методов объекта
Чтобы добраться до нужных данных приложения (значения в ячейке рабочего листа 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 =
Поскольку свойство Documents глобальное, его можно использовать
без указания Application, а так как Item . свойство или метод по
умолчанию для объектов-наборов, его можно не упоминать в тексте
программы. Следовательно, предыдущий оператор можно записать короче:
Documents(1).Words(1).Text =
Аналогично, в Microsoft Excel нужно пройти весь путь до объекта Range,
который представляет ячейку ВЗ рабочего листа New из рабочей книги
Sales.xls:
Workbooks(
Объекты Range и Selection
Во всех приложениях MS Office приходится иметь дело с
последовательностями однотипных элементов. Каждой такой
последовательности соответствуют два типа объектов: один определяет сам
объект, другой . набор (коллекцию) этих элементов. Об этом мы уже
упоминали, рассматривая связь пользовательского интерфейса приложений
пакета MS Office и структуры объектов VBA.
Однако мало иметь возможность работать с отдельным элементом или всей последовательностью . нужно уметь работать с произвольм ее подмножеством. Для этой цели придуман класс Range . произвольный диапазон последовательности однотипных элементов. Использование объекта Range позволяет выполнять операции над произвольными подпоследовательностями. Напимер:
. выделение красным цветом данных в ячейках A1:F20 на активном
листе рабочей книги Excel
Dim Rg As Range
Set Rg = ActiveWorksheet.Range(.A1:F20.)
Rg.Font.Color = vbRed
. выделение .жирным. шрифтом 3-го абзаца активного документа Word
ActiveDocument.Paragraphs(3).Range.Font.Bold = True
Так как объект Range просто задает некоторый диапазон, то можно
одновременно работать с несколькими объектами Range.
Второй общеупотребительный объект, который присутствует также во
всех приложениях MS Office, - Selection. Он задает выделенную
областьдокумента или рабочей книги. В отличие от Range, в приложении
может существовать только один объект Selection.
Объекты Range и Selection взаимосвязаны. У объекта Range есть метод
Select, который выделяет заданный диапазон, создавая объект Selection.
Точно также объект Selection имеет метод Range, который позволяет
получить диапазон, связанный с выделенной областью (в основном этот
метод используется в Word). Например:
Dim Rg As Range, Rg2 As Range
Set Rg = ActiveSheet.Range(.A1:C10.,.F5:R9.) . Rg определяет несвязный диапазон
Rg.Select . выделение диапазона соответствующего Rg – при этом создается объект Selection
Dim C As Cells
For Each C In Rg.Cells . перебор всех ячеек,
попадаю_их в диапазон
C.Value = Rnd()*20
Next C
Создание объекта Application
При запуске приложения MS Word автоматически создается объект Word.Application. Аналогично, про открытии Ms Excel создается объект Excel.Application. Однако, иногда требуется одновременно работать с несколькими приложениями. С этом случае необходимо самому создать нужный объект Application и обеспечить доступ к его методам и свойствам.
Чтобы запрограммировать объекты другого приложения:
1. Создайте ссылку на библиотеку типов другого приложения в
диалоговом окне Ссылки (References) меню Сервис.
2. Объявите объектную переменную нужного типа. Ниже объявляется
одна переменная, которая будет указывать на приложение Word, а другая
. на рабочую книгу Microsoft Excel.
Dim appWD As Word.Application, wbXL As Excel.Workbook
3. Используя функцию CreateObject создайте нужный объект. После
того, как объект создан, с ним можно работать, вызывая его свойства и
методы.. Если вам нужно, чтобы на экране при этом появилось окно другого
приложения, установите свойство Visible как True.
Dim appWD As Word.Application
Set appWD = Create0bject (
appWD.Visible = True
4. Закончив работу с другим приложением, закройте его методом Quit:
appWD. Quit
Рассмотрим пример, в котором показано, как вывести на лист рабочей
книги Excel названия шрифтов, установленных в системе и образцы их
использования для вывода латинских и русских текстов. Список имен
шрифтов досупен в Word, но не в Excel. Поэтому для решения задачи в
приложениии Excel придется создать объект Word.Application.
Sub FONTS()
Dim appWord As Word.Application
Dim Str As Variant, i As Integer, Dim Sh As Worksheet
Set appWord = CreateObject(
. appWord.Visible = True
Set Sh = ActiveWorkbook.Sheets.Add
Sheets(<Шрифты>).Delete
Sh.Name = <Шрифты>
Sh.Activate
i = 1
For Each Str In appWord.FontNames
Range( + CStr(i)) = Str
Range( + CStr(i)) =
Range( + CStr(i)).Font.Name = Str
Range(
Range(
i = i + 1
Next Str
Sh.Range(
Selection.Columns.AutoFit . ширину столбцов А:С
Range(
appWord.Quit . закрыть объект Word
End Sub