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.
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.
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.
- Abra o LibreOffice Calc em Aplicativos => Office/Escritório => LibreOffice Calc.
- Ou pesquise "calc" na barra de pesquisa
- Vá para a opção no menu: Ferramentas ==> Macros ==> Organizar Macros ==> LibreOffice Basic. Abaixo da janela 'LibreOffice macros básicos "será aberta.
- 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.
- 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.
- 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")
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
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.
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.
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.
Este comentário foi removido pelo autor.
ResponderExcluirGostei mas pena que as imagens sumiu, parabéns ...
ResponderExcluirObrigado 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.
ExcluirCaramba, tudo isso de código só pra colocar "Hellow word" na primeira célula?, vba é bem mais simples.
ResponderExcluirNo Calc tem vba também.
ExcluirVeja este manual muito bom de Mauricio Baesa, https://github.com/UniversoLibreMexicoAC/book-macros-basic/blob/master/bin/AprendiendoOOoBasic.odt?raw=true
ResponderExcluirObrigado, muito bom mesmo, era o que eu precisava.
ExcluirEstou reunindo mais material sobre o Basic.
Excluirwww.schiavinatto.com/mundolibre/biblioteca-basic.html
Muito bom saber, ja penso em ser um dos colaboradores da comunidade LibreOffice Brasil
ExcluirMeu 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.
ExcluirMais links para documentação BASIC: https://ask.libreoffice.org/pt-br/question/188812/documentacao-para-macros-basic-calc-referencia/
ExcluirObrigado. Muito interessante. Quase não temos artigos sobre o assunto.
ResponderExcluirQue bom que gosto.
ExcluirAssim que tiver algo a mais publico aqui.
Tem alguma documentação em português sobre o Basic
ResponderExcluir