Рейтинг пользователей: / 2
ХудшийЛучший 

Косолап А. И.

ОСНОВЫ ОФИСНОГО ПРОГРАММИРОВАНИЯ И ДОКУМЕНТЫ EXCEL

Днепропетровский национальный университет

 

This article describes a programming in MS Excel App.

Key words: Excel Object Model; Early and Late Binding.

В этой статье описано программирование в среде Excel.

Ключевые слова: объектная модель Excel; раннее и позднее связывание. 

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

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

Широкая популярность данного табличного редактора обусловлена не только тем, что он используется на самых популярных операционных системах Microsoft и Mac OS, но и тем, что в среде Excel используется популярный язык макропрограммирования VBA (Visual Basic для приложений), позволяющий расширить возможности в несколько раз.

Используя Excel, неоднократно бывают ситуации, когда для осуществления определенной операции необходимо выполнить множество действий однообразного характера. Именно в этом случае и применяются средства макропрограммирования. Макрос упрощает использование программы и ускоряет получение результатов. Благодаря подобной функции многие, кто часто вынужден работать в Excel и выполнять сложные операции, имеют сформированные макросы практически для всех задач.

Excel, по-видимому, является основным приложением, которое используют программисты для создания офисных документов. Программист, работающий в Excel, должен свободно ориентироваться в мире его объектов. Мощь офисного программирования определяется тем, что изначально в распоряжении программиста находится большое число уже готовых объектов.

В объектной модели Excel, как и других приложений Office, объекты связаны между собой отношением встраивания. На нулевом уровне иерархии существует некоторый центральный объект, в который встроены другие объекты, составляющие первый уровень иерархии. В каждый из объектов первого и последующих уровней могут быть встроены объекты следующего уровня. Так этот процесс продолжается.

Для выполнения большинства операций в MS Excel применяются следующие объекты.

  • Excel.Application (Приложение) - объект, представляющий приложение Microsoft Excel, аналогичен Word.Application.
  • Workbook (Рабочая книга) - представляет рабочую книгу - аналог документа Microsoft Word. Однако в Word мы работаем с данными, расположенными в документе, а в Excel на пути к данным есть еще один объект - рабочий лист.
  • Worksheet (Рабочий лист) - книга в MS Excel разбита на рабочие листы. Именно на листе расположены ячейки, которые могут хранить информацию и формулы.
  • Range (Диапазон) - может быть представлен в виде одной ячейки или группы ячеек. Этот объект заменяет множество объектов для работы с элементами документов (character, word и т.д.), которые применяются в Microsoft Word. В результате работа с листом становится очень четкой и удобной - чтобы работать с какой-либо ячейкой, надо знать лишь ее имя (в формате A1) или адрес (R1C1).
  • QueryTable (Таблица запросов) - этот объект используют для импорта в Microsoft Excel информации из баз данных. Подключение к базе данных, запрос информации и т.д. производятся средствами объекта, а итоги запроса выгружаются на лист MS Excel в виде обычной таблицы.
  • PivotTable (Сводная таблица) - это особый вид электронной таблицы Excel - она позволяет в интерактивном режиме обобщать и анализировать большие объемы информации, в частности, взятой из базы данных.
  • Chart (Диаграмма) - представляет собой диаграмму. Обычно их используют для визуализации данных.

Объект Excel.Application задает приложение Excel. Когда корневой объект Application создан и доступен, то автоматически становятся доступными все вложенные в него объекты, так что теперь с приложением можно работать в обычном режиме, вызывая свойства и методы его объектов. Например, свойство Workbooks этого объекта возвращает все открытые в приложении рабочие книги, свойство Windows, возвращает открытые окна, свойства, такие как CommandBars, возвращают объекты интерфейса.

Эффективность работы в среде Office во многом определяется возможностью совместной работы его приложений. С программистской точки зрения это означает, что в документе одновременно определены несколько объектов Application, задающих совместно работающие приложения. Давайте рассмотрим, как обеспечивается такая возможность. При открытии какого-либо из приложений, например, документа Excel по умолчанию считается определенным соответствующий объект Application, а, следовательно, и все объекты, в него вложенные. Более того, определены и все объекты, входящие в каркас документа, построенный по умолчанию.

Если мы хотим обеспечить совместную работу приложений, например, Word, Excel и Access, то можно начинать работу с открытия документа любого из этих приложений, и тогда корневой объект Application этого приложения будет доступен автоматически. Остальные объекты Application необходимо подключить к уже открытому документу. Пусть для определенности мы открыли документ Word и хотим подключить Excel и Access. Вот, что для этого нужно сделать:

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

При объявлении объектов возможны варианты. При этом следует помнить, что объекты в VBA задаются с помощью указателей. Рассмотрим три возможных варианта объявления:

1.  Dim MyXlApp As Object, MyAcApp As Object 

Этот вариант задает так называемое позднее связывание. На этапе объявления известно, что переменные являются объектами, а точнее, указателями на объекты, но еще не известно с объектами какого класса они будут связаны. Это станет известно динамически, в ходе выполнения программы, когда реально будет создан объект - экземпляр соответствующего класса и наш указатель получит на него ссылку. Для программиста эти переменные являются нетипизированными указателями.

2.  Dim MyXlApp As Excel.Application, MyAcApp As Access.Application 

Это объявление задает раннее связывание. Наши переменные теперь представляют собой типизированные указатели. И уже на этапе объявления известно, что в дальнейшем они будут связаны с объектами соответствующего класса. Чтобы при этом объявлении не возникло конфликтов, конечно же, необходимо предварительно подключить соответствующую библиотеку. Важно также понимать, что на этапе объявления память выделена только указателям. Сами объекты еще не созданы, и потому значения указателей не определены. Объекты еще предстоит создать по ходу выполнения программы и указатели должны быть связаны с ними.

3.  Dim MyXlApp As New Excel.Application, MyAcApp As New Access.Application 

В этом случае раннее связывание реализуется в полном объеме. Создается указатель, благодаря спецификатору New создается сам объект, и указатель получает ссылку на вновь созданный объект.

Эти три варианта характерны не только при работе с объектами Application, а во всех случаях работы с объектами. Конечно же, в большинстве случаев предпочтительнее третья конструкция, когда создание объекта и указателя совмещаются в одном операторе. Не все приложения допускают конструкцию New для создания ActiveX объектов, каковыми являются объекты Application. В ряде случаев для создания ActiveX объектов, хранящихся в отдельных файлах, следует использовать метод CreateObject, первый параметр которого задает имя класса объекта. Этот метод следует выполнить в нужный момент, связав заодно указатель с вновь созданным объектом. Например,

Set MyXlApp = CreateObject ("Excel.Application")

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

 

Литература:

1.  Джон Уокенбах, Excel 2010: профессиональное программирование на VBA – Вильямс, 2011. – 944 с.

2.  Джон Уокенбах, Формулы в Microsoft Excel 2010 – Диалектика, 2011. – 704 с.

 
Секции-декабрь 2011
КОНФЕРЕНЦИЯ:
  • "Современные проблемы и пути их решения в науке, транспорте, производстве и образовании'2011"
  • Дата: Октябрь 2011 года
  • Проведение: www.sworld.com.ua
  • Рабочие языки: Украинский, Русский, Английский.
  • Председатель: Доктор технических наук, проф.Шибаев А.Г.
  • Тех.менеджмент: к.т.н. Куприенко С.В., Федорова А.Д.

ОПУБЛИКОВАНО В:
  • Сборник научных трудов SWorld по материалам международной научно-практической конференции.