Pular para o conteúdo principal

Escrevendo uma Macro no LibreOffice Calc - Introdução

Este tutorial foi retirado do site Debugpoint, não mudei nada nenhuma linha de comando, apenas traduzir a explicação do tutorial e espero que ajudem a todos.

O LibreOfice fornece uma maneira de escrever a sua própria macro para automatizar várias tarefas repetitivas em seu aplicativo de escritório. Você pode usar Python ou Basic para o desenvolvimento do macro. Este tutorial se concentra em escrever um macro básico 'Olá Mundo' usando básico do LibreOffice Calc. 

Macro Objetivo 

Nós iremos criar uma macro que iria colocar a string 'Olá Mundo' na primeira célula do LibreOffice Calc ou seja, a célula da linha 1 e col A.

Criando o Macro 
  • Abra o LibreOffice Calc em Aplicativos => Office/Escritório => LibreOffice Calc. 
  • Ou pesquise "calc" na barra de pesquisa
http://i2.wp.com/www.debugpoint.com/blog/wp-content/uploads/2014/09/LibreOffice_1.png

  • Vá para a opção no menu: Ferramentas ==> Macros ==> Organizar Macros ==> LibreOffice Basic. Abaixo da janela 'LibreOffice macros básicos "será aberta.
LibreOffice_2


  • Dê o nome desejado na macro nome caixa e clique em Novo. Você pode usar qualquer nome que você quiser. Para este tutorial usaremos o hello_world.
LibreOffice_3


  • Depois de ter clicado no botão Novo, abaixo macro editor será aberto. Aqui estão algumas coisas a serem observadas nesta janela. Este é o lugar onde você deve escrever o seu código, a depuração do código etc. Você pode ver o nome da macro tornou-se o nome da função de sua macro básico.
LibreOffice_4

  • Agora, é hora de codificar a primeira macro. Vamos declarar duas variáveis de objetos do tipo.
dim document as object (documento dim como objeto)
dim dispatcher as object (despachante dim como objeto)
Permite atribuir dois valores para as variáveis acima.

document = ThisComponent.CurrentController.Frame
dispatcher = createUnoService("com.sun.star.frame.DispatchHelper")

ThisComponent refere-se ao documento atual. No LibreOffice, tudo que você faz, por exemplo, tipo, cor, inserir, é "observados" por um controlador. O controlador então despacha as alterações no quadro do documento ou seja, a principal área da janela do Calc. Assim, a variável de documento refere-se à área principal do Calc. 

createUnoService cria uma instância do serviço DispatchHelper. Este serviço vai nos ajudar a despachar as tarefas de macro para a armação. Quase todas as tarefas macro do LibreOffice podem ser executados usando despachante. 

dim args1(0) as new com.sun.star.beans.PropertyValue
dim args2(0) as new com.sun.star.beans.PropertyValue
Our objective is to put 'Hello World' in the first Cell. To point the first cell A1 and put a text, we would use two properties - 'ToPoint' and 'StringName'. 
args1(0).Name = "ToPoint"
args1(0).Value = "$A$1"
 
args2(0).Name = "StringName"
args2(0).Value = "Hello World!"
Assim que definir as propriedades, é hora de chamar a expedição, para enviá-los para o documento. Então ligue para o evento executeDispatch do despachante usando dois comandos - a) ".uno: GoToCell" b) ".uno: EnterString". Estes comandos diz a moldura que precisa ser executado e também passar toda a matriz de propriedade com valores.
Agora coloque um messagebox para notificar quando a execução for concluída.
 
LibreOffice_5 
 
 Execute o Macro 

É hora de executar a macro. Para executar a macro, pressione F5 ou clique em Executar Macro da barra de ferramentas (veja acima). 

Após a execução, o messagebox iria aparecer. Se você voltar e verificar a planilha Calc, você deve ver "Hello Word! 'É escrito na primeira Celula. 

LibreOffice_6 

LibreOffice_7 

Código Completo:

REM  *****  BASIC  *****
sub hello_world

    dim document   as object
    dim dispatcher as object

    document   = ThisComponent.CurrentController.Frame
    dispatcher = createUnoService("com.sun.star.frame.DispatchHelper")

    dim args1(0) as new com.sun.star.beans.PropertyValue
    dim args2(0) as new com.sun.star.beans.PropertyValue

    args1(0).Name = "ToPoint"
    args1(0).Value = "$A$1"
    dispatcher.executeDispatch(document, ".uno:GoToCell", "", 0, args1())

    args2(0).Name = "StringName"
    args2(0).Value = "Hello World!"
    dispatcher.executeDispatch(document, ".uno:EnterString", "", 0, args2())

   msgbox "Completed!"
end sub
 


Nota: Esta macro é aplicável para o OpenOffice também.
 
Fonte: DebugPoint

Comentários

  1. Gostei mas pena que as imagens sumiu, parabéns ...

    ResponderExcluir
    Respostas
    1. Obrigado Edson, creio que o google deve ter retirado, no site de onde retirei as imagens podem ser vistas, so clicar no final da postagem na Fonte.

      Excluir
  2. Caramba, tudo isso de código só pra colocar "Hellow word" na primeira célula?, vba é bem mais simples.

    ResponderExcluir
  3. Veja este manual muito bom de Mauricio Baesa, https://github.com/UniversoLibreMexicoAC/book-macros-basic/blob/master/bin/AprendiendoOOoBasic.odt?raw=true

    ResponderExcluir
    Respostas
    1. Obrigado, muito bom mesmo, era o que eu precisava.

      Excluir
    2. Estou reunindo mais material sobre o Basic.
      www.schiavinatto.com/mundolibre/biblioteca-basic.html

      Excluir
    3. Muito bom saber, ja penso em ser um dos colaboradores da comunidade LibreOffice Brasil

      Excluir
    4. Meu Amigo Muitíssimo obrigado pelo material, como sabemos material para OOoBasic é praticamente inexistente, porém extremamente necessário. Faz tempo que estou tentando largar o Microsoft Office, mas infelizmente com os tutoriais disponíveis para o LibreOffice vai demorar um pouco ainda.

      Excluir
    5. Mais links para documentação BASIC: https://ask.libreoffice.org/pt-br/question/188812/documentacao-para-macros-basic-calc-referencia/

      Excluir
  4. Obrigado. Muito interessante. Quase não temos artigos sobre o assunto.

    ResponderExcluir
  5. Tem alguma documentação em português sobre o Basic

    ResponderExcluir

Postar um comentário