- •Объекты Excel
- •Объектная модель Excel
- •Объект Excel Application
- •Терминальные свойства
- •Методы объекта Application
- •События объекта Excel.Application
- •Создание объекта Application, реагирующего на события
- •Пример обработки события Change
- •Объект Workbook
- •Свойства-участники объекта Workbook
- •Группа свойств, возвращающих основные объекты рабочей книги. К ним я отношу следующие свойства:
- •К третьей группе относятся свойства, возвращающие объекты, специфические для рабочих книг Excel. К ним относятся:
- •Изменения в объектной модели объекта WorkSheet
- •Методы - "незнакомцы"
- •Методы – свойства
- •События объекта Worksheet
- •Объекты Range и Selection
- •Смещение и свойство Offset
- •Методы объекта Range
Объектная модель Excel
Прежде всего, несколько слов о том, как устроена объектная модель Excel и других приложений Office 2000. В этой модели объекты связаны между собой отношением встраивания. На нулевом уровне иерархии существует некоторый центральный объект, в который встроены другие объекты, составляющие первый уровень иерархии. В каждый из объектов первого и последующих уровней могут быть встроены объекты следующего уровня. Так это процесс продолжается. Таким образом, объекты в этой модели «толстые», поскольку в них встроено большое число других объектов. В особенности это касается объектов, стоящих на верхних уровнях иерархии.
…
Формально встраивание реализуется с помощью свойств объектов. Свойства могут быть как терминальными, не являющимися объектами, и так называемыми свойствами – участниками, которые возвращают объекты при их вызове.
Давайте перейдем к рассмотрению библиотеки объектов Excel 9.0 и начнем с центрального объекта этой библиотеки – Excel.Application.
Объект Excel Application
Объект Excel.Application задает приложение Excel. А посему свойства, методы и события этого объекта должны характеризовать приложение в целом. Понятно, что у этого объекта должно быть свойство Workbooks, возвращающее все открытые в приложении рабочие книги, свойство Windows, возвращающее открытые окна, свойства, такие как CommandBars, возвращающие объекты интерфейса, и другие подобные свойства. Методов и событий, характерных для всего приложения в целом, по-видимому, не так уж и много. Так что, казалось бы, структура этого объекта должна быть достаточно простой. Однако реально это не так, - у объекта Excel.Application очень большое число свойств, методов и событий, что не позволяет мне описать их полностью, да и нет в этом особого смысла. Объект Excel.Application, на мой взгляд, явно перегружен, многие его свойства и методы без всякого ущерба можно было бы исключить, поскольку они оперируют с объектами, стоящими на более низких уровнях иерархии и не имеют прямого отношения ко всему приложению в целом. Приведу лишь один пример. Первое по алфавиту свойство ActiveCell возвращает объект, задающий активную ячейку. Понятно, что речь идет об активной ячейке активной страницы активной рабочей книги. Непонятно только, зачем нужно было добавлять это свойство самому приложению. Вполне достаточно, чтобы им обладал объект WorkSheet, задающий страницу книги. Более того, если в момент вызова свойства ActiveCell нет активной страницы с ячейками, то возникнет ошибка, чего не происходит, если активную ячейку вызывает объект WorkSheet. Примеров подобной перегруженности объекта Application можно привести много. Я в своем описании объектов верхнего уровня не всегда буду упоминать такие свойства, полагая, что лучше рассказать о них там, где они необходимы по существу.
Общие объекты и Excel.Application
Давайте начнем рассмотрение со свойств объекта Excel.Application , возвращающих уже знакомые нам общие объекты:
Таблица 1 Общие объекты, доступные в Excel.Application
Свойство, возвращающее объект |
Назначение объекта |
Библиотека |
Assistant |
Помощник, позволяющий организовать собственную диалоговую систему. |
Office |
Answer Wizard |
Мастер Ответов, стоящий за спиной Помощника. Может использоваться при создании собственной справочной системы. |
Office |
Com AddIns |
Коллекция компонент, общих для приложений Office 2000. |
Office |
CommandBars |
Коллекция инструментальных панелей, без работы с которой не обойтись при создании собственного интерфейса документа Excel. |
Office |
FileSearch |
Объект, используемый при поиске файлов |
Office |
Language Settings |
Объект, задающий языковые предпочтения, общие для приложений Office 2000. |
Office |
Debug |
Объект, используемый при отладке программных проектов. |
VBA |
VBE |
Корневой объект при работе с программными проектами. |
VBA |
Все объекты, приведенные в этой таблице, играют важную роль при программной работе с документами Excel, как, впрочем, и с другими документами Office 2000.
Свойства – участники объекта
Рассмотрим теперь свойства - участники объекта Excel.Application, возвращающие объекты, специфические для Excel, Как я и предупреждал, я рассмотрю лишь основные свойства, которые действительно необходимы при работе с объектом Excel.Application.
Таблица 2 Основные свойства – участники
Свойство, возвращающее объект |
Назначение объекта |
WorkBooks |
Коллекция открытых в Excel документов – рабочих книг. Основной объект, благодаря которому можно получить доступ к любому документу Excel и далее работать с объектами этой рабочей книги. |
Windows |
Коллекция открытых окон во всех рабочих книгах. Дело в том, что одну и ту же рабочую книгу часто полезно открывать в нескольких окнах, что позволяет видеть разные участки рабочей книги. Коллекция Windows позволяет получить доступ к каждому такому окну. Чаще всего, свойство Windows используется при работе с объектом WorkBook, для объекта Application это один из примеров той перегрузки, о которой я упоминал выше. |
WorkSheetFunction |
Объект – контейнер, в котором находятся многочисленные функции Excel, начиная от обычных математических функций и кончая функциями, применяемыми для решения задач статистики, прогноза, работы с датами и прочими. |
AddIns |
Коллекция компонент, расширяющих возможности решения специальных задач в Excel. |
AutoCorrect |
Знакомый по приложению Word объект, позволяющий задавать автоматическую корректировку набираемых текстов в ячейках Excel. |
DefaultWebOptions |
Объект, позволяющий устанавливать параметры для документов Excel, сохраненных в виде Web-страниц. Схож с аналогичным объектом Word.Application, но имеет свою специфику. |
Dialogs |
Объект Dialogs также как и три предыдущих объекта – AddIns, AutoCorrect, DefaultWebOptions относится к группе схожих объектов, встречающихся в каждом из приложений Office 2000, имеющих много общего, но имеющих и отличия, связанные со спецификой приложения. Также как и в Word, объект Dialogs задает коллекцию стандартных диалоговых окон, которые могут открываться в Excel, позволяя организовать диалог с пользователем. |
Names |
Одно из перегруженных свойств, возвращающее коллекцию всех имен, используемых для отдельных ячеек и областей всех открытых документов Excel. Чаще всего, это свойство используется при работе с отдельной рабочей книгой или отдельной страницей. |
ODBCErrors |
Коллекция объектов класса ODBCError. Элементы этой коллекции создаются автоматически источником ODBC–данных, если при выполнении запроса на получение данных возникли ошибки. Если ошибок не было, то и коллекция будет пустой. |
OLEDBErrors |
Коллекция объектов класса OLEDBError. Аналогично предыдущей коллекции, ее элементы появляются при наличии ошибок в процессе работы с базой данных, когда используется интерфейс OLE DB. |
RecentFiles |
Объект, относящийся к группе схожих объектов семейства Office 2000. Он задает коллекцию файлов, хранящих документы Excel последнего использования. |
Основное содержание этой главы будет связано с рассмотрением коллекции Workbooks, а точнее с объектом Workbook и вложенными в него объектами. Но прежде чем двинуться далее, приведу все-таки краткий обзор тех вложенных в Excel.Application объектов, доступных на этом уровне, по сути, относящихся к нижним уровням иерархии объектной модели Excel:
Группа активных объектов – ActiveWorkbook, ActiveWindow, ActiveSheet, ActiveChart, ActiveCell, ActivePrinter, - возвращающих активную рабочую книгу, окно, активную рабочую страницу, диаграмму или ячейку, если таковые существуют в момент вызова соответствующего свойства. При отсутствии запрашиваемого активного объекта возникнет ошибка. Все эти объекты будут подробно рассмотрены, но чуть позже, когда мы спустимся вниз по иерархии объектов. Особняком стоит свойство, возвращающее активный принтер. Это свойство действительно имеет смысл связать с приложением. Заметьте, что объекты, стоящие на нижних уровнях иерархии, например, Workbook, этим свойством не обладают, так что добраться до принтера можно только через объект Application.
Группа коллекций и объектов Range, входящих в состав соответствующего активного объекта – Sheets, Charts, Rows, Columns, Cells, Range - возвращающие соответственно коллекции рабочих страниц, страниц диаграмм активной рабочей книги, объект Range, содержащий все строки, столбцы, ячейки или заданную область активной рабочей страницы. Также как и в случае вызова объектов предыдущей группы, при вызове этих свойств следует быть осторожным, поскольку возникает ошибка, если нет соответствующего активного объекта.
Свойство Selection возвращает выделенный объект в активном окне. Тип возвращаемого объекта зависит, от текущего выделения. Возвращается Nothing, если в активном окне нет выделенного объекта.
Свойство ThisWorkbook возвращает текущую рабочую книгу, содержащую выполняемый макрос, один из операторов которого и вызвал это свойство. Это свойство представляет единственный способ добраться до рабочей книги, содержащей компонент AddIn, изнутри макросов, составляющих этот компонент.