запустить локальный макрос libreoffice из python? - PullRequest
1 голос
/ 18 июня 2020

В сценарии python я знаю, что могу выполнить настраиваемый макрос libreoffice в контейнере библиотеки «Мои макросы», взяв диспетчер и выполнив:

dispatcher.executeDispatch (frame, "macro: /// Standard.Module1.mymacro "," ", 0, ())

Но как мне вызвать макрос, специфичный для локального документа c? Я предполагаю, что существует заменяющий термин для «макроса ///», например, «документ ///», который заставил бы вышеуказанный вызов работать, но я нигде не могу найти никакой документации. Каков правильный формат строки вызова макроса?

1 Ответ

1 голос
/ 19 июня 2020

Получить поставщик сценария из документа и использовать его для вызова макроса.

desktop = XSCRIPTCONTEXT.getDesktop()
file_url = uno.systemPathToFileUrl("C:/path/to/file.odt")
doc = desktop.loadComponentFromURL(file_url, "_blank", 0, ())
oScriptProvider = doc.getScriptProvider()
oScript = oScriptProvider.getScript(
    "vnd.sun.star.script:Standard.Module1.mymacro?"
    "language=Basic&location=document")
oScript.invoke((), (), ())

Адаптировано из Выполнить LibreOffice Cal c Basi c макрос из python .

...