Image1

Guia de Introdução 7.0

Capítulo 13
Introdução a Macros

Usar o Gravador de macro… e mais

Copyright

Este documento é Copyright ©2021 pela Equipe de Documentação do LibreOffice. Os contribuintes estão listados abaixo: Você pode distribuí-lo e / ou modificá-lo sob os termos da GNU General Public License ( http://www.gnu.org/licenses/gpl.html ), versão 3 ou posterior, ou a Creative Commons Attribution License ( http://creativecommons.org/licenses/by/4.0/ ), versão 4.0 ou posterior.

Todas as marcas comerciais dentro desse guia pertencem aos seus respectivos donos.

Contribuições

Este livro foi adaptado e atualizado a partir do Guia de Introdução do LibreOffice 6.4

Para esta edição

Jean Hollis Weber

Kees Kriek

Peter Schofield

Dave Barton

Felipe Viggiano

Rafael Lima

Colleen Hayes

Rob Westein

Winston Min Tjong

Leo Moons

 

 

Edições anteriores

Andrew Jensen

Amanda Labby

Cathy Crumbley

Dan Lewis

Dave Barton

Jean Hollis Weber

Jorge Rodriguez

Olivier Hallot

Paul Figueiredo

Peter Schofield

John A Smith

Martin Saffron

Steve Schwettman

Dave Barton

Hazel Russman

Ron Faile Jr.

Kevin O’Brien

Magnus Adielsson

Iain Roberts

JiHui Choi

Regina Henschel

Laurent Balland-Poirier

Christian Kühl

Florian Reisinger

Gisbert Friege (Dmaths)

Jochen Schiffers

Frédéric Parrenin

Bernard Siaud

Miklos Vajna

Valerii Goncharuk

Andrew Pitonyak

Claire Wood

Pulkit Krishna

Roman Kuznetsov

Steve Fanning

 

Tradutores e Revisores

Raul Pacheco da Silva

Olivier Hallot

Felipe Viggiano

Vera Cavalcante

Túlio Macedo

Chrystina Pelizer

Flávio Schefer

Timothy Brennan Jr.

Jackson Cavalcanti Jr.

Comentários e sugestões

Encaminhe quaisquer comentários ou sugestões sobre este documento para a lista de correio da Equipe de Documentação: docs@pt-br.libreoffice.org

Nota

Tudo o que é enviado para uma lista de correio, incluindo seu endereço de e-mail e qualquer outra informação pessoal escrita na mensagem, é arquivado publicamente e não pode ser excluído.

Data de publicação e versão do software

Publicado em Abril de 2021. Baseado no LibreOffice 7.0.

Introdução

Uma macro é uma sequência de comandos salvos ou teclas digitadas que são armazenadas para uso posterior. Um exemplo de uma simples macro é aquela que “digita” seu endereço. A linguagem macro do LibreOffice é muito flexível, permitindo a automação de tarefas simples e complexas. Macros são muito úteis quando você tem que repetir uma mesma tarefa da mesma maneira repetidamente.

As macros LibreOffice são geralmente escritas numa linguagem chamada LibreOffice Basic, algumas vezes abreviada para Basic. Embora você possa aprender Basic e escrever macros, há uma curva de aprendizagem para escrever macros do zero. Os métodos usuais para um iniciante são o uso de macros que alguém tenha escrito ou usar o gravador de macro, que registra as teclas digitadas e as salva para uso.

A maioria das tarefas no LibreOffice são realizadas por “disparo de comando” (execução de um comando), que é interceptado e executado. O gravador de macro funciona através da gravação dos comandos que são executados (veja "Ambiente de execução").

Macros mais poderosas no LibreOffice são criadas escrevendo código usando uma das quatro linguagens de script suportadas (LibreOffice Basic, BeanShell, JavaScript e Python). Este capítulo fornece uma visão geral dos recursos das macro do LibreOffice, mais focado na linguagem de script padrão, o LibreOffice Basic. Alguns exemplos estão incluídos para as linguagens de script BeanShell, JavaScript e Python. Contudo, uma discussão aprofundada sobre como usar essas linguagens para scripts estão além do escopo deste capítulo.

Suas primeiras macros

Adicionar uma macro

O primeiro passo para aprender a programação macro é encontrar e utilizar as macros existentes. Esta seção assume que você tem uma macro que deseja usar, que pode ser num e-mail, numa página web, ou mesmo num livro. Para este exemplo, a macro na Listagem 1 é utilizada. Você deve criar uma biblioteca e um módulo para conter a sua macro; veja "Organização das macros" para mais informações.

Listagem 1: Macro simples que diz Olá

Sub OlaMacro

Print "Olá"

End Sub

Use os seguintes passos para criar uma biblioteca para guardar a sua macro:

  1. Abra qualquer módulo do LibreOffice.

  2. Utilize Ferramentas > Macros > Organizar Macros > Basic para abrir a caixa de diálogo Macros do LibreOffice Basic(Figura 1).

  3. Clique em Organizador para abrir a caixa de diálogo Organizador de macros do LibreOffice Basic (Figura 2) e selecione a guia Bibliotecas.

Figura 1: Caixa de diálogo Macros do LibreOffice Basic

Image11

Figura 2: Caixa de diálogo Organizador de macros BASIC do LibreOffice, Guia Bibliotecas

Figura4

  1. Defina o Local para Minhas macros e caixas de diálogo, que será o local padrão.

  2. Clique Novo para abrir a caixa de diálogo Nova biblioteca.

  3. Insira um nome para a biblioteca, por exemplo TesteBiblioteca, e clique em OK.

  4. Selecione a aba Modulo.

Figura 3: Caixa de diálogo Organizador de macros BASIC, aba Módulos

Figura5

  1. Na lista Modulo, expanda Minhas macros e selecione, por exemplo TesteBiblioteca. Um módulo com o nome Module1 já existe e pode conter a sua macro. Se desejar, você pode clicar Novo para criar outro módulo na biblioteca.

  2. Selecione Module1, ou o módulo que foi criado no item anterior, então clique o botão Editar para abrir o Ambiente integrado de desenvolvimento - Integrated Debugging Environment (IDE) (Figura 4). O IDE é um editor de texto incluído no LibreOffice que permite criar e editar macros.

Figura 4: módulo de Ambiente Integrado de Desenvolvimento

Figura6

  1. Quando um novo módulo é criado, é gerado um esqueleto de macro que inicia com um comentário e uma macro sem conteúdo denominada Main, a qual não faz nada.

  2. Adicione a nova macro antes de Sub Main ou após End Sub. A Listagem 2 mostra a inclusão da nova macro antes de Sub Main.

  3. Clique o ícone Compilar na barra de ferramenta para compilar a macro

  4. Coloque o cursor na sub-rotina OlaMacro e clique o ícone Executar o BASIC na barra de ferramentas, ou pressione a tecla F5, para executar a sub-rotina OlaMacro no módulo. Uma pequena caixa de diálogo abre mostrando a frase “Olá”. Se o cursor não está posicionado numa sub-rotina ou função, uma caixa de diálogo abrirá para que seja selecionada a macro que se deseja executar.

Figura 5: Macro Olá

Figura7

  1. Clique OK para fechar esta pequena caixa de diálogo.

  2. Para selecionar e executar qualquer macro do módulo, clique o ícone Selecionar macro na barra de ferramenta padrão ou utilize o menu Ferramentas > Macros > Organizar macros > LibreOffice Basic.

  3. Selecione a macro e então clique em Executar.

Listagem 2: O Module1 após adicionada a nova macro

REM ***** BASIC *****

Sub OlaMacro

Print "Olá"

End Sub

Sub Main

End Sub

Gravar uma macro

Quando uma macro é gravada no LibreOffice, na verdade se está gravando as etapas para realizar uma certa tarefa usando linguagem de programação. Por exemplo, considere que se queira inserir repetidamente as mesmas informações dentro de um documento. É possível copiar essas informações depois de inseridas em um documento pela primeira vez e, em seguida, colar as informações em um documento cada vez que você quiser usá-las. No entanto, se algo mais for copiado para a área de transferência, o conteúdo da área de transferência é alterado. Isso significa que você deve copiar novamente este pedaço de informação para depois colá-la em um documento. Para superar esse problema, É possível criar uma macro que insira este pedaço de informação sem ter que copiá-lo sempre que precisar.

Nota

Para alguns tipos de informações que se deseja inserir num documento de forma repetida, pode ser mais conveniente criar um arquivo Autotexto. Consulte o Guia do Writer, Capítulo 3, Trabalhar com texto para mais informações.

Certifique-se que a gravação de macros está habilitada indo em Ferramentas > Opções > LibreOffice > Avançado na barra de menu principal e selecione a opção Ativar gravação de macros. Por padrão, esta funcionalidade é desligada na instalação do LibreOffice.

  1. Vá em Ferramentas > Macros > Gravar macro na barra de menu principal para iniciar a gravação de uma macro. Uma pequena caixa de diálogo é exibida indicando que o LibreOffice está gravando uma macro.

  2. Digite a informação desejada ou execute o conjunto de operações apropriadas. Como exemplo, digite seu nome.

  3. Clique Parar Gravação na pequena caixa de diálogo para interromper a gravação e abrir a caixa de diálogo do LibreOffice Basic (Figura 1).

  4. Abra o recipiente de biblioteca Minhas macros.

  5. Encontre a biblioteca com o nome Standard em Minhas macros. Note que todos recipientes de bibliotecas possuem uma biblioteca denominada Standard.

  6. Selecione a biblioteca Standard e clique em Novo módulo para um novo módulo ser criado que armazene a macro. Isto abre a caixa de diálogo Novo módulo.

  7. Digite um nome descritivo para o novo módulo, por exemplo Gravado e clique em OK para criar o módulo. A caixa de diálogo do LibreOffice Basic Macros mostra o nome do novo módulo na biblioteca Standard.

  8. Na caixa de texto Nome da macro, digite um nome para a macro que acabou de gravar, por exemplo EscrevaMeuNome.

  9. Clique Salvar para armazenar a macro e fechar a caixa de diálogo de Macros do LibreOffice.

Se foi seguido todos os passos acima, a biblioteca Standard agora contém um módulo Gravado e neste módulo a macro EscrevaMeuNome.

Nota

Sempre que se cria um novo módulo no LibreOffice, uma sub-rotina chamada Main é adicionada automaticamente ao módulo.

Executar uma macro

  1. Vá em Ferramentas > Macros > Executar macro... para abrir a caixa de diálogo Seletor de macro (Figura 6).

  2. Por exemplo, selecione a macro recém-criada e clique em Executar.

  3. Alternativamente, acesse o menu Ferramentas > Macros > Organizar Macros > LibreOffice Basic para abrir a caixa de diálogo de Macros do LibreOffice Basic, selecione a macro e clique Executar.

Figura 6: Caixa de diálogo Seletor de Macro

Image14

Visualizar e editar macros

Para visualizar e editar a macro que acabou de ser criada:

  1. Use Ferramentas > Macros > Organizar macros > LibreOffice Basic para abrir a caixa de diálogo Macros do LibreOffice Basic.

  2. Selecione a sua macro e clique Editar para abrir a macro na IDE. A macro EscrevaMeuNome é mostrada na Listagem 3.

A macro EscrevaMeuNome não é tão complicada como parece à primeira vista. Aprender algumas coisas ajuda significativamente na compreensão da macro. A discussão começa com as características no topo da macro, com suas descrições.

Listagem 3: Geração da macro “EscrevaMeuNome”.

REM ***** BASIC *****

Sub Main

End Sub

sub EscrevaMeuNome

rem -------------------------------------------------------------

rem definir as variáveis

dim document as object

dim dispatcher as object

rem -------------------------------------------------------------

rem ter acesso ao documento

document = ThisComponent.CurrentController.Frame

dispatcher = createUnoService("com.sun.star.frame.DispatchHelper")

rem -------------------------------------------------------------

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

args1(0).Name = "Text"

args1(0).Value = "Seu nome"

dispatcher.executeDispatch(document, ".uno:InsertText", "", 0, args1())

end sub

Comentários iniciam com REM

Todos os comentários no código da macro iniciam com a palavra-chave REM (do inglês Remark). Todo texto depois da palavra REM, na mesma linha, é ignorado. Também pode ser utilizado o carácter aspa simples (') para iniciar um comentário.

LibreOffice Basic não é sensível a textos maiúsculos e minúsculos, então REM, Rem, e rem podem ser utilizados para iniciar um comentário. Se forem definidas constantes simbólicas pela interface de programação (API do inglês Aplication Programming Interface), os códigos passam a assumir que os nomes são sensíveis a caixa das letras. Constantes simbólicas é um tópico avançado não coberto por este guia, pois não são utilizadas nas macros gravadas no LibreOffice.

Definir sub-rotinas com SUB

Macros individuais são armazenadas em sub-rotinas que devem iniciar com a palavra-chave SUB. A sub-rotina é finalizada quando encontra as palavras END SUB. O código inicia definindo o nome da sub-rotina com Main (do inglês principal), a qual é vazia e não faz nada. A próxima sub-rotina, EscrevaMeuNome, contém o código gerado pela macro que foi gravada.

Nota

O LibreOffice sempre cria uma sub-rotina denominada Main quando cria um módulo novo.

Existem tópicos avançados que estão além do escopo deste guia, mas aqui pode-se ter uma noção de algumas áreas de interesse:

Definir variáveis usando Dim

Você pode escrever uma informação num pedaço de papel para o caso de querer consultar depois. Uma variável, como um pedaço de papel, contém informação que pode ser mudada e lida. A palavra-chave DIM originalmente significava Dimensão e foi utilizada para definir a dimensão de uma matriz (array). A instrução DIM utilizada na macro EscrevaMeuNome é semelhante a usar um pedaço de papel para armazenar uma mensagem ou nota.

Na macro EscrevaMeuNome, as variáveis document e dispatcher são definidas como do tipo object (objeto). Outros tipos comuns de varáveis são string (texto), integer (inteiro), e date (data). A terceira variável, com o nome args1, é uma matriz (array) de valores de propriedade (PropertyValue). As variáveis do tipo array permitem que uma simples variável possa conter valores múltiplos, como armazenar várias páginas num livro. Valores num array são normalmente numerados, começando pelo zero. O número dentro dos parênteses indica o maior número utilizável para acessar a localização do conteúdo armazenado. Neste exemplo, existe somente um valor, que está com valor zero.

Explicar o código da macro

A seguir é explicado cada passo do código utilizado na macro EscrevaMeuNome. Pode ser que nem todos os detalhes sejam entendidos, mas a explicação de cada linha do código pode dar alguma ideia de como trabalha a macro.

sub EscrevaMeuNome

Define o início da macro

dim document as object

Define document como uma variável tipo object. É um tipo específico de variável com múltiplos campos representando propriedades e ações.

dim dispatcher as object

Define dispatcher como uma variável tipo object.

document = ThisComponent.CurrentController.Frame

ThisComponent faz referência ao documento corrente (que está sendo utilizado).

CurrentController é uma propriedade que faz referência a um serviço interno que controla o documento. Por exemplo, quando for digitado, este é o controle que anota o que foi digitado. CurrentController então envia as alterações para o quadro (Frame) do documento.

Frame é uma propriedade controlada que retorna a área principal do documento. Entretanto, a variável com o nome document faz referência para esta área, a qual recebe os comandos enviados.

dispatcher = createUnoService("com.sun.star.frame.DispatchHelper")

Muitas tarefas no LibreOffice são realizadas com execução de comandos. O LibreOffice inclui um serviço de disparador de comandos, o qual faz muitos dos trabalhos quando utiliza a execução de comando nas macros. O método CreateUnoService aceita o nome do serviço e tenta criar uma instância do mesmo. Para finalizar, uma variável de execução de comando (dispatcher) possui uma referência a um disparador de comando do tipo DispatchHelper.

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

Declara uma matriz(array) de propriedades. Cada propriedade tem um nome e um valor. Em outras palavras, é um par nome/valor. O array criado tem uma propriedade no índice zero.

args1(0).Name = "Text"

args1(0).Value = "Seu nome"

Define “Text” como sendo o valor para a propriedade nome (.Name) e “Seu nome” para a propriedade valor (.Value), o qual é o texto que é inserido quando a macro executar.

dispatcher.executeDispatch(document, ".uno:InsertText", "", 0, args1())

Aqui é onde a mágica acontece. O disparador de comandos (dispatcher Helper) envia o comando para a área do documento (armazenado na variável document) com o comando “.uno:InsertText”. Os próximos dois argumentos, nome do quadro e o que procurar, estão fora do escopo deste documento. O último argumento é um array de propriedade para ser utilizado enquanto executa o comando InsertText.

end sub

A última linha do código que finaliza a sub-rotina.

Criar uma macro

Ao criar uma macro é importante fazer dois questionamentos antes de gravar:

  1. As tarefas podem ser escritas como um simples conjunto de comandos?

  2. Os passos podem serem organizados de forma que o último comando deixe o cursor pronto para o próximo comando ou a entrada de texto ou dados no documento?

Um exemplo mais complicado de uma macro

Uma tarefa mais comum é copiar linhas e colunas de dados de uma página da web e formatá-las como uma tabela num documento texto como a seguir:

  1. Copiar os dados de uma página da web para a área de transferência.

  2. Para limpar as informações de formatações e fontes do local de origem, cole o texto no documento Writer como texto sem formatação.

  3. Refaça a formatação do texto com tabulações entre as colunas, então poderá ser convertido em tabela utilizando Tabela > Converter > De texto para tabela na barra de menu principal.

Com as duas questões acima em mente, pode-se verificar se a formatação do texto pode ser gravada como uma macro. O exemplo dos dados copiados mostra o grupo de constantes FontWeight do web site da API (Figura 7). A primeira coluna neste exemplo indica o nome da constante e cada nome é acompanhado por um espaço e uma tabulação, e cada linha tem dois espaços a direita.

A primeira coluna na tabela deve conter um valor numérico, a segunda coluna o nome e a terceira coluna a descrição. Esta conversão pode ser realizada facilmente em todas linhas, exceto para os valores DONTKNOW e NORMAL, que não contêm um valor numérico, mas os valores estão entre 0 e 100 e podem ser inseridos manualmente.

Figura 7: Exemplo de dados copiados

DONTKNOW

A espessura da fontes não é conhecida/especificada.

THIN

especifica uma espessura de fonte de 50%

ULTRALIGHT

especifica uma espessura de fonte de 60%

LIGHT

especifica uma espessura de fonte de 75%

SEMILIGHT

especifica uma espessura de fonte de 90%

NORMAL

especifica uma espessura de fonte normal

SEMIBOLD

especifica uma espessura de fonte de 110%

BOLD

especifica uma espessura de fonte de 150%

ULTRABOLD

especifica uma espessura de fonte de 175%

BLACK

especifica uma espessura de fonte de 200%

Os dados podem ser limpos de diversas formas, todos fáceis de realizar. O exemplo dado abaixo utiliza teclas combinadas, e assume que o cursor inicialmente está na linha com o texto THIN.

  1. Certifique-se que a gravação de macros está habilitada indo em Ferramentas > Opções > LibreOffice > Avançada na barra de menu principal e selecione a opção Ativar gravação de macros. Por padrão, esta funcionalidade é desligada na instalação do LibreOffice.

  2. Vá em Ferramentas > Macros > Gravar macros na barra de menu principal para iniciar a gravação.

  3. Pressione Ctrl+Seta direita para movimentar o cursor para o início da palavra “especifica”.

  4. Pressione Backspace duas vezes para remover a tabulação e o espaço.

  5. Pressione Tab para adicionar a tabulação sem espaço depois do nome da constante.

  6. Pressione Delete para remover a letra minúscula "e" e então pressione Shift+E para incluir um “E” maiúsculo.

  7. Pressione Ctrl+Seta Direita duas vezes para mover o cursor para o início do número.

  8. Pressione Ctrl+Shift+Seta Direita para selecionar e mover o cursor antes do sinal “%”.

  9. Pressione Ctrl+C para copiar o texto selecionado para a área de transferência.

  10. Pressione End para mover o cursor para o fim da linha.

  11. Pressione Backspace duas vezes para remover os dois espaços da direita.

  12. Pressione Home para mover o cursor para o início da linha.

  13. Pressione Ctrl+V para colar o número selecionado para o início da linha.

  14. Colado o valor com espaço extra, então pressione Backspace para remover o espaço extra.

  15. Pressione Tab para inserir uma tabulação entre o número e o nome.

  16. Pressione Home para mover para o início da linha.

  17. Pressione a seta para baixo para mover para a próxima linha.

  18. Pare a gravação da macro e salve a macro, se necessário veja “Gravar uma macroacima.

Leva muito mais tempo para ler e escrever os passos do que para gravar a macro. Trabalhe devagar e pense sobre os passos a fazer. Com a prática, isso se tornará natural.

O código gerado de macro na Listagem 4 foi modificado para conter o número do passo nos comentários para coincidir com o código para o passo acima.

Listagem 4: Copiar um valor numérico para o início da coluna

sub CopiaNumParaCol1

rem -------------------------------------------------------------

rem definir as variáveis

dim document as object

dim dispatcher as object

rem -------------------------------------------------------------

rem ter acesso ao documento

document = ThisComponent.CurrentController.Frame

dispatcher = createUnoService("com.sun.star.frame.DispatchHelper")

rem (3) Pressione Ctrl+Seta direita para mover para o início da palavra “especifica”.

dispatcher.executeDispatch(document, ".uno:GoToNextWord", "", 0, Array())

rem (4) Pressione Backspace duas vezes para remover a tabulação e o espaço.

dispatcher.executeDispatch(document, ".uno:SwBackspace", "", 0, Array())

rem -------------------------------------------------------------

dispatcher.executeDispatch(document, ".uno:SwBackspace", "", 0, Array())

rem (5) Pressione TAB para adicionar a tabulação sem espaço depois do nome da constante.

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

args4(0).Name = "Text"

args4(0).Value = CHR$(9)

dispatcher.executeDispatch(document, ".uno:InsertText", "", 0, args4())

rem (6) Pressione Delete para remover a letra “e” minúscula ...

dispatcher.executeDispatch(document, ".uno:Delete", "", 0, Array())

rem (6) ... e então pressione Shift+E para incluir um “E” maiúsculo.

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

args6(0).Name = "Text"

args6(0).Value = "E"

dispatcher.executeDispatch(document, ".uno:InsertText", "", 0, args6())

rem (7) Pressione Ctrl+Seta Direita duas vezes para mover o cursor para o início do número.

dispatcher.executeDispatch(document, ".uno:GoToNextWord", "", 0, Array())

rem -------------------------------------------------------------

dispatcher.executeDispatch(document, ".uno:GoToNextWord", "", 0, Array())

rem (8) Pressione Ctrl+Shift+Seta Direita para selecionar o número.

dispatcher.executeDispatch(document, ".uno:WordRightSel", "", 0, Array())

rem (9) Pressione Ctrl+C para copiar o texto selecionado para a área de transferência.

dispatcher.executeDispatch(document, ".uno:Copy", "", 0, Array())

rem (10) Pressione End para mover o cursor para o fim da linha.

dispatcher.executeDispatch(document, ".uno:GoToEndOfLine", "", 0, Array())

rem (11) Pressione Backspace duas vezes para remover os dois espaços da direita.

dispatcher.executeDispatch(document, ".uno:SwBackspace", "", 0, Array())

rem -------------------------------------------------------------

dispatcher.executeDispatch(document, ".uno:SwBackspace", "", 0, Array())

rem (12) Pressione Home para mover o cursor para o início da linha.

dispatcher.executeDispatch(document, ".uno:GoToStartOfLine", "", 0, Array())

rem (13) Pressione Ctrl+V para colar o número selecionado para o início da linha.

dispatcher.executeDispatch(document, ".uno:Paste", "", 0, Array())

rem (14) pressione Backspace para remover o espaço extra.

dispatcher.executeDispatch(document, ".uno:SwBackspace", "", 0, Array())

rem (15) Pressione Tab para inserir uma tabulação entre o número e o nome.

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

args17(0).Name = "Text"

args17(0).Value = CHR$(9)

dispatcher.executeDispatch(document, ".uno:InsertText", "", 0, args17())

rem (16) Pressione Home para mover para o início da linha.

dispatcher.executeDispatch(document, ".uno:GoToStartOfLine", "", 0, Array())

rem (17) Pressione a seta para baixo para mover para a próxima linha.

dim args19(1) as new com.sun.star.beans.PropertyValue

args19(0).Name = "Count"

args19(0).Value = 1

args19(1).Name = "Select"

args19(1).Value = false

dispatcher.executeDispatch(document, ".uno:GoDown", "", 0, args19())

end sub

Os movimentos do cursor são utilizados em todas as operações (para substituir a pesquisa no arquivo). Se executar na linha DONTKNOW, a palavra “espessura” é movimentada para o início da linha, e a palavra “O” passa a ser “E”. Isto não está correto, pois não devia ter executado a macro nas linhas com a estrutura errada. Isto deve ser feito manualmente.

Rodar uma macro rapidamente

É tedioso executar repetidamente a macro usando Ferramentas > Macros > Executar Macro na barra de menu principal quando a macro pode ser executada a partir do IDE (Figura 5 acima). Se for necessário executar frequentemente uma determinada macro, é possível atribuir um atalho de teclado para executá-la rapidamente. A seguir estão as etapas para atribuir o atalho Ctrl + K para a macro CopiaNumParaCol1.

  1. para Ferramentas> Personalizar. Isso abrirá a caixa de diálogo Personalizar.

  2. Selecione a aba Teclado. Na seção Teclas de atalho, selecione o atalho Ctrl + K.

  3. Na seção Categoria, selecione Macros do LibreOffice. Navegue nesta seção e selecione a macro CopiaNumParaCol1.

  4. Agora clique no botão Modificar para atribuir o atalho Ctrl + K para a macro CopiaNumParaCol1.

  5. Clique em OK para fechar a caixa de diálogo Personalizar.

Agora você pode executar a macro CopiaNumParaCol1 usando o atalho Ctrl + K . Isso é muito rápido e fácil para configurar depois de se acostumar com o fluxo de trabalho da macro.

Listagem 5: Sub-rotina Main alterada para chamar CopiaNumParaCol1

Sub Main

CopiaNumParaCol1

End Sub

Limitações da gravação de macro

Algumas vezes há falha no gravador de macro e entender o funcionamento interno do LibreOffice ajuda a entender como e por que ocorre a falha. A principal causa dessas limitações é a estrutura de despacho e sua relação com o gravador de macro.

Ambiente de execução

O objetivo do ambiente de execução é fornecer acesso uniforme aos componentes (documentos) para comandos que normalmente correspondem a itens do menu. Usar Arquivo > Salvar na barra de menu principal, as teclas de atalho Ctrl+S, ou clicar no ícone Salvar são todos de comandos que são traduzidos para o mesmo "comando de execução".

A estrutura de despacho também pode ser usada para enviar “comandos” de volta para interface de usuário (UI, user interface, do inglês). Por exemplo, após salvar um novo documento, a lista de arquivos recentes é atualizada.

Um comando de envio é um texto, por exemplo .uno: InsertObject ou .uno: GoToStartOfLine . O comando é enviado para estrutura do documento e este passa o comando até que seja encontrado um objeto que possa manipular o comando.

Como o gravador de macro usa o ambiente de execução

O gravador de macro registra os comandos enviados. O gravador é relativamente simples de usar e os mesmos comandos que são enviados são gravados para uso posterior. O problema é que nem todos os comandos enviados estão completos. Por exemplo, inserir um objeto gera o seguinte código:

dispatcher.executeDispatch(document, ".uno:InsertObject", "", 0, Array())

Com este comando não é possível especificar o tipo de objeto para criar ou inserir. Se um objeto foi inserido de um arquivo, não se pode especificar de qual arquivo inserir.

Caso grave uma macro com o menu Ferramentas > Opções para abrir e modificar itens de configuração, a macro que é gerada não gravará qualquer alteração de configuração. Na verdade, o código gerado estará comentado e não executará nada.

rem dispatcher.executeDispatch(document, ".uno:OptionsTreeDialog", "", 0, Array())

Se uma caixa de diálogo for aberta, é provável que um comando para abrir a caixa de diálogo seja gerado. Qualquer trabalho feito dentro do diálogo não é costumeiramente gravado. Exemplos incluem caixas de diálogos de organização de macro, inserção de caracteres especiais e tipos semelhantes de caixas de diálogos. Outros possíveis problemas usando o gravador de macros incluem coisas como a inserção de uma fórmula, a definição de dados do usuário, configuração de filtros no Calc, ações em formulários de bancos de dados e exportar um documento para um arquivo PDF criptografado. Você nunca sabe ao certo o que funcionará a menos que experimente. Por exemplo, as ações do diálogo de pesquisa são apropriadamente capturadas.

Outras opções

Quando o gravador de macro, não é capaz de resolver um problema específico, a solução usual é escrever o código usando os objetos do LibreOffice. Infelizmente, a curva de aprendizagem é acentuada para os mesmos. Geralmente é melhor começar por exemplos simples e então diversificar lentamente à medida que se aprende mais. Aprender a ler macros geradas é um bom ponto de partida.

Se gravar macros no Calc e o gravador for capaz de gerar corretamente a macro, existe um suplemento disponível que converte macros do Calc quando elas são gravadas. O código final manipula objetos LibreOffice em vez de gerar execuções. Isso pode ser muito útil para aprender o modelo de objeto e pode ser baixado diretamente do site:

http://www.paolo-mantovani.org/downloads/DispatchToApiRecorder/

Organização das macros

No LibreOffice, as macros são agrupadas em módulos, os módulos são agrupados em bibliotecas e bibliotecas são agrupadas em recipientes de bibliotecas. Uma biblioteca é normalmente usada como um agrupamento maior para uma ou outra categoria inteira de macros, ou para um aplicativo inteiro. Módulos normalmente são divididos em funcionalidades, como interação com o usuário e cálculos. Macros individuais são sub-rotinas e funções. A Figura 8 mostra um exemplo da estrutura hierárquica da biblioteca de macros no LibreOffice.

Acesse o menu Ferramentas > Macros > Organizar Macros > LibreOffice Basic para abrir a caixa de diálogo Macros LibreOffice Basic (Figura 1 acima). Todos os recipientes de biblioteca disponíveis são mostrados na lista Macros de. Cada documento é um recipiente de biblioteca capaz de conter várias bibliotecas. O aplicativo em si funciona como dois recipientes de biblioteca: um recipiente para macros distribuídas com o LibreOffice chamada Macros do LibreOffice e um recipiente para macros pessoais chamadas Minhas macros.

As Macros do LibreOffice são armazenadas com o código de execução do aplicativo, que podem não ser editáveis a menos que você seja um administrador. Isso ajuda a proteger estas macros porque não devem ser alteradas e você não deve armazenar suas próprias macros no recipiente do LibreOffice.

A menos que as macros sejam aplicáveis a um único documento e somente para este único documento, suas macros provavelmente serão armazenadas no recipiente “Minhas macros”. Este recipiente Minhas macros é armazenado na área pessoal do usuário ou diretório do usuário.

Figura 8: Hierarquia de bibliotecas de macros

Figura8

Se uma macro está contida num documento, a macro gravada tentará trabalhar com aquele documento; principalmente porque ela usa “ThisComponent” para suas ações.

Cada recipiente de bibliotecas contém uma biblioteca chamada Standard. É melhor criar suas próprias bibliotecas com nomes significativos do que usar a biblioteca Standard. Nomes significativos não são apenas mais fáceis de gerenciar, mas eles também podem ser importados para recipientes de outra biblioteca enquanto a biblioteca Standard não pode.

Cuidado

O LibreOffice permite importar bibliotecas para um recipiente de biblioteca, mas não permitirá substituir a biblioteca chamada Standard. Portanto, se você armazenar suas macros na biblioteca Standard, você não pode importá-las para um outro recipiente de biblioteca.

Assim como faz todo sentido dar a suas bibliotecas nomes significativos, é prudente usar nomes significativos para seus módulos. Por padrão, o LibreOffice usa nomes como Module1, Module2, etc.

Conforme for criando as macros, você deve decidir onde armazená-las. Armazenar uma macro num documento é útil se o documento será compartilhado e você quiser que a macro seja incluída em seu documento. Macros armazenadas no recipiente de bibliotecas chamado Minhas macros, no entanto, são globalmente disponíveis para todos os documentos.

Macros não estão disponíveis até que a biblioteca que os contém seja carregada. As bibliotecas Standard e Template, no entanto, são carregadas automaticamente. A biblioteca carregada é exibida de maneira diferente a partir de uma biblioteca que não está carregada. Para carregar a biblioteca e os módulos que ela contém, dê um duplo clique na biblioteca.

Onde as macros estão armazenadas?

O LibreOffice armazena dados específicos de um usuário na sua pasta de usuário. A localização é específica do sistema operacional. Vá em Ferramentas > Opções > LibreOffice > Caminhos para ver onde outros dados de configuração estão armazenados. Por exemplo, em computador executando Windows, está em C:\Usuários\<nome do usuário>\AppData\Roaming\LibreOffice\4\user. As macros do usuário são armazenadas em LibreOffice\4\user\basic. Cada biblioteca é armazenada em seu próprio diretório fora do diretório basic.

Não é importante entender onde as macros são armazenadas para uso temporário. Se souber onde elas estão armazenadas, no entanto, você pode criar uma cópia de reserva, compartilhar suas macros, ou corrigi-las se houver um erro.

Vá em Ferramentas > Macros > Organizar caixas de diálogo na barra de menu principal para abrir a caixa de diálogo Organizador de macros do LibreOffice Basic (Figura 1 acima). Alternativamente, vá em Ferramentas > Macros > Organizar macros > LibreOffice Basic na barra de menu principal para abrir a caixa de diálogo Macros do LibreOffice Basic (Figura 1 acima) e então clique no botão Organizador.

Exportar macros

A caixa de diálogo Organizar macros do LibreOffice BASIC permite exportar bibliotecas de macro para serem reutilizadas e compartilhadas com outros usuários. Para exportar uma biblioteca de macros:

  1. Vá em Ferramentas > Macros > Organizar macros > Basic... e clique no botão Organizador.

  2. Clique na guia Bibliotecas guia e escolha qual biblioteca você deseja exportar.

  3. Clique em Exportar e então selecione Exportar como biblioteca BASIC (observe que você não pode exportar a biblioteca Standard).

  4. Escolha onde deseja salvar a biblioteca e clique Salvar.

Ao exportar uma biblioteca, o LibreOffice cria uma pasta contendo todos os arquivos relacionados à biblioteca. A Figura 9 mostra um exemplo de como uma biblioteca chamada BibliotecaTeste com um único módulo chamado Módulo 1 seria exportado.

Importar macros

A caixa de diálogo Organizador de macros do LibreOffice Basic permite a importação de biblioteca de macro para seu documento, assim como criar, excluir e renomear bibliotecas, módulos e diálogos.

  1. Selecione o recipiente de biblioteca para usar e então clique no botão Importar para importar uma biblioteca de macro (Figura 1 acima).

  2. Navegue até o diretório que contém a biblioteca a ser importada (Figura 9). Normalmente há dois arquivos para escolher, dialog.xlb e script.xlb. Não importa qual dos dois arquivos seja selecionado, ambos serão importados. Macros podem ser armazenadas em bibliotecas dentro dos documentos LibreOffice. Selecione um documento, em vez de um diretório do disco, para importar bibliotecas armazenadas nesse documento.

Nota

Você não pode importar a biblioteca chamada Standard.

Figura 9: Navegar para uma Biblioteca de Macros

graphics5

Dica

Em computadores com o sistema operacional Linux, os arquivos específicos do LibreOffice são armazenados sob o diretório pessoal do usuário num diretório cujo nome inicia com um ponto (geralmente .config). Diretórios e arquivos com nomes começando com um ponto podem estar ocultos e provavelmente não serão mostrados numa janela de seleção normal. Se estiver usando caixas de diálogo do LibreOffice, em vez de caixas de diálogo específicas do sistema operacional, digite o nome do diretório desejado no campo Nome.

  1. Selecione o arquivo e clique Abrir para continuar e abrir a caixa de diálogo Importar bibliotecas (Figura 10).

Figura 10: Escolha as opções de importação de Bibliotecas

Figura1

  1. Selecione a seguintes opções para importar a biblioteca:

  1. Se nenhuma opção for selecionada, a biblioteca é copiada para o diretório de macro do usuário. No entanto, se a biblioteca que você está importando tem o mesmo nome e está sendo importada para o mesmo local, ela não será copiada.

  2. Selecione Substituir bibliotecas existentes, se a biblioteca que deseja importar tem o mesmo nome e deseja substituir a existente.

  3. Selecione Inserir como referência se desejar utilizar a biblioteca como referência, mas não importar a biblioteca para o documento. Quando a biblioteca é utilizado como referência, ela se mantém no seu local de origem e somente pode ser lida.

  1. Clique OK para importar a biblioteca de macro que foi selecionada.

Baixar macros para importação

Macros estão disponíveis para download. Algumas macros estão contidas em documentos, algumas como arquivos comuns que você deve selecionar e importar e algumas como arquivo de texto que deve ser copiado e colado no IDE Basic. Veja em Adicionar uma macro acima como adicionar macros para a sua biblioteca de macros e Visualizar e editar macros acima como editar macros utilizando a IDE Basic.

Algumas macros estão disponíveis para baixar gratuitamente na Internet (veja a Tabela 1).

Tabela 1. Exemplos de macro

Localização

Descrição

http://www.pitonyak.org/oo.php

Materiais de referência sobre macros.

http://www.pitonyak.org/database/

Materiais de referência sobre banco de dados de macros.

https://wiki.documentfoundation.org/Macros

Lotes de links para macros

http://forum.openoffice.org/en/forum/

Fóruns, com vários exemplos e ajuda.

Como executar uma macro

Embora você possa usar Ferramentas> Macros> Executar macro para executar todas as macros, isso não é eficiente para macros frequentemente executadas. Veja "Executar uma macroacima para mais informação.

A técnica mais comum é atribuir a macro a um botão na barra de ferramentas, item de menu, tecla de atalho, ou um botão incorporado num documento. Ao escolher um método, também é bom fazer perguntas tais como:

As respostas vão determinar onde armazenar a macro e como torná-la disponível. Por exemplo, provavelmente não adicionará uma macro raramente utilizada a uma barra de ferramentas. Para ajudar a determinar suas escolhas, veja a Tabela 2.

Tabela 2. Onde armazenar uma macro

Tipos de macro

LibreOffice (para todos os componentes)

Um tipo específico de documento

Um documento

Barra de ferramentas

Não

Sim

Sim

Menu

Não

Sim

Sim

Atalho

Sim

Sim

Não

Evento

Sim

Não

Sim

Barra de ferramentas, itens de menu e teclas de atalho

Para adicionar um item de menu, tecla de atalho, ou ícone na barra de ferramentas que chame uma macro, use a caixa de diálogo Personalizar (Figura 11).

Esta caixa de diálogo contém abas para configurar menus, teclas de atalho, barra de ferramenta, e eventos. Para abrir esta caixa de diálogo, vá em Ferramentas > Personalizar da barra de menu principal ou clique com o botão direito do mouse num espaço vazio na barra de ferramenta e selecione a opção Personalizar barra de ferramentas no menu de contexto.

A cobertura completa da caixa de diálogo Personalizar está além do escopo deste documento. Clique no botão Ajuda para acessar a página de ajuda que acompanha o LibreOffice ou consulte o Capítulo 14 - Personalizar o LibreOffice.

Figura 11: Abas Menu na caixa de diálogo Personalizar

Figura2

Eventos

No LibreOffice, quando algo acontece, dizemos que ocorreu um evento. Por exemplo, um documento foi aberto, uma tecla foi pressionada ou o mouse foi movido, são todos eventos. O LibreOffice permite que eventos causem um chamado de macro; a macro é então chamada por um manipulador de eventos. A cobertura total sobre o manipulador de eventos está além do escopo deste documento, mas um pouco de conhecimento pode ajudar muito.

Cuidado

Tenha cuidado quando configurar um manipulador de eventos. Por exemplo, suponha que você escreva um manipulador de evento que é chamado a cada vez que uma tecla é pressionada, mas você cometeu um erro, de modo que o evento não é tratado corretamente. Um resultado possível é que seu manipulador de evento consumirá todas as teclas pressionadas, forçando você a finalizar à força o LibreOffice.

  1. Vá em Ferramentas > Personalizar para abrir a caixa de diálogo Personalizar, e selecione a aba Eventos (Figura 12). Os eventos na caixa de diálogo Personalizar estão relacionados com a aplicação completa e documentos específicos.

  2. Em Salvar em, selecione LibreOffice, ou um documento específico a partir da lista suspensa do menu para salvar seu evento.

  3. Um uso comum é atribuir o evento ao criar um documento para chamar uma determinada macro. Então a macro executará certas tarefas de configuração para o documento. Selecione o evento desejado e clique em Macro para abrir o diálogo Seletor de macro (Figura 6 acima).

  4. Selecione a macro que deseja e clique OK para atribuir a macro ao evento. A aba Eventos mostra que o evento foi atribuído para a macro.

Figura 12: Aba Eventos na caixa de diálogo Personalizar

Figura3

Muitos objetos num documento podem ser definidos para chamar macros quando ocorrem eventos. O uso mais comum é adicionar um controle, como um botão, num documento. Mesmo um duplo clique sobre um gráfico abre a caixa de diálogo com uma aba de Macros, que permite atribuir uma macro a um evento.

Extensões

Uma extensão é um pacote que pode ser instalado no LibreOffice para adicionar novas funcionalidades. Extensões podem ser escritas em praticamente qualquer linguagem de programação e podem ser simples ou sofisticadas. Extensões podem ser agrupadas em tipos:

Embora extensões individuais possam ser encontradas em diferentes lugares, existe atualmente um repositório de extensões em http://extensions.libreoffice.org/ e alguma documentação em http://libreplanet.org/wiki/Group:OpenOfficeExtensions/List.

Para mais informações sobre como obter e instalar extensões, consulte o Capítulo 14 - Personalizar o LibreOffice.

Escrever macros sem o gravador

Os exemplos abordados neste capítulo são criados usando o gravador de macros e o dispatcher. Também é possível escrever macros que acessem diretamente os objetos que compõem o LibreOffice se você está confiante em escrever código de computador. Em outras palavras, você pode manipular diretamente um documento.

Manipular diretamente os objetos internos do LibreOffice é um tópico avançado que está além do escopo deste capítulo. A seguir um exemplo simples, no entanto, demonstrando como isso funciona.

Listagem 6: Acrescentar o texto “Olá” para o documento atual.

Sub AppendOla

Dim oDoc

Dim sTextService$

Dim oCurs

REM Este componente refere-se ao documento ativo no momento.

oDoc = ThisComponent

REM Verifica se este é um documento de texto.

sTextService = "com.sun.star.text.TextDocument"

If NOT oDoc.supportsService(sTextService) Then

MsgBox "Esta macro so funciona com um documento de texto"

Exit Sub

End If

REM Obter o cursor visto a partir do controle atual.

oCurs = oDoc.currentController.getViewCursor()

REM Move o cursor para o final do documento.

oCurs.gotoEnd(False)

REM Insere o texto “Olá” no final do documento.

oCurs.Text.insertString(oCurs, "Olá", False)

End Sub

Visão geral das macros BeanShell, JavaScript e Python

Muitos programadores podem não estar familiarizados com o LibreOffice Basic e, portanto, o Calc suporta macros escritas em três outras linguagens que podem ser mais familiares. Estes são BeanShell, JavaScript e Python.

A linguagem de script de macro principal para Calc é o LibreOffice Basic e a instalação padrão do LibreOffice fornece um ambiente de desenvolvimento integrado (IDE) poderoso junto com mais opções para esta linguagem.

As macros são organizadas da mesma maneira para todas as quatro linguagens de script. o contêiner Macros do LibreOffice contém todas as macros que são fornecidas na instalação do LibreOffice. O contêiner Minhas Macros recipiente de biblioteca contém suas macros que estão disponíveis para qualquer um de seus documentos do LibreOffice. Cada documento também pode conter macros que não estão disponíveis para nenhum outro documento.

Quando você usa o recurso de gravação de macro, o Calc cria a macro no LibreOffice Basic. Para usar as outras linguagens de script disponíveis, você deve escrever o código sozinho.

Quando selecionar a execução de uma macro usando Ferramentas > Macros > Executar macro na barra de menus, o Calc exibe a caixa de diálogo Seletor de macro. Esta caixa de diálogo permite a seleção e execução de qualquer macro disponível, codificada em qualquer um dos idiomas disponíveis (Figura 13)

Quando selecionar editar uma macro usando Ferramentas> Macros> Editar Macros na barra de menus, o Calc exibe o IDE do LibreOffice Basic. Esta caixa de diálogo permite a seleção e edição de qualquer macro do LibreOffice Basic disponível, mas não de macros em outros idiomas.

O modelo de componente usado no LibreOffice é conhecido como Universal Network Objects ou UNO. Macros do LibreOffice em qualquer linguagem de script usam uma interface de programação de aplicativo (API) de tempo de execução UNO. A interface XSCRIPTCONTEXT é fornecida para scripts de macro em todas as quatro linguagens de programação e fornece um meio de acesso às várias interfaces de que elas podem precisar para executar alguma ação num documento.

Figura 13: Caixa de diálogo do seletor de macro

Image3

Macros BeanShell

BeanShell é uma linguagem de script semelhante ao Java, lançada pela primeira vez em 1999.

Ao selecionar Ferramentas > Macros > Organizar Macros > BeanShell na barra de menus, o Calc exibe a caixa de diálogo Macros BeanShell (Figura 14)

Clique no botão Editar na caixa de diálogo Macros BeanShell para acessar a janela de depuração BeanShell (Figura 15)

Figura 14: Caixa de diálogo Macros BeanShell

Image4

Figura 15: Janela de depuração BeanShell

Image5

Listagem 7 é um exemplo de macro BeanShell que insere o texto “Hello World from BeanShell” na célula A1 da planilha Calc ativa.

Listagem 7. Macro BeanShell de exemplo

import com.sun.star.uno.UnoRuntime;
import com.sun.star.sheet.XSpreadsheetView;
import com.sun.star.text.XText;

model = XSCRIPTCONTEXT.getDocument();

controller = model.getCurrentController();

view = UnoRuntime.queryInterface(XSpreadsheetView.class, controller);

sheet = view.getActiveSheet();

cell = sheet.getCellByPosition(0, 0);

cellText = UnoRuntime.queryInterface(XText.class, cell);

textCursor = cellText.createTextCursor();

cellText.insertString(textCursor, "Hello World from BeanShell", true);

return 0;

Macros JavaScript

JavaScript é uma linguagem de script de alto nível lançada pela primeira vez em 1995.

Quando selecionar Ferramentas > Macros > Organizar Macros > JavaScript na barra de menus, o Calc exibe a caixa de diálogo Macros JavaScript (Figura 16)

Figura 16: Caixa de diálogo JavaScript Macros

Image6

Clique no botão Editar na caixa de diálogo Macros JavaScript Macros para acessar o Rhino JavaScript Debugger (Figura 17). Instruções detalhadas para usar esta ferramenta podem ser encontradas no site da Mozilla em https://developer.mozilla.org/en-US/docs/Mozilla/Projects/Rhino/Debugger.

Figura 17: Rhino JavaScript Debugger

Image7

A Listagem 8 é um exemplo de macro JavaScript que insere o texto “Hello World do JavaScript” na célula A1 da primeira folha de uma planilha do Calc.

Listagem 8. Macro JavaScript de exemplo

importClass(Packages.com.sun.star.uno.UnoRuntime);
importClass(Packages.com.sun.star.sheet.XSpreadsheetDocument);
importClass(Packages.com.sun.star.container.XIndexAccess);
importClass(Packages.com.sun.star.table.XCellRange);
importClass(Packages.com.sun.star.table.XCell);

documentRef = XSCRIPTCONTEXT.getDocument();

spreadsheetInterface = UnoRuntime.queryInterface(XSpreadsheetDocument, documentRef);

allSheets = UnoRuntime.queryInterface(XIndexAccess, spreadsheetInterface.getSheets());

theSheet = allSheets.getByIndex(0);

Cells = UnoRuntime.queryInterface(XCellRange,theSheet);

cellA1 = Cells.getCellByPosition(0,0);

theCell = UnoRuntime.queryInterface(XCell,cellA1);

theCell.setFormula("Hello World from JavaScript");

Macros Python

O Python é uma linguagem de programação de alto nível e propósito geral que foi lançada pela primeira vez em 1991.

Quando selecionar Ferramentas > Macros > Organizar Macros > Python na barra de menus, o Calc exibe a caixa de diálogo Macros Python (Figura 18)

Figura 18: Diálogo Macros Python

Image8

Os recursos para editar e depurar scripts Python não estão integrados na interface de usuário padrão do LibreOffice. No entanto, você pode editar scripts Python com seu editor de texto preferido ou um IDE externo. A extensão Alternative Python Script Organizer (APSO) facilita a edição de scripts Python, em particular quando embutidos em um documento. Usando APSO, você pode configurar seu editor de código-fonte preferido, iniciar o shell Python integrado e depurar scripts Python. Para obter mais informações, pesquise Python no sistema de Ajuda do LibreOffice e visite a seção Projetando e desenvolvendo aplicativos Python do wiki da The Document Foundation ( https://wiki.documentfoundation.org/Macros/Python_Design_Guide ) e as páginas de ajuda começando em ( https://help.libreoffice.org/latest/en-US/text/sbasic/python/main0000.html )

A Listagem 9 é um exemplo de macro Python que define a célula A1 da primeira planilha num documento do Calc para o texto “Hello World from Python”.

Listagem 9. Macro Python de exemplo

import uno

def HelloWorld():

doc = XSCRIPTCONTEXT.getDocument()

cell = doc.Sheets[0]['A1']

cell.setString('Hello World from Python')

return

Encontrar mais informações

Inúmeros recursos estão disponíveis para fornecer auxílio na escrita de macros Use Ajuda > Ajuda do LibreOffice para abrir a página de ajuda do LibreOffice. O canto superior esquerdo do sistema de ajuda do LibreOffice contém uma lista suspensa que determina que texto de ajuda é mostrado. Para exibir a ajuda para o Basic, escolha LibreOffice Basic nessa lista.

Material incluído

Muitas macros excelentes são incluídas com o LibreOffice. Use Ferramentas > Macros > Organizar macros > LibreOffice Basic para abrir a caixa de diálogo Macros do LibreOffice Basic. Expanda a biblioteca Tools no recipiente de biblioteca LibreOffice. Explore o módulo Debug – alguns bons exemplos incluem o WritedbgInfo(documento) e o PrintdbgInfo (planilha).

Recursos Online

Os links e referências a seguir contém informações sobre a programação de macros:

https://ask.libreoffice.org/pt-br/questions/ (um site de P&R (perguntas&respostas) onde os voluntários respondem questões sobre o LibreOffice também)

http://forum.openoffice.org/en/forum/ (Forum da comunidade OpenOffice/Apache; onde os voluntários respondem questões sobre o LibreOffice também)

http://api.openoffice.org/docs/common/ref/com/sun/star/module-ix.html (IDL oficial de referência. Aqui é possível encontrar praticamente todos os comandos com uma descrição).

https://wiki.documentfoundation.org/Documentation/Other_Documentation_and_Resources (verifique a sessão de Programadores do BASIC Programmers’ Guide e Developers’ Guide; o último possui explicações detalhadas)

http://www.pitonyak.org/oo.php (página de macro por Andrew Pitonyak)

http://www.pitonyak.org/AndrewMacro.odt (numerosos exemplos de macros funcionais)

http://www.pitonyak.org/OOME_3_0.odt (Livro de Andrew Pitonyak sobre macros)

http://www.pitonyak.org/database/ (vários exemplos de macros com uso do Base)

Materiais impressos e livros eletrônicos

Atualmente não existem livros específicos para macros do LibreOffice disponíveis para baixar.

As informações nos livros a seguir são mais úteis para o LibreOffice; os livros estão disponíveis para compra na forma impressa e eletrônica de seus editores.

Dr. Mark Alexander Bain’s Aprenda programação de macro em Planilha OpenOffice.org.
Veja http://www.packtpub.com/openoffice-ooobasic-calc-automation/book.

Roberto Benitez's Programando Banco de dados com OpenOffice.org Base & Basic
Veja http://www.lulu.com/product/paperback/database-programming-with-openofficeorg-base-basic/3568728

Sumário