Шаблон ott, как создать модуль

Автор Ципихович Эндрю, 9 ноября 2024, 09:51

0 Пользователи и 1 гость просматривают эту тему.

Ципихович Эндрю

здравствуйте, создал модуль Normal.ott, открыл его, то есть вижу его название Normal.ott — LibreOffice Writer
как создать модуль?
я зашёл внутрь — Каталог объектов, там есть Normal.ott и папка Standard, выделив её или щёлкнув по ней НЕТ возможности создать модуль, как это сделать?
правильно понимаю, что если в этот модуль помещу макрос
Sub OnDocumentOpen
    MsgBox "Документ открыт!"
End Sub
то при создании документа с этого шаблона буду получать сообщение об открытии документа?

Ципихович Эндрю

как создать понял
Сервис—Макросы—Управление макросами—Basic...
Кнопка «Создать» — указать имя модуля
как сделать чтобы он выполнялся при открытии нужного документа и всех документов?
по аналогии как в Ворде? Auto

Ципихович Эндрю

Назначение макроса на событие открытия документа разобрался
Сервис—Настройка—Открытие документа—Макрос—Указать макрос
но это Не решает задачу, документы на основе этого шаблона НЕ выполняют данный макрос, как это сделать?

sokol92

Продолжайте успешное самообучение...   :)

Обратите внимание на выпадающий список "Сохранить в:". Если выбрать "LibreOffice", то событие будет применяться ко всем документам. Разумеется, макрос нужно поместить в (любую) библиотеку приложения (Мои макросы и диалоги).
Владимир.

Ципихович Эндрю

Цитата: sokol92 от  9 ноября 2024, 15:28Обратите внимание на выпадающий список "Сохранить в:". Если выбрать "LibreOffice", то событие будет применяться ко всем документам. Разумеется, макрос нужно поместить в (любую) библиотеку приложения (Мои макросы и диалоги).
обратил внимание....
не получилось, можете приложить пример файла  Normal.ott  с простейшим кодом
Option Explicit

Sub AutoOpen
'вывод сообщения
    MsgBox "Документ открыт!"
End Sub
и получается, что я сообщение буду видеть в 2 случаях
1 открытие шаблона
2 создание из шаблона документа
и если можно внутри макроса завести ветки чтобы сообщения информировали
Шаблон открыт!
Документ открыт с шаблона, на его основе можно создавать документы!
Спасибо

sokol92

#5
В MS Office нет "штатного" места для записи макросов для всего приложения - поэтому в MS Word используется для этого Normal.dot(m).

В LO макросы, которые будут вызываться для всех документов, записываются в библиотеки приложения (Мои макросы и диалоги). Примеров в сети много.

Макросы, которые будут вызываться при возникновении события конкретного документа, можно записать в этот документ. В частности, Вы можете занести макросы в шаблон и настроить (Меню / Сервис / Настройка / События) вызов этих макросов при возникновении определенных событий. Тогда в созданных на основе шаблона документах эти макросы, естественно, будут присутствовать и вызываться.
Владимир.

Ципихович Эндрю

делаю так Сервис / Настройка / События Открытие документа—Макрос—Указал макрос, выбрал "LibreOffice" нажал ОК, форма скрывается
не закрывая документ снова открываю эту форму и вижу что вместо "LibreOffice" указано "Normal.ott" ЧЯДНТ?

sokol92

Цитата: Ципихович Эндрю от  9 ноября 2024, 18:03выбрал "LibreOffice"
Макрос следует поместить не в документ, а в "Мои макросы и диалоги".
Владимир.

sokol92

А вот пример шаблона, который при открытии созданных на его основе документов об этом сообщает.
Попробуйте!
Владимир.

Ципихович Эндрю

Цитата: sokol92 от  9 ноября 2024, 18:11А вот пример шаблона, который при открытии созданных на его основе документов об этом сообщает.
Попробуйте!
ок, есть такое
и после сообщения валится ошибка
Ошибка сценария при выполнении сценария Basic vnd.sun.star.script:Standard.Module1.AutoOpen?language=Basic&location=document.

Сообщение: The following Basic script could not be found:
library: 'Standard'
module: 'Module1'
method: 'AutoOpen'
location: 'document'
и самое интересное, что сегодня я удалил либру и поставил свежую и все макросы со старой либры перекочевали - кто просил? я НЕ просил......

sokol92

Цитата: Ципихович Эндрю от  9 ноября 2024, 18:28и после сообщения валится ошибка
Ошибка сценария при выполнении сценария Basic vnd.sun.star.script:Standard.Module1.AutoOpen?language=Basic&location=document.
Это - следствие Ваших экспериментов.
Зайдите в Меню / Сервис / Настройка / События; "Cохранить в:" "LibreOffice".
Удалите все заполненные строки и "OK".
Владимир.

Ципихович Эндрю

Цитата: sokol92 от  9 ноября 2024, 18:58Это - следствие Ваших экспериментов
ок, если я сейчас удалю либру, затем поставлю её заново, тогда она будет девственная?
затем я скачаю файл с сообщения 8 и будет работать без ошибок