Антология OpenOffice. Часть 16. Язык макросов в OpenOffice

Этот выпуск (состоящий из двух частей) завершает "Антологию OpenOffice". В нем мы подробно рассмотрим язык макросов, который используется в пакете OpenOffice. Но сначала, как водится, текущая новость. Готовящийся к выходу свободный офисный пакет OpenOffice.org 3 начиная с бета-версии будет распространяться под лицензией LGPL версии 3. Об этом сообщил Саймон Филиппс, который в компании Sun Microsystems отвечает за открытые проекты. Причиной перехода на недавно разработанную третью версию лицензии, по словам Филиппса, стало появление в новой версии механизма защиты от патентных преследований. До сих пор пакет OpenOffice выходил под предыдущей версией лицензии LGPL. Напомню: LGPL — это версия лицензии GNU General Public License, накладывающая на разработчиков приложений меньше ограничений по распространению исходных кодов.

Согласно стандартному определению, макрос — это сохраненная последовательность команд или нажатий клавиш, предназначенная для частого использования в дальнейшем. Макросы поддерживают команды, позволяющие выполнять разного рода операции включая даже принятие решений. Вот пример использования макросов в электронных таблицах: если баланс меньше, чем ноль, можно указать отображать его красным цветом, в противном случае — черным; если баланс больше, чем ноль, можно указать вычесть из него 10. Многие используемые в OpenOffice команды позаимствованы из языка программирования BASIC. Для применения макрос обычно связывают с нажатием клавиши или значком на панели инструментов — это позволяет при необходимости быстро его выполнить. Так как в OpenOffice язык макросов основан на языке BASIC, он очень гибок и позволяет автоматизировать как простые, так и достаточно сложные задачи. Макросы наиболее полезны, когда пользователю необходимо выполнять определенную задачу одним и тем же путем множество раз или когда требуется нажатием одной кнопки выполнять что-то, что обычно выполняется за несколько шагов. В OpenOffice программы, которые логически связаны, сохраняются в модуле. Например, модуль может содержать программы для нахождения общих ошибок, требующих редактирования. Логически связанные модули сохраняются в библиотеках, а библиотеки — в контейнерах библиотек. Нужно помнить, что всякое приложение OpenOffice и любой его документ может содержать библиотеки, модули и макросы.

Храним макросы в библиотеке документов

Каждый документ OpenOffice — одновременно контейнер библиотек и может содержать макросы и диалоги. Когда в документе используются макросы, владение документом означает владение и этими макросами. Если этот документ передается другому пользователю, его макросы будут доступны и пригодны к употреблению. По традиции любой язык программирования объясняется на примере написания программы, выводящей сообщение "Hello World". Аналогичным образом поступим и мы.

Шаг 1. Создаем библиотеку

Добавить макрос можно только к открытому в данный момент документу OpenOffice. В самом начале мы создадим новый текстовый документ, который назовем "Безымянный1". Когда документ создан, OpenOffice создает пустую библиотеку по имени Standard. Библиотека Standard останется пустой, пока вручную не будет создан новый модуль. Чтобы организовать библиотеки и модули, следует пройти путем Сервис --> Макросы --> Управление макросами -- > OpenOffice.org Basic и использовать диалоговое окно Макрос OpenOffice.org. Список Макрос из отображает доступные контейнеры библиотек; в нем присутствуют все открытые документы, личные макросы пользователя и макросы, которые распространяются вместе с пакетом OpenOffice. Личные макросы пользователя обычно сохраняются в его личном каталоге. Макросы OpenOffice, в свою очередь, сохраняются отдельно в каталоге с программными файлами пакета. Обе группы макросов — части библиотеки прикладного уровня. В именах контейнеров библиотек используются заданные имена документов. Чтобы отобразить содержащиеся в библиотеке модули, следует дважды щелкнуть мышью на соответствующем контейнере. Библиотека Standard для безымянного документа создается автоматически при создании нового документа. Чтобы открыть диалог Управление макросами, жмем на кнопку Управление. Как и в диалоговом окне Макрос, мы видим список всех контейнеров библиотек. Библиотека Standard подсвечена в документе Безымянный1. В диалоге Управление макросами содержится несколько закладок и текущая закладка Модули. Вот пункты этого диалога:

— кнопка Новый модуль создает новый модуль в выбранной библиотеке;
— кнопка Редактировать открывает выбранный в данный момент модуль для редактирования в IDE (Integrated Development Environment); она недоступна, если модуль не выбран;
— кнопка Удалить удаляет выбранный в данный момент модуль; она недоступна, если модуль не выбран;
— кнопка Закрыть закрывает диалог Управление макросами.

Наша цель — создать библиотеку, которая содержится в документе Безымянный1. Для этого вначале мы переходим на вкладку Библиотеки. Когда эта часть диалога отображается, в списке Приложение/Документ автоматически выбран контейнер Мои макросы и диалоги. Выбираем документ Безымянный1. Далее нажимаем кнопку Новая библиотека. Название новой библиотеки по умолчанию Library1, но лучше выбрать название со смыслом вроде TestLibrary. Для создания библиотеки жмем OK. Вновь созданная библиотека отображается в диалоговом окне Управление макросами в общем списке библиотек.

Шаг 2. Создаем модуль

Макросы сохраняются в модуле, соответственно, на следующем этапе в только что созданной библиотеке следует создать модуль. В диалоге Управление макросами выбираем вкладку Модули.

Созданная нами недавно библиотека TestLibrary теперь отображается в диалоге Управление макросами. Выбираем TestLibrary и нажимаем кнопку Новый модуль. У нового модуля имя по умолчанию Module1, но стоит выбрать более описательное название — мы выбираем MyFirstModule. Для создания модуля жмем OK.

Шаг 3. Создаем свой первый макрос

В диалоговом окне Управление макросами выделяем недавно созданный модуль и нажимаем кнопку Редактировать. Открывается Basic IDE. Можно также использовать диалог Макрос. Для открытия диалога Макрос идем путем Сервис --> Макрос --> Управление макросами --> OpenOffice.org Basic. В диалоге Макрос видим следующие кнопки:

— кнопка Выполнить выполняет выбранный макрос. Макрос выбран в правом списке, и его название также появляется в верхнем левом поле ввода — Название макроса;
— кнопка Редактировать открывает IDE для редактирования выбранного макроса;
— кнопка Назначить связывает макрос с определенным событием (об этом ниже);
— кнопка Закрыть закрывает диалог Макрос;
— кнопка Удалить удаляет выбранный макрос — активна только если модуль выбран. Если библиотека или документ выбраны в списке Макрос из, кнопка Удалить заменяется на Создать. Кнопка Создать создает новый макрос в выбранной библиотеке;
— кнопка Управление открывает диалог Управление макросами;
— кнопка Справка запускает систему помощи.

Диалог Макрос предназначен для работы с отдельным макросом. Выбираем наш MyFirstModule и жмем кнопку Редактировать. Открывается Basic IDE. Одна пустая подпрограмма — Main — автоматически создается при создании модуля. Теперь вводим код макроса. Мы введем код программы Hello World, которую и решили использовать в качестве примера:

Sub main
HelloWorld2()
End Sub
Sub HelloWorld1
Print "Hello World One"
End Sub
Sub HelloWorld2
Print "Hello World Two"
End Sub

IDE содержит панели инструментов Макрос и Стандарт. Если задержать курсор мыши на каждом из значков панели инструментов на пять секунд, появляется текст, дающий подсказку о функциях данного значка. Чтобы проверить макрос на предмет синтаксических ошибок, нажимаем на значок Компилировать. Если ошибок нет, сообщение не отображается. Чтобы использовать диалоговое окно Макрос для запуска любой подпрограммы в модуле, выполняем следующие действия:
1. Проходим путем Сервис --> Макрос --> Управление макросами --> OpenOffice.org Basic. Открывается диалог Макрос.
2. Находим документ, который содержит модуль в списке Макрос из.
3. Дважды щелкаем мышью по библиотеке для отображения содержащихся в ней модулей.
4. Выбираем модуль, чтобы отобразить содержащиеся подпрограммы и функции в списке Существующие макросы: <имя выбранного модуля>.
5. Выбираем требуемую для запуска подпрограмму или функцию — например, HelloWorld1.
6. Нажимаем кнопку Выполнить для запуска подпрограммы или функции.

Храним макрос в библиотеке приложений

Каждое приложение OpenOffice само по себе является контейнером библиотек. Там хранятся коды и диалоги, общие для многих документов. Контролировать версии легче, если их макросы сохранены в одном месте. Если, к примеру, пять разных документов содержат один и тот же макрос, могут возникнуть проблемы. Во-первых, некая область памяти оказывается потрачена впустую; во-вторых, если макрос изменяется, пользователю необходимо изменить макрос в пяти различных документах. Для хранения макросов в собственных библиотеках приложений обычно применяются те же самые методы, которые используются для документов. Контейнер уровня приложения использует два названия: Мои макросы и Макросы OpenOffice.org. Приложение OpenOffice включает множество библиотек, сохраненных как Макросы OpenOffice.org. Для добавления новых библиотек следует использовать диалог Управление макросами. Каждая библиотека приложения сохраняется в своем собственном каталоге. Чтобы определить, где именно OpenOffice хранит библиотеки приложений, следует пройти в меню Сервис --> Параметры. В диалоге Параметры раскрываем ветку OpenOffice.org в дерево меню и выбираем Меню. Объект Basic показывает местоположение внешних библиотек.

Если пользователь планирует устанавливать новую версию пакета OpenOffice, ему следует сделать копию всех библиотек прикладного уровня. Если OpenOffice устанавливается в то же самое место, будет перезаписан файл конфигурации, который указывает OpenOffice, в каком месте располагаются пользовательские библиотеки прикладного уровня. Как правило, библиотеки еще находятся на том же месте, но программа не знает об их существовании. Для восстановления "потерянных" библиотек независимо от того, где они расположены, используется вкладка Библиотеки диалога Управление макросами. Следует проверить, что Мои макросы выбраны в списке Приложение/Документ, и только после этого нажать кнопку Добавить. Переходим в каталог, содержащий библиотеку, которую необходимо добавить. Выбираем файл script.xlb и нажимаем Открыть. Это следует сделать для каждой библиотеки, которую требуется восстановить. Этот метод может также использоваться для добавления библиотек, сохраненных в документах. Для практики можно добавить макрос в библиотеку прикладного уровня. Открываем диалог Управление макросами, проверяем, что контейнер библиотек Мои макросы — текущий контейнер. Нажимаем кнопку Создать, чтобы добавить новый модуль в библиотеку прикладного уровня. Для добавления библиотеки следует перейти на вкладку Библиотеки. Проверяем, что Мои макросы выбраны в списке Приложение/Документ, после чего нажимаем кнопку Создать. Библиотеки, сохраненные в документах, могут быть добавлены в контейнер библиотеки приложения. Когда библиотека добавляется, она перезаписывает существующую библиотеку с тем же самым названием. Именно по этой причине имеет смысл создать осмысленное и уникальное имя для библиотеки, содержащей макросы. Это позволит избавиться от многих проблем, возникающих при перемещении макросов между контейнерами библиотеки.

Денис Лавникевич


Компьютерная газета. Статья была опубликована в номере 11 за 2008 год в рубрике soft

©1997-2024 Компьютерная газета