Понятно, что этот макрос должен лежать в какой-либо библиотеке (не в документе).
Решение 1:
- в интерфейсе Writer (или другой программы из Open Office) в меню выбираем Сервис / Настройка...
- Откроется окно Настройка, вкладка События. В ней перечислены все возможные события, которые отлавливает Open Office. Внизу под окном со списком есть поле Сохранить в - выбираем в нем OpenOffice.org (или можно выбрать документ - тогда событие будет перехватываться только если оно происходит в этом документе (впрочем, не совсем так - есть любопытные ошибки)).
- Выбираем нужное событие, ставим на него курсор и нажимаем кнопку [Макрос...].
- Выбираем макрос и жмем [Ok].
- В окне Настройка жмем [Ok].
Решение 2 (редактируем конфигурационный файл, годится доя OpenOffice 3.3):
- Закрываем все программы Open Office, в том числе в трее.
- В папке C:\Documents and Settings\Имя пользователя\Application Data\OpenOffice.org\3\user\ открываем в текстовом редакторе файл registrymodifications.xcu
- после какого-либо тега < /item > вставляем следующий текст:
< item oor:path="/org.openoffice.Office.Events/ApplicationEvents/Bindings" >< node oor:name="OnNew" oor:op="replace" >< prop oor:name="BindingURL" oor:op="fuse" >< value >vnd.sun.star.script:Библиотека.Модуль.ItIsNewDocumentWow?language=Basic&location=application< /value >< /prop >< /node >< /item > - Сохраняем файл.
PS. Данный механизм мы используем для построения этого функционала.
UPD. К сожалению, Решение 2 в OpenOffice 3.0 не работает - иначе устроено хранение настроек по сравнению с версией 3.3.
UPD 2. Решение 3 (общее программное решение, найдено на community.i-rs.ru)
Код функции:
Sub AttachBasicMacroToEvent(EventName as String, SubPath as String) Dim PropValue(1) as new com.sun.star.beans.PropertyValue Dim DocEvents As Object PropValue(0).Name = "EventType" PropValue(0).Value = "Script" PropValue(1).Name = "Script" PropValue(1).Value = "vnd.sun.star.script:" & SubPath & "?language=Basic&location=application" oGEB = CreateUnoService("com.sun.star.frame.GlobalEventBroadcaster") oEvents = oGEB.getEvents() oEvents.ReplaceByName(EventName, PropValue()) End Sub
Вызов функции осуществляется так (для нашего случая - создание нового документа): AttachBasicMacroToEvent("OnNew", "Библиотека.Модуль.ItIsNewDocumentWow")
Комментариев нет:
Отправить комментарий