Технологии Office Extensions: инсталляция программ и компонентов

Источник: PC Magazine/RE №4/2001
Игорь Новиков

В основе всех программ Office - концептуально похожие между собой объектные модели, в любой из них есть возможность пользоваться средствами языка Visual Basic for Applications (VBA), и, следовательно, большинство из рассмотренных принципов применимы к макропрограмме для любого компонента Office (после внесения небольших изменений, конечно). Рекомендации основаны на анализе реальных прикладных программ на базе Microsoft Office из библиотеки Microsoft Office Extensions (www.microsoft.ru/offext)*. Показанные примеры отдельных типовых решений, связанных с процессом установки, адаптированы для версии Microsoft Office 2000.

Дистрибутивный документ

Наиболее часто встречающийся прием распространения разработки на базе Microsoft Office - создание документа с макрокомандами или "надстройки" (add-in, документ специального вида, в котором находятся макрокоманды и который можно "подключать" к программам Office). Выбор нужного варианта определяется тем, потребуется ли пользователю при работе документ, связанный с макрокомандами, или ему достаточно предоставить только программные компоненты проекта.

Первый вариант - документ Word, рабочая книга Excel, презентация PowerPoint - типичен для "вертикальных" решений, т. е. когда создана разработка для определенного круга пользователей (программы 350, 392, 422, 427). Для автоматизации таких документов широко применяются управляющие элементы (кнопки, панели инструментов), при изменении состояния которых активируются соответствующие процедуры на языке VBA. Дополнительными средствами автоматизации могут быть "автозапускаемые" процедуры (автоматически выполняемые макрокоманды AutoExec, AutoOpen и т. д.). Например, для управления открываемыми документами Word 2000 может служить следующий подход (в данном случае показан пример более функционального приема, который позволяет перехватывать не только предопределенные создателями Word события):

'Компонент класса CAppЕvents
Public WithEvents App As Word.Application
Private Sub Class_Initialize()
'Привязка к текущему объекту Application для сигнального
'оповещения о происходящих событиях
Set App = Application
End Sub
Private Sub App_DocumentOpen()
...'Датчик, срабатывающий при открытии новых документов
'и запускающий соответствующую обработку
End Sub
...'Датчики других событий объекта Application
'Модуль AutoExec, расположенный в normal.dot
'или в автозагружаемом шаблоне
Global AppEvent As CAppEvents
Public Sub Main()
'Инициализация класса CAppEvents.
Set AppEvent = New CAppEvents
End Sub

Надстройка

Второй вариант - надстройка (add-in) - относится к "горизонтальным" решениям. В этом случае пользователь получает, как правило, надстройку, содержащую программный проект и набор интерфейсных инструментов для решения определенного класса задач (программы 380, 387), но не видит надстройку как документ. При этом варианте установки разработчику приходится выбирать, как его инсталлировать в систему. Конечно, пользователь имеет возможность загрузить надстройку через команду меню Сервис/Шаблоны и надстройки, однако для большинства случаев это не самое лучшее решение. Имеется несколько вариантов.

Размещение в каталоге автоматической загрузки надстроек (программы 363, 378). В этом случае автоматически загружаются все надстройки, расположенные по указанному адресу, в процессе загрузки какой-либо из программ Office. Узнать о расположении требуемой папки можно, считав свойства Word.Application.Startup и Excel.Application.StartupPath. Обратите внимание, что в Office 2000 реализована технология учета раздельных параметров настройки для каждого профиля пользователя. Поэтому реальный путь имеет вид C:\WINDOWS\Profiles\UserName\Application Data\Microsoft\Word\Startup. В целях совместимости с программами на VBA для предыдущих версий Office остается действующим также общий для всех зарегистрированных пользователей путь, например C:\Program Files\Microsoft Office\Office\Startup. В Microsoft Excel дополнительно реализована возможность учета дополнительного стартового каталога. Его имя (без кавычек) можно задать в ключе реестра Windows HKEY_CURRENT_USER\Software\Microsoft\Office\9.0\Excel\Options как строковый параметр под именем AltStartup.

Программная загрузка (программа 359). Для того чтобы ускорить процедуру загрузки Office-приложения и избежать побочных эффектов при взаимодействии с другими устанавливаемыми программными средствами, можно предусмотреть загрузку надстройки как реакцию на определенное действие или событие в системе. Например, можно назначать "горячие" клавиши или осуществлять загрузку основных надстроек-компонентов при получении соответствующей команды из стартовой надстройки (программа 364). С точки зрения разработчика, загрузка шаблона или надстройки выполняется как обращение к коллекции объектов Addins. В Microsoft Word или Excel для их загрузки нужно выполнить следующую команду:

With AddIns.Add("C:\Temp\ExlTools.xla")
.Installed = True
End With

В PowerPoint для реализации аналогичной операции потребуется следующее решение:

With Addins("C:\Temp\PPtools.ppa")
.Loaded = True
.Registered = True
End With

Командная загрузка. Автоматическую загрузку Excel-документа (.xls) или надстройки (.xla) можно реализовать путем ввода команды OPEN в системном реестре Windows. Для этого потребуется в разделе HKEY_CURRENT_USER\Software\Microsoft\Office\9.0\Excel\Options создать строковый параметр с именем "OPEN". Сначала вводится опция /R (только для чтения) или /F (загрузка по требованию) (задание опций является необязательным), вслед за которой записывается (через пробел) имя файла. Оно дается с указанием полного пути доступа (в кавычках), если этот файл не находится в стандартной папке надстроек. Например: OPEN = "/R "C:\Temp\ExlTools.xla"". Если предполагается загрузить несколько файлов, то аналогичным образом создаются дополнительные строковые параметры, имеющие имя "OPEN1", "OPEN2" и т. д.

Загрузка для надстройки Word может быть реализована путем задания соответствующих параметров в командной строке запуска. Например, с помощью команды WinWord "\Add-in.dot"/mMyInstall выполняется загрузка надстройки Add-in.dot с последующим исполнением VBA-процедуры MyInstall (макроc AutoExec пропускается).

Настройка интерфейса

Одна из наиболее важных функций установки - это настройка интерфейса. Одна из решаемых при этом задач - обновление перечня команд меню и кнопок на панелях инструментов. В Word это решается сравнительно просто, так как все соответствующие параметры сохраняются в общем шаблоне normal.dot и можно программным путем ввести изменения, а затем сохранить измененный normal.dot.

В Excel это реализовано иначе: параметры измененной настройки меню и панелей инструментов сохраняются в специальном файле, расположенном в каталоге Windows или в C:\WINDOWS\Profiles\UserName\Application Data\Microsoft\Excel.

Если компьютер пользователя не подключен к сети или настройка не требует задания имени пользователя при входе в систему, то файл измененных параметров имеет имя excel8.xlb. Если же текущий сеанс загрузки Windows произведен под именем UserName, то файл будет называться UserName8.xlb. Поэтому для переноса параметров интерфейса потребуется сначала загрузить в Excel заранее подготовленный xlb-шаблон, и после выгрузки Excel соответствующий файл будет создан автоматически.

Создание надстроек вида COM Add-ins
Эта возможность для продуктов Office была реализована в версии Office 2000. В отличие от обычных надстроек, рассчитанных на конкретное Office-приложение, COM Add-ins могут загружаться и выполняться различными программами. Эти файлы надстроек имеют расширение dll или exe и предоставляют более широкие функциональные возможности, причем без дополнительного усложнения с точки зрения их применения. Они могут разрабатываться как средствами Microsoft Office 2000 Developer, так и в Microsoft Visual Basic 6.0, Microsoft Visual C++ или Microsoft Visual J++.

Учет системы безопасности
Стандартные папки для хранения шаблонов и надстроек по умолчанию относятся к разряду проверенных источников. Поэтому даже при установке системы безопасности до уровня "Высокий" любые расположенные там файлы смогут исполняться без подтверждения их цифровой подписи. Для подключения проверки служит управляющий элемент Доверять всем установленным надстройкам и шаблонам на вкладке Надежные источники меню Сервис/Макрос/Безопасность.

Процедура установки
Программная реализация процедуры установки может быть осуществлена с помощью дополнительных Office-документов (setup.doc, setup.xls), имеющих в своем составе макросы для выполнения необходимых операций и регистрации (программы 346, 356). Другой путь заключается в создании специального установочного комплекта файлов, например, с помощью Мастера Package and Deployment Wizard, входящего в состав Visual Basic 6.0 или Office 2000 Developer (программы 377, 379, 424).

* Совместный проект PC Magazine/RE и российского представительства компании Microsoft. Для просмотра конкретной разработки из тех, что показаны в качестве примеров, следует использовать запрос www.microsoft.ru/offext/aview.asp?mode=1&id=NN; где NN - учетный номер программы.


Страница сайта http://test.interface.ru
Оригинал находится по адресу http://test.interface.ru/home.asp?artId=3887