MS Office 97 - новый этап в развитии офисных систем

Появление три года назад MS Office 97 стало своеобразным рубежом в развитии семейства офисных продуктов Microsoft: впервые пакет был представлен как единая платформа для создания бизнес-приложений, ориентированных на решение специализированных задач пользователей (см. PC Week/RE, № 25/97, c. 33). Такое позиционирование MS Office подчеркивалось, в частности, наличием в нем специального выпуска для разработчиков - Developer Edition.

Поначалу мысль об использовании офисных приложений в качестве средства разработки казалась многим довольно странной, но спустя некоторое время она уже воспринималась как вполне логичная. Свидетельством тому стало появление значительного числа коммерческих и внутрифирменных решений, реализованных на базе MS Office, а также использование Visual Basic for Applications (VBA) и принципов объектной модели MS Office в продуктах независимых разработчиков (см. PC Week/RE, № 40/99, с. 3).

Итак, тезис о позиционировании MS Office 97 как платформы разработки был в целом принят программистами и пользователями. Но, как известно, серьезное восприятие нового продукта рынком начинается только после выпуска его “второй версии”. Именно этим объясняется интерес разработчиков к MS Office 2000 и изучению его новшеств.

MS Office 2000 обыкновенный и для разработчиков

В MS Office 2000 увеличилось количество отдельных приложений и расширилось число вариантов пакета (Standard, Small Business, Professional и Premium). Однако эти редакции отличаются друг от друга только составом приложений, а функциональность каждой отдельной программы (например, Word) одинакова во всех модификациях. В России все эти продукты распространяются в русскоязычных версиях.

Особняком стоит редакция Developer. Она содержит вариант Premium (четыре компакт-диска), дополнительные средства для разработчика (один компакт-диск) и внушительную электронную документацию MSDN Library (три диска) - но все только на английском языке.

Сразу уточним: все выпуски MS Office 2000 включают VBA и ряд других средств программирования, которых будет вполне достаточно для большинства разработчиков. Расширения версии Developer реально понадобятся тем, кто занимается созданием профессиональных приложений. Хотя возможно, что такие дополнения у них уже имеются или их можно приобрести и не у Microsoft.

Что нового в “обычном” MS Office

Самое главное - расширилось число приложений, использующих единый механизм программирования и среду VBA: к Excel, PowerPoint и Word добавились Access, Outlook и FrontPage. Напомним, что в версии 97 программа Outlook имела объектную модель, которой можно было управлять только извне с помощью, например, VB или VBScript, а Access 97 использовала собственный вариант Basic и среды разработки.

Мы сейчас не будем подробно останавливаться на новшествах Access 2000, так как в отличие от других офисных приложений оно изначально было инструментом разработки и поэтому его функциональность нужно обсуждать отдельно. Отметим только, что специфический язык Access Basic сейчас заменен на универсальный VBA, среда которого применяется для программирования макросов и модулей кода. Однако Access 2000 использует собственный набор форм и собственный же конструктор их формирования.

В Access 2000 включен новый вариант механизма доступа к данным Jet 4.0, обеспечивающий поддержку Unicode, блокировку на уровне строк, поддержку технологии OLE DB, двустороннее тиражирование Jet/SQL Server 7 и ряд других функций. В то же время этим приложением может использоваться новый механизм Microsoft Data Engine (MSDE), который по существу является настольной версией SQL-сервера и дает в случае необходимости возможность гибкого перехода к SQL Server 7.0.

В новой версии изменен формат файлов баз данных. Старые базы данных можно прочитать и преобразовать, но записать данные можно только в новом формате. Обратных конверторов из формата Access 2000 в Access 97 нет и, кажется, не предвидится.

Одно из ключевых новшеств MS Office 2000 - единая для всех приложений модель подключения программных расширений на основе технологии COM Add-In, которая должна существенно помочь разработчикам в создании бизнес-приложений и универсальных дополнительных средств для MS Office.

Общим направлением офисных пакетов (с точки зрения традиционного пользователя) является их нацеленность на применение Internet и HTML-стандартов. В этой связи нужно отметить возможность использования в MS Office редактора сценариев, интегрированного в среду всех приложений (кроме как в Outlook, см. рис. 1), наличие в этом пакете набора ActiveX-компонентов для публикации данных в Web, серверных расширений для управления онлайновыми дискуссиями, объекта Data Access Page для отображения информации из баз данных в браузере, а также ряда других объектов и функций.

Рис. 1. Встроенный редактор сценариев Script Editor обеспечивает создание сложных программируемых HTML-страниц

Новинкой MS Office 2000 являются дополнительные средства защиты от вирусов. Одно из них предназначено непосредственно для конечного пользователя: использование механизма заверения VBA-проектов, включенных в документ с помощью электронной подписи. К сожалению, в реализованном варианте имеются проблемы с заменой цифровой подписи при исправлении проекта.

Кроме того, в русской версии этот механизм функционирует пока только вполсилы: из-за ошибок не работает утилита SelfCetr.exe, создающая электронный сертификат (хотя ее исправленный вариант уже имеется и его можно получить в центре технической поддержки Microsoft).

Среда VBA

Пользовательский интерфейс среды VBA почти не изменился, но во внутреннем механизме произошли серьезные перемены. Как утверждает Microsoft, в Office 2000 исчезла грань, разделявшая ранее VBA и обычный VB. Это означает, что в VBA 6 (Office 2000) появились не только новые функции VB 6, но и некоторые возможности, которые были в VB 5, но отсутствовали в VBA 5. В частности, набор новых функций обработки строк, объекты FileSystemObject и Dictionary, функция AddressOf (передача адреса подпрограммы в DLL-функции), возможность применения немодальных форм, переопределения размеров динамических массивов и пр.

Для доступа к базам данных можно использовать технологию OLE DB/ADO - Office 2000 включает последнюю версию библиотеки ADO 2.1 (см. PC Week/RE, № 28/99, c. 27).

Тем не менее тезис о тождественности VBA и VB является преждевременным. Microsoft не преодолела (скорее всего, не захотела устранить) различия в организации среды разработки, в работе конструкторов форм, в совместимости форматов файлов с исходными модулями, в использовании программных расширений и т. д. (см. рис. 2, а также ниже о VBA-мастерах). И это создает серьезные проблемы для разработчиков.

Рис. 2. Сравнение двух конструкторов форм (VB и Form 2.0 VBA) наглядно

демонстрирует отсутствие совместимости между ними

Теперь об MS Office 2000 Developer

Принципиальным новшеством этого пакета является возможность создания автономного VBA-проекта: ранее программный код мог включаться только в состав документа или шаблона того или иного офисного приложения. Теперь разработчик может создавать как обычные ActiveX DLL (скажем, подобные Web- и DHTML-приложениям), так и универсальные расширения COM Add-In для офисных пакетов. Кроме того, конструктор COM Add-In может использоваться в VB 5.0 и 6.0. Исходный код VBA-проектов хранится в виде двоичных файлов, которые, к сожалению, не читаются в VB.

Выпуск Developer содержит набор дополнительных элементов управления для работы с базами данных OLE DB/ADO. Разработчикам будет также полезен набор конструкторов Add-In, подключаемых с помощью команды Add-In Manager. Среди них хотелось бы выделить утилиту VBA Code Librarian, обеспечивающую работу с иерархической библиотекой исходных текстов (в которой могут быть не только программные коды, см. рис. 3). С программой поставляется большая база данных CodeLib.mdb от Microsoft. В роли остальных расширений выступают специализированные мастера: Package and Deployment Wizard, WinAPI Viewer, Source Code, Code Comment, Error Handler, Multi-code Import/Export и String Editor.

Рис. 3. Утилита VBA Code Librarian обеспечивает работу с иерархической библиотекой исходных текстов.

В состав пакета MS Office 2000 Developer входит также большая база данных CodeLib.mdb от Microsoft

Однако здесь опять нужно подчеркнуть проблемы совместимости VBA и VB - оказалось, что мастера и утилиты VB не работают в среде VBA, и наоборот.

Кроме того, Developer включает несколько автономных приложений для разработчиков: Visual SourceSafe (поддержка групповой разработки), HTML Help Workshop (создание справочных систем в новом стандартном формате Windows HTMLHelp), Answer Wizard Builder (интеграция запросов на естественном языке к электронной справке), MS Agent SDK (комплект программ для создания изображений, используемых в Office Assistants), Access Runtime (модули поддержки времени выполнения для дистрибуции Access-приложений), а также полный набор MSDE для разработчика.

Документация

Помимо всего вышеперечисленного в состав версии Developer входят три книги и весьма объемная электронная справочная система в виде MSDN Library. Эта документация, конечно, очень полезна для разработчика, но...

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

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

2. Несмотря на рост мощности компьютера, быстродействие работы справочной системы неуклонно падает.

3. Объем информации увеличивается, но содержимое по конкретным темам сокращается. Именно поэтому крайне желательно сохранять документацию (и бумажную, и электронную) по всем предыдущим версиям пакета.

4. Что самое удивительное - сокращается функциональность справки. Например, еще в MS Office 97 пользователь мог создавать собственные закладки, дописывать свои комментарии к справке, копировать содержимое. MS Office 2000 таких возможностей не предоставляет.

Конечно, создание единой справочной системы по VBA и VB - дело хорошее. Однако приведенные примеры их несовместимости (а существуют и другие) показывают, что такое объединение сейчас приводит к откровенной путанице. Например, неприятным сюрпризом явилось то, что после установки MSDN Library Office 2000 Developer именно эта библиотека стала вызываться при обращении к справке в VB 6.0 (вместо MSDN Library Visual Studio 6.0), хотя такое обновление по разным причинам крайне нежелательно.

Резюме

1. MS Office 2000 предоставляет более широкие возможности разработки приложений, чем MS Office 97. В первую очередь отметим универсальную модель расширений COM Add-In, механизм защиты от макровирусов и новую версию среды программирования VBA 6.0.

Однако целый ряд очевидных проблем пока не решен (скорее всего, по маркетинговым причинам Microsoft и не собирается их решать). Это касается различий в реализации расширений, ориентированных на конкретное приложение (например, логика настройки Word по-прежнему заметно отличается от логики настройки Excel). Еще более серьезным вопросом является сохраняющаяся несовместимость VBA и VB по форматам исходных модулей, составу и функциям элементов управления, технологии подключения расширений и пр.

2. Дополнительные возможности версии Developer могут быть очень полезны для тех, кто занимается созданием профессиональных систем на базе MS Office. Однако многие инструменты у разработчиков уже имеются, кое-что можно приобрести по другим каналам, а некоторые лучше взять не у Microsoft.

3. Качество справочной системы оставляет желать много лучшего. Интеграция справок по VBA и VB сегодня выглядит явно преждевременной на фоне сохраняющихся различий в двух системах программирования.