Офисное программирование. Специфика и примеры
Особенности офисного программирования
В чем же специфика офисного программирования, чем оно отличается от программирования в программной среде таких языков как VB, VC++ или Delphi, ориентированных на создание программных проектов различного типа? Выделим характерные особенности:
- Среда разработки. Мощная и разнообразная среда приложений Office, в которой можно создавать документы разного типа и работать с ними. Поскольку эта среда ориентирована в первую очередь не на программистов, а на пользователей, то в ней можно создавать документы без всякого программирования. Поэтому программист обычно начинает не на пустом месте, он начинает работать с документами, их заготовками, созданными пользователями. Заметьте, что и сам программист может выступать в роли пользователя и сочетать в своей работе традиционное программирование с работой "вручную", без программирования. При программировании офисных документов сама среда представлена в виде объектов, свойства, методы и события которых доступны в языке программирования VBA.
- Совместная работа. В работе над документами Office могут естественным образом сотрудничать как программисты, так и пользователи - специалисты, работающие с документом, возможно, создающие его руками, но не занимающиеся программированием. Мне кажется, что здесь может быть преодолен всегда существовавший барьер между разработчиками программы и ее пользователями. Совместная, тесная работа над документами специалиста в некоторой предметной области и программиста-профессионала характерна для офисного программирования и реально может приводить к качественным эффектам, уменьшая время разработки этих документов и улучшая их качество. При совместной работе над документами может быть существенно сокращен типичный для программных продуктов цикл разработки, включающий такие этапы, как создание прототипа системы и его бета - тестирование.
- Цели разработки.Может быть, именно с этого пункта и следовало начинать, говоря об особенностях офисного программирования. Дело в том, что меняются цели, приоритеты, сам взгляд на сущность работы программиста, работающего в среде Office. Ранее целью программиста было создание приложения, понимаемого как программа, программный проект. Теперь программист является одним из участников (возможно единственным) создания системы документов. Документ, а не программа, становится целью разработки. Программный проект - это лишь часть документа. В Office программный проект неразрывно связан с документом, хранится, как часть документа, и не может существовать независимо от него.
- Настройка документов. Слово "Настройка" (Custom-built) является одним из ключевых слов в офисном программировании. Действительно, стандартные возможности среды по созданию и работе с документами велики. Однако, возможность настроить стандартный документ Office, сделать его "по заказу", снабдить его новыми функциями, учитывающими специфику решаемой задачи, подогнать его "под себя" это одна из важнейших особенностей офисного программирования. Настройка может быть очень простой и состоять в том, что стандартный документ получает некоторые полезные дополнительные свойства, расширяющие его возможности или внешний вид. Обычно так начинают свой путь в офисное программирование продвинутые пользователи Office. Но настройка может быть очень сложной и документ, сделанный по заказу, может ничем не напоминать обычный стандартный документ Office.
- Каркас документа.Для программиста сам Office - это ни что иное, как обычная совокупность библиотек классов. В самом этом факте нет ничего специфического. Без библиотек классов не обходится ни одна современная среда программирования. Такие библиотеки классов составляют каркас приложений (Framework Applications). Типичным примером является библиотека MFC в языке VC++. Работа программиста в такой среде начинается с создания каркаса своего приложения (Framework Application) на основе классов, выбираемых из библиотеки каркаса приложений. Заметьте, по написанию "каркас приложений" и "каркас приложения" различаются лишь одной буквой, но эти два понятия различны по своей сути. Также как и для других программных сред, библиотеки классов Office представляют собой каркас приложений, или, что может быть точнее с содержательной точки зрения, - каркас документов (Framework Documents). Эти библиотеки классов Office содержат каркасы офисных документов - текстовых документов, документов, основу которых составляют электронные таблицы, презентации, базы данных. И хотя библиотека Office 2000 и библиотека MFC не сравнимы между собой по ряду параметров, поскольку у них все-таки разные цели, но в определенной степени библиотека Office 2000 гораздо богаче библиотеки MFC. Она позволяет создавать документы самых разных типов, обладающих с момента рождения весьма широкими возможностями. Всякий раз, когда создается новый документ, его каркас по умолчанию составляют объекты библиотек, отобранных по умолчанию для построения этого конкретного каркаса документа. Но одно из достоинств офисного программирования состоит в том, что этот "каркас по умолчанию" можно существенно изменить, добавив в документ новые свойства. Для этого достаточно включить в состав каркаса соответствующие библиотеки из числа тех, что составляют каркас документов Office. Заметим, что в Office 2000 число таких дополнительно поставляемых библиотек, а, следовательно, и набор возможностей, существен вырос по сравнению c предыдущей версией. Расширение каркаса документа не требует от программиста никаких значительных усилий, достаточно в редакторе Visual Basic выбрать пункт меню References и в появившемся списке всех возможных библиотек, включить те, которые отвечают его индивидуальным потребностям.
- Язык программирования + Мир объектов. Программист, занимающийся настройкой офисных документов, как и всякий программист должен владеть языком программирования и таковым для него является язык VB. С другой стороны для офисного программиста не менее важно знать или, по крайней мере, хорошо ориентироваться в мире объектов Office, число которых выходит за пределы, доступные запоминанию. Единственно, что здесь помогает, это разумно сделанная в среде система помощи - сюда входит и браузер объектов, и справочная система, и система интеллектуальной поддержки Intellisence. Так что к программисту, занимающемуся офисным программированием, предъявляются дополнительные требования; помимо языка программирования он должен изучить мир объектов среды. Более того, крайне полезно уметь работать с этими объектами вручную так, как это делают обычные пользователи Office. Два слова хочу сказать о VBA, представляющий, как уже было сказано, язык VB, встроенный в среду Office. Заметьте, фирма Microsoft сделала революционный шаг, - она не стала создавать в среде Office 2000 собственный язык программирования, как это делалось ранее в большинстве известных сред (Oracle, FoxPro, AutoCad), а встроила в среду язык, уже известный программистам. Важно и то, что язык VBA является отчуждаемым от среды и может быть встроен в различные среды. Так что язык VBA в этом отношении становится схож с естественным языком, встраиваемым во все профессиональные области знания. Конечно, было бы совсем хорошо, если бы среда позволяла работать с любым известным языком программирования, так что программисту привыкшему работать с языком С++ или привыкшему к объектам Паскаля, принятым в Delphi, не пришлось бы переучиваться и привыкать к VBA.
-
MacroRecorder. Еще одна интересная особенность офисного программирования состоит в возможности создания программного проекта или, по крайней мере, его отдельных компонент автоматически без программирования. Эта возможность основана на использовании такого характерного для офисного программирования инструмента как MacroRecorder. MacroRecorder это транслятор действий, записывающий действия пользователя при работе вручную и транслирующий их в программу на языке VBA. Пользователь, работающий "вручную" в среде Office, видит зримые образы объектов среды абзацы в документах Word, ячейки в документах Excel, таблицы в документах Access, слайды в документах Power Point, папки в документах Outlook, формы с их элементами управления во всех этих документах и многие другие объекты. Пользователь может работать с зримыми образами этих объектов, вводить текст абзаца, задавать формулу в ячейке, работать с таблицами и папками, нажимать кнопки и выбирать элементы из раскрывающихся списков. Заметьте, реальный мир Office это мир его объектов. Пользователь не знает реального мира, он работает в мире образов, но система, как внимательный наблюдатель следит за всеми действиями пользователя и в ответ на них изменяет свойства объектов, вызывает обработчики событий, реагируя на возникающие события, вызывает методы объектов Office. Поскольку все действия пользователя транслируются в действия над объектами Office, то нетрудно, включив MacroRecorder, записать нужные действия и создать макрос программу на языке VBA, описывающую действия пользователя в терминах работы с объектами. Сегодня возможности MacroRecorder ограничены, он не очень интеллектуален и не может распознать ошибочные действия пользователя и их последующие исправления, он не может транслировать действия пользователя при его работе с целым рядом объектов, например, объектами из коллекции Shapes, встраиваемыми в документы Office 2000.
Заметьте, что MacroRecorder помимо своей основной функции играет и важную обучающую роль. Во многих случаях, когда я затруднялся понять, с какими объектами мне следует работать для решения той или иной задачи, я включал MacroRecorder, решал задачу вручную, а затем анализировал текст полученного макроса, при необходимости занимался его оптимизацией, доводя его до нужной кондиции.
К сожалению, Microsoft все в меньшей степени поддерживает MacroRecorder в своих новых разработках.
- Два крайних случая. Интересно рассмотреть два крайних случая, возникающих при работе с офисными документами. Среди всех офисных документов выделим два типа документов, которые будем условно называть документами типа "обложка" и документами типа "ручная работа". В первом случае под обложкой документа Office содержится обычный программный проект на языке VBA, не использующий, или почти не использующий обращений к объектам Office. Типичным классом таких документов могут служить игры, - карточные и другие, реализованные в Office, но никак не ориентированные на его специальные возможности. Другая причина в создании таких документов - обложек может быть еще проще. Программист привык к этой удобной среде и создает нетипичный для среды документ, используя привычный для него язык VBA. Документы типа "ручная работа" распространены в гораздо большей степени. Такими являются все документы, создаваемые пользователями Office, не использующими VBA. Большинство начинающих да и давно работающих пользователей вполне удовлетворены стандартным набором возможностей и могут даже не подозревать о тех скрытых возможностях, которые открывает для них офисное программирование. Заметьте, что подобные документы могут быть частью "серьезных проектов", когда средствами офисного программирования создается система документов для решения сложных прикладных задач. В этом и состоит мощь среды Office, что решение многих задач, возникающих в процессе деятельности организации, не требует специального программирования и может быть получено "вручную". Самым простым и типичным примером является работа с различными бланками при автоматизации деятельности офиса. Первым шагом в создании документа - бланка является его построение. Понятно, что работу по построению бланка в электронном формате проще всего и удобнее всего осуществить "вручную" в том же Excel или Word. Такие документы являются несомненной частью общей системы документов. Говоря о таких документах следует добавить, что офисный программист, чаще всего, включит MacroRecorder, фиксируя процесс создания подобного документа. Более того, он разобьет весь процесс на сравнительно небольшие шаги. Полученные макросы затем могут быть оптимизированы, унифицированы и использованы при построении подобных документов уже программным путем, избавляя квалифицированного пользователя от повторения работы, которую можно считать рутинной, коль скоро есть соответствующий макрос, решающий эту задачу. Более того, в инструментарии программиста, работающего в этой области, может быть программа, позволяющая собирать новый бланк из уже имеющихся заготовок, примерно так, как собирается "puzzle".
- Office 2000 - платформа разработчика. Спектр применения офисного программирования широк - от настройки отдельных документов до создания серьезных решений масштаба предприятия. Благодаря интеграции с семейством серверных продуктов Microsoft, интеграции с продуктами третьих фирм, целью разработки становится создание корпоративных приложений, нацеленных на совместную работу в Internet.
Подведем теперь некоторые итоги и постараемся ответить на два главных вопроса:
- Что дает офисное программирование пользователям?
- Что дает офисное программирование программистам?