Writer MacroButton

Автор Ципихович Эндрю, 3 апреля 2026, 10:18

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

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

здравствуйте, аналог Microsoft Word поле MacroButton в Writer вроде имеется, действую по инструкции:
Можно создать гиперссылку, которая запускает макрос:
    • Выделите текст
    • Вставьте гиперссылку (Ctrl+K)
    • В поле URL используйте специальный протокол:  vnd.sun.star.script
Пример URL: vnd.sun.star.script:Standard.Module1.MyMacro?language=Basic&location=document

     
          Разбор структуры:
Часть   Значение
vnd.sun.star.script:   Протокол LibreOffice
Module.py   Имя файла модуля
$insert_image_into_corner   Имя функции (через $)
?language=Python   Язык — Python
&location=document   Расположение — в документе

мой макрос:
Module.py$insert_image_into_corner (document, Python)
моя ссылка:
vnd.sun.star.script:Module.py$insert_image_into_corner?language=Python&location=document
Сервис» → «Параметры...». → «Безопасность» → «Безопасность макросов» стоит низкая
макрос примерно такой:
у меня макрос
def insert_image_into_corner(_=None):......
корректно?

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

Цитата: Ципихович Эндрю от  3 апреля 2026, 10:18у меня макрос
Код Выделить Развернуть
def insert_image_into_corner(_=None):......
корректно?
да корректно - так как повесил на этот макрос событие запуск сочетанием клавиш - работает как надо, осталось разобраться по сабжу...

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

#2
здравствуйте я очень сильно укоротил макрос для теста, ссылка
vnd.sun.star.script:Mod.py$test?language=Python&location=document
макрос
import uno

def Message_box(title, text):
    ctx = uno.getComponentContext();smgr = ctx.ServiceManager;toolkit = smgr.createInstanceWithContext("com.sun.star.awt.Toolkit", ctx);desktop = smgr.createInstanceWithContext("com.sun.star.frame.Desktop", ctx);frame = desktop.getCurrentFrame();window = frame.getContainerWindow();msgbox = toolkit.createMessageBox(window, 1, 1, title, text);msgbox.execute();msgbox.dispose()

def test(_=None):
    Message_box("Сообщение", "Тест")

 
g_exportedScripts = test,
макрос НЕ с ссылки запускается, с ссылки НЕ запускается, подскажите в чём причина?
ОС вин 11, либра:
Version: 26.2.1.2 (X86_64)
Build ID: 620(Build:2)
CPU threads: 12; OS: Windows 11 X86_64 (build 26200); UI render: Skia/Vulkan; VCL: win
Locale: ru-RU (ru_RU); UI: ru-RU
Calc: threaded

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

разобрался:
Цитата: Ципихович Эндрю от  3 апреля 2026, 10:18Можно создать гиперссылку, которая запускает макрос:
    • Выделите текст
    • Вставьте гиперссылку (Ctrl+K)
    • В поле URL используйте специальный протокол:  vnd.sun.star.script
Пример URL: vnd.sun.star.script:Standard.Module1.MyMacro?language=Basic&location=document
это не верно?
Вставка → Поле → Ещё поля... → вкладка Функции → Выполнить макрос - верно, работает!, плохо конечно, было бы два варианта, хоть какой-то прогресс))