Como executo uma macro do LibreOffice a partir da linha de comando sem a GUI?

2

Eu quero executar uma macro do LibreOffice em arquivos .odt a partir da linha de comando. Porque eu quero escalar isso para aplicar a macro a vários arquivos, não quero que a GUI pop-up em cada execução da macro.

Atualmente, tenho uma macro ativa (que também fecha o arquivo no final) e, até onde posso encontrar, devo chamá-la da seguinte forma:

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

ou

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

Ambos os comandos executam a macro corretamente, no entanto, a GUI é aberta e fechada durante a execução. Como evito isso?

Estou trabalhando em um computador Windows 10 e Ajuda > Sobre o LibreOffice fornece as seguintes informações:

Version: 5.2.1.2
Build ID: 31dd62db80d4e60af04904455ec9c9219178d620
CPU Threads: 4; OS Version: Windows 6.2; UI Render: default;
Locale: en-US (en_US); Calc: CL

    
por dimpol 17.10.2016 / 17:11

1 resposta

2

O problema é que, mesmo que o LibreOffice esteja invisível quando iniciado, ele se torna visível após a abertura de um documento. Existe uma solução no link :

  1. Execute o LibreOffice sem recursos para chamar uma macro. A chamada da linha de comando deve não especificar o documento a ser aberto, apenas uma macro. Por exemplo (usando a sintaxe de macro mais recente):

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

  2. A macro chama loadComponentFromUrl com a propriedade Hidden definida como true. Isso fará com que o documento não fique visível.

  3. Agora, a macro realiza o que quer que seja que ela faria com o documento.

EDITAR :

Para fazer com que funcione para arquivos diferentes, passe o nome do arquivo como um parâmetro usando a sintaxe de macro mais antiga. Um exemplo do link :

soffice "macro:///Library3.Module1.test_Args(arg1,123,4.567,2000-12-31)"
    
por 18.10.2016 / 15:03