Андрей Колесов


*При написании этой статьи использовались материалы, подготовленные Ольгой Павловой.

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

  • реализация унифицированной иерархической объектной модели на основе OLE Automation (ActiveX);
  • создание единого внутреннего механизма программирования приложений на основе Visual Basic for Applications;
  • интеграция с другими средствами разработки Microsoft, в первую очередь с Visual Basic.

Мы можем говорить именно о Microsoft Office как о платформе разработки, потому что входящие в этот пакет приложения не только имеют единый внутренний механизм программирования, но и, что еще важнее, сами представляют собой огромный набор из нескольких сотен унифицированных объектов ActiveX, которые доступны любым другим внешним приложениям через механизм OLE Automation. (Свыше 50% таких объектов являются общими для всех программ Microsoft Office.)

Можно выделить три основные варианта применения Microsoft Office с точки зрения разработчика:

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

Не менее важным представляется то, что сам механизм программирования в Visual Basic for Applications реализован в виде автономного продукта Visual Basic for Applications SDK (сейчас доступен Visual Basic for Applications 6.0 SDK 6.2), при помощи которого независимые разработчики могут встраивать эту среду внутреннего программирования в собственные приложения. В конце 1999 г. Microsoft расширила программу лицензирования Visual Basic for Applications, предоставив возможность приобретать Visual Basic for Applications SDK не только производителям коробочных продуктов, но разработчикам внутрифирменных систем (подробнее о технологии интеграции Visual Basic for Applications см. www.microsoft.ru/offext/officedev/vba/).

Новое позиционирование Microsoft Office сопровождалось появлением специального выпуска для разработчиков - Developer Edition. Однако в версии Office 97 этот пакет отличался от выпуска Professional фактически лишь наличием дополнительной документации и расширенным набором компонентов ActiveX.

Выпуск Microsoft Office 2000 Developer в дополнение к полному набору офисных программ Premium содержит набор средств (табл. 1), которые расширяют возможности разработки приложений, особенно профессионального уровня (впрочем, для решения многих "локальных" задач программирования обычных выпусков пакета, как правило, вполне достаточно). Этот пакет выпускается только в англоязычном (нелокализованном) варианте.

Таблица 1. Дополнительные компоненты выпуска Microsoft Office 2000 Developer (по сравнению с выпуском Premium)
Компоненты Назначение
1. Инструменты разработчика (Developer Tools)*
Расширения среды Visual Basic for Applications
Создание VBA-проекта Возможность создания независимого от конкретного документа VBA-проекта в виде ActiveX DLL
Конструктор COM Add-In Создание автономных дополнений COM (полностью скомпилированных DLL-библиотек) внутри среды разработки Visual Basic for Applications. Такие дополнения могут использоваться в различных приложениях Office
Поддержка конструкторов ActiveX Возможность подключения дополнительных конструкторов ActiveX (Designers)
Средства доступа к данным
Конструктор Data Environment Связывает VBA-код с внешними источниками данных, создавая привязанные к данным формы и элементы управления с помощью визуального интерфейса пользователя. Позволяет визуально создавать, модифицировать и повторно использовать объекты иерархических наборов данных. Представляет таблицы, разрезы данных, SQL-запросы и хранимые процедуры в виде компонентов ADO
Диспетчер DataBinding (UseConnection) Связывает VBA-код с внешними источниками данных, создавая привязанные к данным формы и элементы управления с помощью визуального интерфейса пользователя
Конструктор Data Report Позволяет быстро создавать отчеты путем перетаскивания элементов из Data Environment; при этом не требуется писать ни одной строчки кода
Набор элементов управления ActiveX для работы с OLE DB/ADO Компоненты для связи элементов управления формы, таких, как поля ввода, с источником данных
Расширенный набор элементов управления ActiveX Новые и усовершенствованные элементы управления ActiveX, которые можно использовать в формах и отчетах (например, FlexGrid, DataRepeater и др.)
Набор Web-компонентов Коллекция элементов управления COM, предназначенных для публикации электронных таблиц, графиков и баз данных на Web (компоненты Spreadsheet, Microsoft Chart и Microsoft PivotTable)
Утилиты и мастера для разработчика (Developer Add-Ins, меню Add-Ins)
Code Librarian Дает возможность группам разработчиков совместно использовать код, хранящийся в централизованной базе данных Access, которая содержит большой набор стандартных подпрограмм как для Visual Basic for Applications, так и для Microsoft Visual Studio
VBA Code Commenter Автоматически создает комментарии и заголовки к процедурам при помощи специальных настраиваемых шаблонов. Позволяет добавить заголовок либо к текущей процедуре, либо ко всем процедурам текущего модуля или текущего проекта
VBA Error Handler Упрощает и автоматизирует создание стандартизированного обработчика ошибок. Error Handler использует диалоговые окна, которые захватывают базовую информацию и вставляют специальный программный код для обработки ошибок при помощи настраиваемых шаблонов
VBA Multi-Code Import/Export Позволяет сэкономить время и минимизировать ошибки, связанные с операциями "вырезать-вставить", передавая несколько модулей кода в проект и из него за одну операцию
Package and Deployment Wizard Создает программы установки для приложений на базе Office 2000. Полученные дистрибутивы можно записывать на дискеты, компакт-диски, а также развертывать в Интернете
VBA Source Code Control Дополнение, благодаря которому разработчики получают доступ к функциональным возможностям Visual SourceSafe в среде разработки Office. Для использования VBA Source Code Control необходимо первоначально загрузить его с помощью меню Add-Ins
VBA String Editor Редактор для создания строк SQL-запросов или длинных сценариев, которые будут внедряться в VBA-код, при помощи режима WYSIWYG
VBA WinAPI Viewer Средство, необходимое при вызове функций Windows API из Visual Basic for Applications и позволяющее просматривать описания функций, констант и типов данных. Найденное описание легко переносится в любое VBA-приложение с помощью буфера обмена
2. Автономные приложения для разработчика
Visual SourceSafe Инструмент групповой разработки, встроенный в среду разработки Visual Basic for Applications. Предназначен для управления разными версиями проекта, обеспечивает совместное использование программного кода несколькими разработчиками, а также служит хранилищем повторно используемого кода. Может применяться автономными разработчиками; кроме того, пакет можно запускать и как отдельное приложение
HTML Help Workshop Средство для создания Справки в новом стандартном формате Windows HTML Help. Удобная среда, а также наличие собственного графического редактора и программного интерфейса HTML Help API упрощают создание Справки для любого приложения на базе Office 2000
Answer Wizard Builder Инструмент для интеграции запросов, составленных на естественном языке, в приложения на базе Office 2000. Используется при создании Справки
Microsoft Agent SDK Комплект программ для создания изображений, используемых в Office Assistants
Microsoft Access Workflow Designer for SQL Server Средство для создания систем документооборота на основе Microsoft SQL Server или Access 2000 и Web-технологий
3. Дополнительные средства**
Microsoft Agent SDK Комплект программ для создания и модификации изображений, используемых в Office Assistants (находится в подкаталоге /ODETOOLS/V9/MSAGENT)
Access Runtime Модули поддержки времени выполнения для дистрибуции Access-приложений (/ODETOOLS/V9/ACCESSRT)
Microsoft Data Engine (MSDE) Новый механизм доступа к базам данных (облегченный вариант Microsoft SQL Server 7.0). Microsoft Office 2000 Developer включает полный набор для разработчика (/MSDE)
4. Документация и примеры
Печатная документация Три книги: "Microsoft Office 2000 Visual Basic Programmer's Guide", "Microsoft Office 2000 Developer" и "Microsoft Office 2000 Object Model Guide"
Электронная библиотека MSDN Library Три компакт-диска, содержащие свыше 1 Гбайт информации по программированию в среде Office 2000
Программные примеры Их очень много, часть из них устанавливается на компьютер, часть хранится только на компакт-диске

* При повторном использовании компакт-диска Developer для обращения к разделу Developer Tools нужно вручную запускать стартовую программу ACMBOOT.EXE из корневого каталога.
** Устанавливаются с компакт-диска автономно.

Дополнительные средства Microsoft Office 2000 Developer

Как видно из табл. 1, дополнения к Microsoft Office 2000 Developer включают средства разработки, представляющие собой компоненты среды, и автономные приложения. Описание работы последних может быть темой отдельных публикаций, поэтому ниже мы сосредоточимся на использовании специальных инструментов Visual Basic for Applications.

Кроме дополнительных программных средств, к версии Microsoft Office 2000 Developer прилагаются три книги и весьма объемная электронная справочная система в виде MSDN Library на трех компакт-дисках (рис. 1). Эта документация, конечно, очень полезна для разработчика, но все же ее качество оставляет желать много лучшего с точки зрения как повышения производительности встроенной справки, так и удобства работы с ней, полноты информации и упрощения процедур поиска нужных данных.

Fig.1
Рис. 1. Окно электронной справочной системы, прилагаемой к Microsoft Office 2000 Developer.

Одна из наиболее интересных возможностей Microsoft Office 2000 Developer - возможность создания автономного VBA-проекта вне конкретного офисного документа. Однако нужно подчеркнуть, что этот проект нельзя подключать к другим проектам, загруженным в офисное приложение. (Имеется в виду возможность программного взаимодействия нескольких проектов, загруженных, например, в Word 2000.) Получается, что с помощью VBA-проекта можно создавать только ActiveX DLL, и это само по себе очень полезная функция. Иными словами, среду любого офисного приложения можно использовать в качестве самостоятельного средства разработки для создания автономных приложений.

При работе с автономным VBA-проектом доступен механизм подключения внешних ActiveX-конструкторов, с помощью которых можно, например, создавать WebClass- и DHTML-приложения, как это делается в Visual Basic 6.0 Pro. Более того, в Microsoft Office 2000 Developer имеется специальный конструктор COM Add-In, с помощью которого можно создавать расширения как для офисных пакетов, так и среды VB/VBA. После установки данного конструктора его можно использовать и в Visual Basic версий 5 и 6.

Microsoft Office 2000 Developer также содержит расширенный набор элементов управления и конструкторов ActiveX, хорошо известных Visual Basic-разработчикам. В частности, в нем есть элементы управления для работы с базами данных на основе технологии OLEDB/ADO: так, усовершенствованный элемент управления FlexGrid предназначен для отображения иерархических данных. Элемент управления Data Repeater обеспечивает создание интерфейса для повторения элементов управления ActiveX и прокрутки наборов записей. Сама библиотека ADO 2.1 содержится в основном комплекте поставки Office (ее можно свободно обновить до версии 2.5). Конструктор среды данных (Data Environment Designer) представляет собой наглядный пользовательский интерфейс, упрощающий подключение кода Visual Basic for Applications к внешним источникам данных путем создания форм и элементов управления, связанных с данными. Конструктор отчетов данных (Data Report Designer) позволяет быстро создавать сложные отчеты путем простого перетаскивания элементов из среды данных.

Следует особо выделить появление в Microsoft Office 2000 Developer офисных Web-компонентов, которые можно использовать в составе HTML-страниц или обычных приложений. Их применение - одна из ключевых составляющих технологии Microsoft Digital Dashboard (создания персонального информационного портала). Мы планируем рассказать о них подробнее в следующем номере журнала.

Появление версии Office 2000 стало серьезным шагом на пути сближения Visual Basic for Applications и обычного Visual Basic. Однако нужно подчеркнуть, что тезис Microsoft о тождественности Visual Basic for Applications и Visual Basic, по крайней мере, преждевременен: до сих пор окончательно не преодолены различия в самом языке, в организации среды разработки, в работе конструкторов форм, в совместимости форматов файлов с исходными модулями, в использовании программных расширений.

Встроенные инструменты VBA-разработчика

Ниже мы более подробно рассмотрим использование VBA-дополнений (Add-Ins), которые входят в состав группы Developer Tools (рис. 2).

Fig.2
Рис. 2. Компоненты группы Developer Tools.

Подключение дополнений в среде Visual Basic и Visual Basic for Applications

Для разработки дополнительных инструментов (Add-Ins) - утилит, мастеров, конструкторов, - предназначенных для последующей интеграции в среду разработки VBE, используется специальная технология создания компонентов, таких как серверы ActiveX. Мы используем термин VBE (Visual Basic Environment), чтобы подчеркнуть, что данная среда реализуется в двух очень похожих, но все же различных вариантах: это обычный Visual Basic и Visual Basic for Applications в составе Microsoft Office. При работе с Add-Ins это выражается в том, что технология создания и регистрации дополнений для Visual Basic и Visual Basic for Applications несколько различаются. С точки же зрения пользователя это означает, что Add-Ins из состава Visual Basic 6.0 нельзя использовать в Office/VBA 2000 Developer, и наоборот. Однако процедура работы с дополнениями в обеих системах одинакова. (Мы планируем в ближайших померах журнала детально рассмотреть технологию создания Add-Ins для офисных приложений, Visual Basic и Visual Basic for Applications.)

Для управления работой набора Add-Ins существует Add-In Manager (Менеджер дополнений), вызываемый командой Add-Ins|Add-In Manager. В Office/VBA 2000 такая команда появляется только после установки Developer Tools с инсталляционного диска Microsoft Office 2000 Developer. После обращения к Add-In Manager появляется диалоговое окно, в котором представлены все зарегистрированные Add-Ins (рис. 3). В правой колонке списка указан режим загрузки каждого дополнения, который устанавливается с помощью трех флажков секции Load Behavior:

Loaded/Unloaded - немедленное подключение или отключение дополнения к среде VBE, которое действует только во время текущего сеанса работы.

Load on Startup - автоматическое подключение дополнения во время запуска VBE. Вы можете отключить эту программу в текущем сеансе работы, но если флажок Load on Startup установлен, то при перезагрузке VBE расширение опять будет подключено.

Command Line -подключение дополнения при запуске cреды разработки из командной строки (может использоваться только при работе с Visual Basic).

Fig.3
Рис. 3. Окно Add-In Manager со списком доступных дополнений.

Как правило, подключение дополнения состоит в том, что в меню Add-Ins появляется соответствующая команда, с помощью которой непосредственно запускается мастер или конструктор.

VBA Code Commenter

Это дополнение автоматизирует процесс написания комментариев к процедурам шаблона. VBA Code Commenter помещает заданную в виде шаблона информацию (табл. 2) в начало процедуры. Для создания комментариев выполните следующие шаги:

  1. В меню Add-Ins выберите команду VBA Code Commenter.
  2. В одноименном диалоговом окне (рис. 4) установите переключатель в группе Add Comments To, указав, куда помещать комментарии, - в текущую процедуру, во все процедуры текущего модуля или сразу во все процедуры текущего проекта.
  3. Выберите нужный шаблон в поле Code Header Template.
  4. При желании введите имя и инициалы разработчика в группе Author (подробнее см. табл. 2).
  5. Щелкните OK.

Таблица 2. Форматы, используемые в шаблонах VBA Code Commenter и VBA Error Handler
Маркер Значение
$$A Автор. Заменяется текущим именем автора
$$B Тело процедуры
$$D Текущая дата в формате краткой даты Windows
$$H Комментарии заголовка
$$I Инициалы автора
$$N Имя процедуры. Заменяется полным именем процедуры, включая имя класса, если данная процедура является членом класса
$$P Имя проекта
$$T Текущее время в формате краткого времени Windows
$$V Переменные заголовка
$$Y Тип процедуры. Заменяется соответственно на Sub, Function или Property
$$SA Начало режима Auto. Используется, чтобы пометить начало вставляемого обработчика ошибок
$$EA Конец режима Auto. Используется, чтобы пометить конец вставляемого обработчика ошибок
$$SH Начало заголовка
$$EH Конец заголовка

Примечание: маркеры $$A и $$I используются для вставки имени и инициалов разработчика. Если вы ввели новые значения в поля Name и Initials в диалоговом окне VBA Code Commenter или VBA Error Handler, дополнение сохраняет их в Реестре в каталоге HKCU/Software/Microsoft/ODE/9.0 для дальнейшего использования. Если же дополнение не находит их по указанному адресу, то оно пытается найти используемые по умолчанию значения для зарегистрированного пользователя продуктов.

Fig.4
Рис. 4. Диалоговое окно VBA Code Commenter.

В качестве шаблонов VBA Code Commenter использует файлы с расширением .eht (формат - простой ASCII-файл), которые можно создавать с помощью любого текстового редактора (рис. 5). В ODE 2000 имеется пример такого файла - CodeCommenter.eht.

Fig.5 Рис. 5. Создание шаблона для VBA Code Commenter в виде текстового файла.

VBA Error Handler

Данное дополнение помогает разработчику ускорить написание кода обработки ошибок: оно вставляет в исходный текст проекта шаблоны, в которые программист затем добавляет конкретный код. Технология работы с ним аналогична работе VBA Code Commenter. Единственное отличие - флажок Update existing error handlers, благодаря которому можно обновлять все обработчики ошибок в процедурах из диапазона, который был указан в группе Add Error Handlers To.

Файлы шаблонов записываются в обычном текстовом формате и имеют расширение EHT (в составе ODE 2000 имеется стандартный шаблон ErrorHandler.eht.). Выполнив все необходимые шаги, программист получит примерно такой код:

On Error GoTo HandleErr 
 
ExitHere: 
 Exit Sub 
 
' Error handling block added by 
' Error Handler Add-In. 
' DO NOT EDIT this block of code. 
' Automatic error handler last updated 
' at 05-29-2000 13:19:17 
' ErrorHandler:$$D=05-29-2000 
' ErrorHandler:$$T=13:19:17 
 
HandleErr: 
 Select Case Err.Number 
 Case Else 
 ' ErrorHandler:$$N=clsEmailMerge.Class_Initialize 
 MsgBox "Ошибка " & Err.Number & ": " & _ 
 Err.Description, vbCritical, _ 
 "clsEmailMerge.Class_Initialize" 
 End Select 
' End Error handling block. 

String Editor

Рассмотрим код, который содержит несколько строковых переменных:

' Исходные значения строковых переменных 
Fname$ = "Петя" 
Lname$ = "Иванов" 
varDate = "19 сентября" 
varYear = "1975" 
' теперь нужно составить из них сложное выражение: 
TextBox1.Text = Fname$ & " " & Lname$ & " родился " _ 
 & varDate & " " & varYear & " года" 

В последней строке кода легко допустить ошибку, пропустив кавычки либо знак конкатенации или поставив их не в том месте. Избежать этого помогает String Editor, который упрощает процесс формирования сложных строк при создании текстов, выводимых в окнах сообщений, формирования SQL-операторов или скриптов и т.д.

Работа со String Editor выглядит следующим образом:

  1. Установите курсор в том месте кода проекта, куда вы хотите вставить строку, и выберите команду String Editor в меню Add-Ins.
  2. Введите текст приведенного выше примера в окне String Editor (рис. 6).
  3. Выделите первую переменную и щелкните кнопку Toggle to Non-String на панели инструментов String Editor - она будет помечена синим цветом. Повторите эту операцию для всех переменных строки.
  4. Щелкните кнопку Update для вставки отформатированной строки в код проекта.
<
Fig.6 Рис. 6. Ввод кода в окне VBA String Editor.

String Editor автоматически создаст строку, добавив нужные синтаксические элементы (кавычки, знаки конкатенации и табуляции, константы перехода на новую строку, знаки пробелов между переменными и др.).

Вот еще несколько примеров форматирования, которое можно выполнить с помощью String Editor.
Окно дополнения String Editor Получаемый код
Моя кошка
спит.

 "Моя кошка " & vbNewLine & "спит." 
Моя strCat кошка.
"Моя " & strCat & " кошка." 
"Моя кошка спит."
Chr$(34) & "Моя кошка спит." & Chr$(34) 

Package and Deployment Wizard

Package and Deployment Wizard - средство создания дистрибутивов приложений в виде одного или нескольких сжатых CAB-файлов. Его же можно использовать для создания DEP-файлов, описывающих зависимости между отдельными частями проекта и распространяемых вместе с компонентами. После запуска Package and Deployment Wizard на экране появится окно, предлагающее три варианта работы с мастером.

Package - начало создания дистрибутива приложения.

Deploy - в этом режиме выполняется развертывание готового упакованного проекта на дисках, в сети, локальной папке или в Интернете.

Manage Scripts - выводится диалоговое окно Manage Scripts, в котором можно переименовывать, дублировать или удалять сценарии упаковки и развертывания.

Multi-Code Import/Export

При разработке больших проектов программисту часто приходится импортировать и экспортировать объекты и модули, написанные на Visual Basic. Минимизировать время на эти операции можно с помощью дополнений Multi-Code Import и Multi-Code Export.

Code Librarian

Утилита Code Librarian позволяет работать с хранилищами готовых фрагментов программных кодов. Она реализована в виде Add-Ins, подключаемого в среде Visual Basic for Applications, а также автономной утилиты CodeLib.EXE, которую можно использовать, например, при работе с Visual Basic. В составе Microsoft Office 2000 Developer имеется также база данных CodeLib.MDB с большим набором фрагментов исходных текстов, модулей и функций для Office 2000, Visual Basic for Applications и систем разработки Visual Studio. С начала 2000 г. программисты получили доступ к новому Web-сервису Code Librarian Update (http://msdn.microsoft.com/officedev/downloads/codelabrarian.asp), где они могут пополнять свой локальный архив повторно используемого кода.

Но, пожалуй, еще более важно, что при помощи утилиты Code Librarian можно сформировать собственный архив повторно используемого кода. Создайте собственную базу данных и заносите в нее то, что может пригодиться в будущем. Это могут быть и законченные утилиты, и какие-то небольшие программные конструкции. Ведь наверняка почти все программисты периодически сталкиваются с ситуацией: "помню, что уже делал такую конструкцию и решал какие-то проблемы с ее отладкой, но не помню - когда и где..."

Мне эта утилита представляется самым полезным расширением из всего набора, поэтому рассмотрим ее работу подробнее на примере стандартной базы данных CodeLib.mdb (рис. 7).

Fig.7
Рис. 7. Работа Code Librarian с базой данных CodeLib.mdb.

Базы данных имеет древовидную иерархическую структуру; ее оглавление (вкладка Contents) показано в левом окне на рис. 7. В правом верхнем окне находится список компонентов из текущего элемента оглавления, а ниже - краткое описание выделенного в данный момент компонента. Для просмотра и редактирования содержимого фрагмента кода дважды щелкните его название в списке. Работают с этим фрагментом с помощью трех вкладок:

Code - в нижнем большом окне выводится содержимое фрагмента, в верхнем поле - его развернутое название.

Description - здесь задается тип фрагмента кода (Function, Module, Class Module или Code Snippet) и вводится его краткое описание (это видно на рис. 7).

Setting - здесь задаются две группы параметров (категории и ключевые слова), которые обеспечивают поиск нужного фрагмента.

В правой части вкладки Setting находится окно со списком Categories, элементы которого привязывают текстовый компонент к иерархическому оглавлению (рис. 8), причем можно задать связь сразу с несколькими категориями. В левой части находится список ключевых слов данного текстового компонента. Эти слова выбираются из набора ключевых слов базы данных, который здесь же можно пополнять.

Fig.8
Рис. 8. Окно со списком Categories в правой части вкладки Setting.

Вернемся обратно в начальное окно утилиты (рис. 7). Теперь понятно, что три вкладки левого окна обеспечивают разные варианты поиска нужного фрагмента кода: Contents - по категориям (оглавлению), Keywords - по ключевым словам, Search - полнотекстовый поиск по различным критериям (для такого поиска можно устанавливать флажки Search titles only или Search through code и использовать логические операции AND, OR или NOT). Программист может корректировать содержимое (удалять, добавлять фрагменты) наборов кода или создавать новые базы данных. Кроме того, он может выбирать функции, менять их имена и описание, задавать их атрибуты.

Нужный фрагмент кода легко вставить в свой модуль проекта. Для этого установите курсор в то место модуля проекта, куда вы хотите поместить найденный фрагмент, а затем перейдите в окно Code Librarian, выделите там необходимый текст и щелкните кнопку Insert Code to Module на панели инструментов. Можно также перетащить мышью выделенный фрагмент кода в модуль проекта или скопировать его туда с помощью буфера обмена.

VBA Source Code Control

При групповой разработке приложений несколько человек совместно создают, поддерживают и обновляют файлы для крупного приложения. Координация их работы может оказаться непростой задачей. Автономное средство контроля версий Visual SourceSafe позволяет осуществлять надежное и простое управление исходным кодом, синхронизируя деятельность разработчиков в группе согласно сделанным ими изменениям. Этот пакет может оказаться полезным и для отдельных программистов. Так, если вы внесли какие-либо изменения, а затем захотели вернуться к предыдущей версии, с помощью Visual SourceSafe можно легко восстановить исходный код.

Дополнение VBA Source Control позволяет подключить Visual SourceSafe в среду Visual Basic for Applications, предоставляя разработчикам следующие возможности для управления проектами:

  • выяснять, какие объекты были восстановлены;
  • восстанавливать и изменять объект;
  • сохранять объект, чтобы другие разработчики смогли воспользоваться теми изменениями, которые были проделаны с объектом;
  • просматривать историю внесения изменений для каждого объекта или всей базы данных;
  • визуально сравнивать версии объекта;
  • создавать версии объектов и возвращаться к предыдущей версии (даже для удаленных объектов);
  • проводить слияние различных версий объекта;
  • переходить к последним версиям всех объектов.

Обратите внимание, что в Microsoft Office 2000 существует два типа дополнений VBA Source Code Control:

  1. Access Source Code Control, используемый при разработке приложений с помощью Microsoft Access, который хранит двоичный код и код своих объектов в качестве отдельных элементов внутри базы данных Visual SourceSafe;
  2. новый VBA Source Code Control, применяемый при разработке приложений с помощью других продуктов Microsoft Office 2000 (например, Excel или Word). Это дополнение предоставляет все функциональные возможности Visual SourceSafe в среде разработки Office.

Дополнение VBA Source Code Control действует следующим образом. При разработке крупного приложения все VBA-объекты, создаваемые группой программистов, хранятся в проекте Visual SourceSafe. При этом каждый разработчик работает над VBA-проектом на своей машине. Восстановление исходного кода объектов из пакета Visual SourceSafe означает, что этот код копируется из проекта Visual SourceSafe в проект разработчика на локальной машине. Сохранение исходного кода объекта происходит путем копирования его с локальной машины разработчика в базу данных Visual SourceSafe.

WinAPI Viewer

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

Чтобы упростить работу с наиболее часто используемыми внешними функциями - стандартным набором Windows, - в состав Microsoft Office 2000 Developer входят два файла, содержащие описания процедур, а также константы и структуры данных: WIN32API.TXT (собственно набор Win32 API) и MAPI32.TXT (дополнительный набор Message API - почтовых функций). Работать с ними удобнее всего с помощью утилиты WinAPI Viewer, хорошо известной разработчикам на Visual Basic.

Если вам нужно получить описания, константы и типы данных для работы с API, выберите команду Add-Ins|API Viewer, после чего появится окно утилиты (рис. 9). Загрузите нужный файл описаний, например, WIN32API.TXT, с помощью команды Load Text File из меню File. Далее, устанавливая в списке API Type нужный вид информации, можно просматривать содержимое файла в списке Available Items. Для быстрого поиска служит кнопка Search. Для более быстрой загрузки файла описания можно преобразовать текстовый файл в базу данных Jet с помощью Convert Text to Database.

Fig.9
Рис. 9. Окно утилиты WinAPI Viewer.

Добавление описаний из исходного файла в проект Visual Basic выполняется следующим образом: в списке Available Items выделяется нужный элемент, а потом с помощью кнопки Add его содержимое переносится в окно Selected Items. Чтобы удалить информацию из окна Selected Items, надо установить на нее курсор и нажать кнопку Remove.

Скопировать содержимое окна Selected Items в проект Visual Basic можно двумя способами.

  1. Нажав кнопку Copy, скопировать данные в буфер обмена, а потом, перейдя в среду Visual Basic, вставить информацию в нужное место.
  2. Нажав кнопку Insert, сразу скопировать информацию в раздел Declarations активного в этот момент программного модуля Visual Basic.

Но обратите внимание - при вставке описания в модуль формы нужно в операторе Declare вручную вставить впереди ключевое слово Private (в форме не поддерживаются переменные и процедуры Public).