Как запустить макрос LibreOffice из командной строки без графического интерфейса?

Я хочу запустить макрос LibreOffice .odt файл(ы) из командной строки. Поскольку я хочу масштабировать это до применения макроса к нескольким файлам, я не хочу, чтобы графический интерфейс появлялся при каждом выполнении макроса.

у меня в настоящее время есть рабочий макрос (который также закрывает файл в конце), и, насколько я могу найти, я должен иметь возможность вызвать его следующим образом:

soffice --invisible --nofirststartwizard --headless --norestore "D:myFoldermy file.odt" "macro:///Standard.Module1.myMacro"

или

swriter --invisible --nofirststartwizard --headless --norestore "D:myFoldermy file.odt" "macro:///Standard.Module1.myMacro"

обе команды выполняют макрос правильно, однако графический интерфейс открывается и закрывается во время выполнения. Как я могу предотвратить это?

Я работаю на компьютере с Windows 10 и Справка>О LibreOffice дал следующую информацию:

версия: 5.2.1.2


ID сборки: 31dd62db80d4e60af04904455ec9c9219178d620


Потоки процессора: 4; Версия ОС: Windows 6.2; UI Render: default;


Локаль: en-US (en_US); Calc: CL

24
задан dimpol
05.03.2023 13:23 Количество просмотров материала 3181
Распечатать страницу

1 ответ

проблема в том, что даже если LibreOffice невидим при запуске, он становится видимым после открытия документа. Есть решение на https://forum.openoffice.org/en/forum/viewtopic.php?f=5&t=22548:

  1. запустить LibreOffice headless для вызова макроса. Вызов командной строки должен не укажите документ для открытия, просто макрос. Например (с помощью нового макроса синтаксис):

    soffice -headless -invisible "vnd.sun.star.script:Standard.Module1.MySubroutine? language=Basic&location=application"

  2. макрос называет loadComponentFromUrl С Hidden свойству установлено значение true. Это приведет к тому, что документ не станет видимым.

  3. теперь макрос выполняет все, что он собирался сделать с документом.

редактировать:

чтобы заставить его работать для разных файлов, передайте имя файла в качестве параметра, используя старый синтаксис макроса. Пример из https://forum.openoffice.org/en/forum/viewtopic.php?f=20&t=8232:

soffice "macro:///Library3.Module1.test_Args(arg1,123,4.567,2000-12-31)"
2
отвечен Jim K 2023-03-06 21:11

Постоянная ссылка на данную страницу: [ Скопировать ссылку | Сгенерировать QR-код ]

Ваш ответ

Опубликуйте как Гость или авторизуйтесь

Имя
Вверх