Використання подій додатків для запуску макросів.

В літературі з програмування на Visual Basic for Applications можна знайти чимало чудових прикладів, які демонструють як із звичайного офісного документа за допомогою макросів можна створити майже самостійну інформаційну систему чи інший програмний продукт. Макроси можуть відкривати-закривати документи та файли, звертатися із запитами до баз даних, запускати додатки офісних пакетів, тощо. В таких прикладах зустрічається доволі багато макросів, що запускаються самостійно при виникненні певної події. Наприклад, при відкритті інформаційної системи виконується макрос, завдання якого сховати стандартні меню та панелі інструментів Microsoft Excel і замінити їх на меню та панель інструментів, створені для цієї інформаційної системи, а перед її закриттям запускається інший макрос, що виконує зворотні дії. Це можливо завдяки закладеній розробниками можливості створювати макроси для обробки подій об’єктів, з яких утворюються офісні програми.

Таку ж можливість мають і макроси OpenOffice та LibreOffice, з тими ж відмінностями, що і для макросів-обробників подій елементів керування. А саме: макрос потрібно призначити для обробки тієї чи іншої події програми у вікні налаштування додатку, що викликається командою Сервіс => Настройка (Tools => Customize).

Настройка - Події

Для закріплення макроса за подією у вікні “Настройка” (Customize) слід перейти на вкладку “Події” (Event), вибрати зі списку потрібну подію і натиснути кнопку “Макрос…”, яка викликає діалог “Вибір макроса” зі списками бібліотек та макросів. У цьому ж вікні кнопкою “Видалити” можна вилучити раніше призначений для обробки події макрос.

Більшість подій у списку вікна “Настройка” пов’язані з документом, зокрема, Створення Документа (Create Document) Відкриття Документа (Open Document), Друк Документа (Print Document). Деякі дії з документом представлені відразу декількома подіями, наприклад, Документ закривається (Document is closing) яка виникає перед тим, як документ буде закрито, та Документ закрито (Document closed), яка виникає після того як закрили документ. Тобто, якщо макрос має виконати якісь дії з документо перед його закриттям, то такий макрос слід призначати для події Документ закривається, а якщо макрос містить дії, які потрібно виконати з вікном програми після закриття документа, то його слід призначати на обобку події Документ закрито.

Певну специфіку має використання двох подій на початку списку — Запуск Програми (Program Start) та Завершення Програми (Program End). Ці події стосуються програми OpenOffice (LibreOffice) вцілому, тому призначений макрос запускатиметься в усіх додатках офісного пакету: Write, Calc, Impress і т. д. Очевидно, що макрос, розміщений в контейнері окремого документа для таких цілей не підходить, оскільки він не завжди буде доступний для виконання. Крім того, в коді таких макросів слід враховувати стан програми на етапі запуску (завершення), наприклад, не вдасться безпосередньо викликати діалог з бібліотеки, оскільки бібліотеки на цьому етапі ще (вже) не завантажені.

Ще один ключовий момент, на який слід звернути увагу — поле зі списком “Зберегти в” (Save In) внизу вікна “Настройка”. Воно свідчить про те, що для кожного документа можна створити власний набір макросів-обробників. В цьому списку присутній також пункт OpenOffice (LibreOffice), який вказує на те, що призначення макросів буде записано у загальному шаблоні.