Escolar Documentos
Profissional Documentos
Cultura Documentos
Captulo 13
Introduo s Macros
Usando o Gravador de Macros e mais alm
Direitos Autorais
Este documento protegido por Copyright 2010 por seus contribuidores listados abaixo. Voc pode distribuir e/ou modificar este trabalho, tanto sob os termos da Licena Pblica Geral GNU (http://www.gnu.org/licenses/gpl.html), verso 3 ou posterior, ou da Licena de Atribuio Creative Commons (http://creativecommons.org/licenses/by/3.0/), verso 3.0 ou posterior. Todas as marcas comerciais dentro desse guia pertencem aos seus respectivos donos.
Contribuidores
A verso original em ingls deste captulo teve como autor Ron Faile Jr.. A traduo e localizao deste captulo teve como colaboradores: Claudio Filho, Marcus Gama e Raul Pacheco da Silva.
Comentrios e sugestes
Qualquer comentrio ou sugesto sobre este documento pode ser enviado para a lista: docs@pt-br.libreoffice.org
Agradecimentos
Este captulo foi baseado na verso em ingls do Captulo 13 do Getting Started with OpenOffice.org. Os colaboradores que contriburam para esse captulo foram: Andrew Pitonyak Jean Hollis Weber
Equivalente no Mac
LibreOffice Preferncias Control+clique
(Comando)
Resultado
Acessa as opes de configurao Abre o menu de contexto Utilizada com outras teclas Abre o Navegador Abre a janela Estilos e formatao
Shift++F5
+T
Sumrio
Direitos Autorais............................................................................................................................... 2 Nota para usurios de Mac.............................................................................................................. 2 Sua primeira macro.......................................................................................................................... 4 Adicionando uma macro existente...............................................................................................4 Criando uma macro simples........................................................................................................5 Executando a macro.................................................................................................................... 7 Visualizando e editando a macro.................................................................................................7 Comentrios iniciam com REM...............................................................................................8 Definindo sub-rotinas com SUB..............................................................................................8 Definindo variveis usando DIM.............................................................................................9 Extraindo a macro em grupos.................................................................................................9 Criando uma macro........................................................................................................................ 10 Um exemplo complicado........................................................................................................... 10 Executando a macro rapidamente.............................................................................................13 s vezes o gravador de macro falha..............................................................................................13 A infraestrutura de envio (dispatch framework) ........................................................................13 Como o gravador de macro usa a estrutura envio.....................................................................13 Outras opes........................................................................................................................... 14 Organizao das macros............................................................................................................... 14 Onde as macros esto armazenadas?......................................................................................17 Importando macros....................................................................................................................17 Download de macros para importao......................................................................................19 Como executar uma macro............................................................................................................ 19 Item de Menu............................................................................................................................ 21 Teclas de atalho........................................................................................................................ 21 Barra de ferramentas................................................................................................................. 21 Eventos..................................................................................................................................... 22 Extenses...................................................................................................................................... 23 Escrevendo macros sem o gravador..............................................................................................24 Encontrando mais informaes......................................................................................................24 Material includo........................................................................................................................ 24 Recursos Online........................................................................................................................ 24 Materiais impressos e livros eletrnicos....................................................................................25
Introduo s Macros
Figura 1: Ativar macros na caixa de dilogo Opes A maioria das tarefas no LibreOffice so realizadas por despachar um comando (enviar um comando), que interceptado e utilizado. O gravador de macro funciona gravando os comandos que so enviados (veja A infraestrutura de envio (dispatch framework) na pgina 13).
Introduo s Macros
Voc deve criar uma biblioteca e mdulos para conter suas macros; que esto organizadas como descrito em Organizao das macros na pgina 14. Use estas etapas para criar uma biblioteca para conter sua macro: 1) Use Ferramentas Macros Organizar macros LibreOffice Basic para abrir a caixa de dilogo de Macros (ver Figura 2 e Figura 7). 2) Clique em Organizador para abrir a caixa de dilogo do Organizador de macros do LibreOffice Basic (ver Figura 8). 3) Selecione a aba Bibliotecas. 4) Definir o Local para Minhas macros e caixas de dilogos, que o padro. 5) Clique em Nova para abrir a caixa de dilogo Nova biblioteca. Digite na caixa Nome o nome para a biblioteca, como Teste_Biblioteca e clique OK. 6) Selecione a aba Mdulos. 7) Na lista Mdulo, expanda Minhas macros e selecione Teste_Biblioteca. Um mdulo chamado Module1 j existe e pode conter sua macro. Voc pode clicar em Novo para criar outro mdulo em Teste_Biblioteca. 8) Selecione o Module1, ou o novo mdulo que voc criou, e clique Editar para abrir Ambiente de Depurao Integrado (da sigla em ingls, IDE). 9) O IDE um editor de texto para macros que permite editar e criar macros. Copie o macro no IDE. Quando um novo mdulo criado, ele contm um comentrio e uma macro chamada Main, que no faz nada. Listagem 2: Contedo do Module1 aps sua criao.
REM ***** BASIC *****
Adicionar a nova macro ou antes do Sub Main ou aps o End Sub. Na Listagem 3, a nova macro foi adicionada antes do Sub Main. Listagem 3: Module1 aps a adio da nova macro.
REM ***** BASIC *****
Sub Macro_Ola Print "Ola" End Sub Sub Main End Sub
Clique no boto Executar o BASIC na barra de ferramentas, ou pressione F5, para executar a primeira macro no mdulo. Use a caixa de dilogo Macros do LibreOffice Basic, aberta usando o boto Selecionar macro ou Ferramentas Macros Organizar macros LibreOffice Basic, para selecionar e executar qualquer macro no mdulo.
contedo alterado. Armazenar o contedo como uma macro uma soluo simples. (em alguns casos simples, incluindo o exemplo usado aqui, a melhor soluo a utilizao de Autotexto). 1) Use Ferramentas Macros Gravar macros para iniciar a gravao de uma macro. Uma pequena janela exibida para que voc saiba que o LibreOffice est gravando. 2) Digite as informaes desejadas ou execute uma srie de operaes apropriadas. Neste caso, eu digitei o nome Marcus Gama. 3) Clique no boto Para gravao para parar a gravao, salve a macro, e a caixa de dilogo Macros do LibreOffice Basic exibida.
Recipientes de bibliotecas Macros
Bibliotecas Mdulos
Figura 2: Caixa de dilogo Macros do LibreOffice Basic no LibreOffice, mdulo Writer selecionado 4) Esteja certo de abrir o recipiente de biblioteca chamado Minhas macros. Encontre a biblioteca chamada Standard abaixo de Minhas macros. Esteja ciente de que cada recipiente da biblioteca tem uma biblioteca chamada Standard abaixo. Selecione a biblioteca Standard e clique Novo para criar um novo mdulo para conter a macro. 5) O nome padro para o mdulo Module1. Digite um nome descritivo e clique em OK para criar o mdulo. A caixa de dilogo Macros do LibreOffice Basic mostrada novamente, mostrando o novo mdulo.
Figura 3: D ao seu mdulo um nome significativo 6) Destaque o mdulo recm criado. No canto superior esquerdo (Caixa Nome da macro), digite o nome da macro a usar, como DigiteMeuNome, e ento clique Novo para salvar a macro.
Introduo s Macros
Se voc seguiu todos os passos, a biblioteca Padro agora contm um mdulo chamado Gravando, que contm a macro DigiteMeuNome, como mostrado na Figura 4.
Nota
Quando o LibreOffice cria um novo mdulo, automaticamente adiciona a macro chamada Main.
Executando a macro
Use Ferramentas Macros Executar macro para abrir a caixa de dilogo Seletor de macro. Selecione a macro recm-criada e clique em Executar.
Figura 4: Selecione uma macro e clique em Executar Existem outros mtodos para executar uma macro. Por exemplo, use Ferramentas Macros Organizar macros LibreOffice Basic para abrir a caixa de dilogo Macros do LibreOffice Basic, que contm um boto Executar tambm. Outro mtodo usar o Organizador de macros do LibreOffice Basic; a caixa de dilogo abre mais rpida, mas o processo de seleo pode ser ligeiramente mais lento.
End Sub sub DigiteMeuNome rem ------------------------------------------------------------rem definir as variveis 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 = "Marcus Gama" dispatcher.executeDispatch(document, ".uno:InsertText", "", 0, args1()) end sub
A macro na Listagem 4 no to complicada como parece primeira vista. Aprender algumas coisas ajuda significativamente na compreenso da macro gerada. A discusso comea com caractersticas prximas do topo da lista da macro descrevendo-as. Se voc quiser pular os detalhes, ento simplesmente mude o texto Marcus Gama na macro acima para o que voc queira inserir na posio atual do cursor.
Dica
Dica
O LibreOffice sempre cria uma sub-rotina vazia chamada Main quando se cria um mdulo.
H tpicos avanados que esto alm do escopo deste documento, mas o conhecimento deles pode ser interessante:
Voc pode escrever uma macro de forma que os valores possam ser passados para a
sub-rotina. Os valores so chamados argumentos. Macros gravadas no aceitam argumentos.
Introduo s Macros
Outro tipo de sub-rotina chamada uma funo. Uma funo uma sub-rotina que retorna
um valor, A palavra-chave FUNCTION usada em vez de SUB para definir uma funo. Macros geradas so sempre do tipo SUB.
Este componente se refere ao documento atual. A propriedade CurrentController de um documento se refere ao servio que controla o documento. Por exemplo, quando voc digita, este o controlador atual que acionado. O Controlador atual em seguida envia as alteraes para o quadro do documento. A propriedade Frame de um controlador retorna um quadro principal para um documento. Portanto, a varivel chamada document refere-se a um quadro do documento, que recebe os comandos enviados.
document = ThisComponent.CurrentController.Frame
A maioria das tarefas no LibreOffice so realizadas enviando um comando. O LibreOffice inclui um servio de auxiliador de envio (dispatch helper), que faz a maior parte do trabalho de envio nas macros. O mtodo createUnoService aceita nome de um servio e ele tenta criar uma instncia deste servio. Concluindo, a varivel dispatcher contm uma referncia para um DispatchHelper.
dispatcher = createUnoService("com.sun.star.frame.DispatchHelper")
Declare uma matriz de propriedades. Cada propriedade tem um nome e um valor, em outras palavras, um par nome / valor. A matriz criada tem uma propriedade no ndice zero.
dim args1(0) as new com.sun.star.beans.PropertyValue
Dar a propriedade o nome Text e o valor Marcus Gama, que o texto que inserido quando a macro executada.
args1(0).Name = "Text" args1(0).Value = "Marcus Gama"
Aqui onde a mgica acontece. O auxiliador de envio (dispatch helper) envia uma mensagem para o quadro do documento (armazenado na varivel chamada document) com o comando .uno:InsertText. Os dois prximos argumentos, frame name e search flags, esto fora do escopo
deste documento. O ltimo argumento a matriz de valores de propriedades para ser usada durante a execuo do comando InsertText.
dispatcher.executeDispatch(document, ".uno:InsertText", "", 0, args1())
Um exemplo complicado
Eu frequentemente copio linhas e colunas de dados para uma pgina Web e formato-os como uma tabela em um documento de texto. Primeiro, eu copio a tabela a partir da pgina Web para a rea de transferncia. Para evitar formatao e fontes estranhas, eu copio o texto em um documento do Writer como texto no formatado. Eu reformato o texto com separador entre as colunas para que eu possa usar Tabela Converter De texto para tabela para converter para uma tabela. Eu inspeciono o texto para ver se eu posso gravar uma macro para formatar o texto (lembre-se as duas questes que eu fiz). Como exemplo, eu copiei o grupo de constantes de peso da fonte da pgina Web do LibreOffice. A primeira coluna indica o nome constante. Cada nome seguido por um espao e uma tabulao. NOSEI FINO ULTRACLARO CLARO SEMICLARO NORMAL SEMINEGRITO NEGRITO ULTRANEGRITO PRETO O peso da fonte no especificado / conhecido. especifica 50% do peso da fonte. especifica 60% do peso da fonte. especifica 75% do peso da fonte. especifica 90% do peso da fonte. especifica um peso de fonte normal. especifica 110% do peso da fonte. especifica 150% do peso da fonte. especifica 175% do peso da fonte. especifica 200% do peso da fonte.
Eu quero que a primeira coluna contenha um valor numrico, a segunda coluna o nome, e a terceira coluna a descrio. O trabalho desejado facilmente realizado para cada linha exceto para NOSEI e NORMAL, que no contm um valor numrico, mas eu sei que os valores so 0 e 100, por isto eu vou inserir estes valores manualmente. O dados podem ser limpos de vrias formas, em todos elas de maneira fcil. O primeiro exemplo usa atalhos de teclado que assumem que o cursor estar no incio da linha com o texto FINO. 1) Use Ferramentas Macros Gravar macro para iniciar a gravao. 2) Pressione Crtl+Seta para a direita para mover o cursor para o incio da especifica.
10 Introduo s Macros
3) Pressione Backspace duas vezes para remover a tabulao e o espao. 4) Pressione Tab para adicionar a tabulao sem o espao depois do nome constante. 5) Pressione Delete para excluir a minscula e e ento pressione E para adicionar uma letra E maiscula. 6) Pressione Ctrl+Seta para a direita uma vez para mover o cursor para o incio do nmero. 7) Pressione Ctrl+Shift+Seta para a direita para selecionar e mover o cursor antes do sinal %. 8) Pressione Ctrl+C para copiar o texto selecionado para a rea de transferncia. 9) Pressione End para mover o cursor para o final da linha. 10) Pressione Blackspace duas vezes para remover os dois espaos direita. 11) Pressione Home para mover o cursor para o incio da linha. 12) Pressione Ctrl+V para copiar o nmero selecionado para o incio da linha. 13) Colar um valor tambm adiciona um espao extra, ento pressione Blackspace para remover o espao extra. 14) Pressione Tab para inserir uma tabulao entre o nmero e o nome. 15) Pressione Home para mover para o incio da linha. 16) Pressione seta para baixo para mover para a prxima linha. 17) Parar a gravao da macro e salvar a macro. Leva muito mais tempo para ler e escrever as etapas do gravador de macro. Trabalhe lentamente e pense sobre as etapas que far. Com a prtica isto fica mais intuitivo. A macro gerada foi modificada para conter o nmero de etapas nos comentrios para coincidir com o cdigo para a etapa acima. Listagem 5: Copia o valor numrico para o incio da coluna.
sub CopiaNumParaCol1 rem ------------------------------------------------------------rem definir as variveis 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 (2) Pressione Ctrl+Seta para a direita para mover o cursor para o incio da palavra especifica. dispatcher.executeDispatch(document, ".uno:GoToNextWord", "", 0, Array()) rem (3) Pressione Backspace duas vezes para remover a tabulao e o espao. dispatcher.executeDispatch(document, ".uno:SwBackspace", "", 0, Array()) rem ------------------------------------------------------------dispatcher.executeDispatch(document, ".uno:SwBackspace", "", 0, Array()) rem (4) Pressione Tab para adicionar a tabulao sem o espao 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())
11
rem (5) Pressione Delete para excluir a letra minscula e .... dispatcher.executeDispatch(document, ".uno:Delete", "", 0, Array()) rem (5) ... e ento pressione E para adicionar uma letra E maiscula. 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 (6) Pressione Ctrl+Seta para a direita uma vez para mover o cursor para o nmero. dispatcher.executeDispatch(document, ".uno:GoToNextWord", "", 0, Array()) rem (7) Pressione Ctrl+Shift+Seta para direita para selecionar o nmero. dispatcher.executeDispatch(document, ".uno:WordRightSel", "", 0, Array()) rem (8) Pressione Ctrl+C para copiar o texto selecionado para a rea de tranferncia. dispatcher.executeDispatch(document, ".uno:Copy", "", 0, Array()) rem (9) Pressione End para mover o cursor para o final da linha. dispatcher.executeDispatch(document, ".uno:GoToEndOfLine", "", 0, Array()) rem (10) Pressione Backspace duas vezes para remover os dois espaos direita. dispatcher.executeDispatch(document, ".uno:SwBackspace", "", 0, Array()) rem ------------------------------------------------------------dispatcher.executeDispatch(document, ".uno:SwBackspace", "", 0, Array()) rem (11) Pressione Home para mover o cursor para o incio da linha. dispatcher.executeDispatch(document, ".uno:GoToStartOfLine", "", 0, Array()) rem (12) Pressione Ctrl+V para colar o nmero selecionado para o incio da linha. dispatcher.executeDispatch(document, ".uno:Paste", "", 0, Array()) rem (13) Pressione Backspace para remover o espao extra. dispatcher.executeDispatch(document, ".uno:SwBackspace", "", 0, Array()) rem (14) Pressione Tab para inserir uma tabulao entre o nmero 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 (15) Pressione Home para mover para o incio da linha. dispatcher.executeDispatch(document, ".uno:GoToStartOfLine", "", 0, Array()) rem (16) Pressione Seta para baixo para mover para a prxima 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
12
Introduo s Macros
Movimentos do cursor so usados para todas as operaes (em oposio pesquisa). Se for executado na linha NOSEI, a palavra peso movida para a frente da linha, e o primeiro O alterado para E. Isto no o perfeito. Mas eu no deveria ter executado a macro sobre as linhas que no tem o formato adequado; eu preciso adapt-las manualmente.
Agora, voc pode executar CopiaNumParaCol1 vrias vezes clicando no cone Executar o Basic na barra de ferramenta do IDE. Isto muito rpido e fcil, especialmente para macros temporrias que sero usadas algumas vezes e depois descartadas.
13
No possvel especificar o tipo de objeto para criar ou inserir. Se um objeto inserido de um arquivo, voc no pode especificar qual arquivo a ser inserido. Eu gravei uma macro e usei Ferramentas Opes para abrir e modificar itens de configurao. A macro gerada no pode registrar qualquer modificaes de configurao, na verdade, o cdigo gerado comentado por isso no vai mesmo ser executado.
rem dispatcher.executeDispatch(document, ".uno:OptionsTreeDialog", "", 0, Array())
Se uma caixa de dilogo aberta, o comando para abrir a caixa de dilogo susceptvel de ser gerado. Qualquer trabalho feito dentro do dilogo no gravado normalmente. Exemplos incluem dilogos de organizao de macro, insero de caracteres especiais e tipos semelhantes de dilogos. Outros possveis problemas usando o gravador de macros incluem coisas como a insero de uma frmula, a definio de dados do usurio, configurao de filtros no Calc, aes em formulrios de bancos de dados e exportar um documento para um arquivo criptografo PDF. Voc nunca sabe ao certo o que ir funcionar a menos que voc experimente-o. As aes do dilogo de pesquisa so apropriadamente capturadas, por exemplo.
Outras opes
Quando o gravador de macro no capaz de resolver um problema especfico, a soluo usual escrever o cdigo usando os objetos LibreOffice. Infelizmente, h uma curva de aprendizagem para os objetos. Geralmente melhor comear por exemplos simples e ento diversificar lentamente medida que voc aprende mais. Aprender a ler macros geradas um bom ponto de partida. Se voc gravar macros no Calc e o gravador pode gerar corretamente uma macro, h um suplemento criado por Paolo Mantovani, que converte macros do Calc quando elas so gravadas. O cdigo final manipula objetos LibreOffice ao invs de gerar envios. Isto pode ser muito til para aprender o modelo de objeto. Voc pode baixar o gravador de macros diretamente a partir da pgina Web do Paolo. http://www.paolo-mantovani.org/downloads/DispatchToApiRecorder/
14
Introduo s Macros
Macro 2
Figura 5: Hierarquia das bibliotecas de macro Um cientista da computao usaria a Figura 6 para descrever precisamente a situao. O texto 1..* significa um ou mais, e 0..*significa zero ou mais. O losango preto significa composto de ou contm.
Um recipiente de biblioteca contm uma ou mais bibliotecas, e cada biblioteca est contida
em um recipiente de biblioteca. Um recipiente de biblioteca contm zero ou mais mdulos, e cada mdulo est contido em uma biblioteca. Um mdulo contm zero ou mais macros, e cada macro est contida em um mdulo.
Biblioteca 1 1..* 1 0..* Mdulo 1 0..* Macro
Recipiente de Biblioteca
Figura 6: Hierarquia da biblioteca de Macro Use Ferramentas Macros Organizar macros LibreOffice Basic para abrir a caixa de dilogo Macros do LibreOffice Basic (ver Figura 7). Todos os recipientes de biblioteca disponveis so mostrados na lista Macros de. Cada documento um recipiente de biblioteca, capaz de conter vrias bibliotecas. O aplicativo em si funciona como dois recipientes de biblioteca: um recipiente para macros distribudas com o LibreOffice chamada Macros do LibreOffice e um recipiente para macros pessoais chamado Minhas macros. Como mostrado na Figura 7, apenas um documento est aberto no momento.
15
Figura 7: Recipientes da biblioteca so mostrados esquerda As Macros do LibreOffice so armazenadas com o cdigo de execuo do aplicativo, que podem no ser editveis a menos que voc seja um administrador. Isso bom uma vez que estas macros no devem ser alteradas e voc no deve armazenar suas prprias macros no recipiente do LibreOffice. A menos que suas macros sejam aplicveis a um nico documento e somente para este nico documento, suas macros provavelmente sero armazenadas no recipiente Minhas macros. O recipiente Minhas macros armazenado na sua rea de usurio ou diretrio pessoal. Se uma macro est contida em um documento, ento uma macro gravada tentar trabalhar com aquele documento; principalmente porque ela usa ThisComponent para suas aes. Cada recipiente de bibliotecas contm uma biblioteca chamada Standard. melhor criar suas prprias bibliotecas com nomes significativos do que usar a biblioteca Standard. Nomes significativos no so apenas mais fceis de gerenciar, mas eles tambm podem ser importados para recipientes de outra biblioteca enquanto a biblioteca Standard no pode.
Cuidado
O LibreOffice permite importar bibliotecas para um recipiente de biblioteca, mas no lhe permitir substituir a biblioteca chamada Standard. Portanto, se voc armazenar suas macros na biblioteca Standard, voc no 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 mdulos. Por padro, o LibreOffice usa nomes como Module1. Sinta-se livre para usar seu prprio nome significativo. Conforme voc cria suas macros, voc deve decidir onde armazen-los. Armazenar uma macro em um documento til se o documento ser compartilhado e voc quiser que a macro seja includa em seu documento. Macros armazenadas no recipiente de bibliotecas chamado Minhas macros, no entanto, so globalmente disponveis para todos os documentos. Macros no esto disponveis at que a biblioteca que os contm seja carregada. As bibliotecas Standard e Template, no entanto, so carregadas automaticamente. A biblioteca carregada exibida de maneira diferente a partir de uma biblioteca que no est carregada. Para carregar a biblioteca e os mdulos que ela contm, d um duplo clique na biblioteca.
16
Introduo s Macros
Importando macros
A caixa de dilogo Organizador de macros do LibreOffice Basic fornece a funcionalidade para criar, excluir e renomear bibliotecas, mdulos e dilogos. Selecione o recipiente de biblioteca para usar e ento clique no boto Importar para importar uma bibliotecas de macro (ver Figura 9).
Nota
17
Dica
No Linux, os arquivos especficos do LibreOffice so armazenados sob o diretrio pessoal do usurio em um diretrio cujo nome inicia com um ponto. Diretrios e arquivos com nomes comeando com um ponto no so mostrados em uma janela de seleo normal. Para abrir o diretrio, navegue para o diretrio pessoal, digite o nome .libreoffice\3 e ento clique Abrir ou pressione Ctrl-H para mostrar pastas e arquivos ocultos e navegar normalmente. Isto ir abrir o diretrio, que no mostrado inicialmente.
Figura 9: Selecione uma macro da biblioteca para importar Navegue at o diretrio que contm a biblioteca a ser importada. Normalmente h dois arquivos para escolher, dialog.xlb e script.xlb. No importa qual dos dois arquivos voc selecione; ambos sero importados. Selecione um arquivo e clique Abrir para continuar.
Figura 10: Escolha as opes de importao da biblioteca Se a biblioteca j existe, ela no ser substituda, a menos que Substituir as bibliotecas existentes esteja marcado. Se Inserir como referncia estiver marcado, a biblioteca referenciada em seu local atual, mas voc no pode editar a biblioteca. Se Inserir como referncia no estiver marcado, no entanto, a biblioteca copiada para o diretrio de macros do usurio.
18
Introduo s Macros
Macros podem ser armazenadas em bibliotecas dentro de documentos LibreOffice. Selecione um documento ao invs de um diretrio no disco (como mostrado na Figura 9) para importar bibliotecas contidas em um documento.
Descrio
Coleo de macros empacotadas um pouco antigas agora. Materiais de referncia sobre macros. Materiais de referncia sobre macros de banco de dados. Coleo de links para tudo. Um frum, com muitos exemplos e ajuda. Outro frum, com muitos exemplos e ajuda.
19
Figura 11: Usar a caixa de dilogo Seletor de macro para executar macros Embora voc possa usar Ferramentas Macros Executar macro para executar todas as macros, isto no eficiente para macros frequentemente executadas. A tcnica mais comum atribuir a macro a um boto na barra de ferramentas, item de menu, tecla de atalho, ou um boto incorporado em um documento. Ao escolher um mtodo, tambm bom fazer perguntas tais como:
A macro est disponvel apenas para um documento ou globalmente para todos os Com que frequncia a macro vai ser usada?
documentos? A macro pertence a um tipo de documento especfico, como um documento do Calc?
As respostas vo determinar onde armazenar a macro e como torn-la disponvel. Por exemplo, voc provavelmente no ir adicionar uma macro raramente utilizada a uma barra de ferramentas. Para ajudar a determinar suas escolhas, veja a Tabela 2. Tabela 2. Mtodos para iniciar uma macro Tipo
Barra de ferramentas Menu Atalho Evento
LibreOffice
No No Sim Sim
Tipo de documento
Sim Sim Sim No
Documento
Sim Sim No Sim
Para adicionar um item de menu, tecla de atalho, ou cone na barra de ferramentas que chame uma macro, use a caixa de dilogo Personalizar (ver Figura 13). Abra esta caixa de dilogo usando qualquer um dos seguintes mtodos:
Escolha Ferramentas Personalizar da barra de menu principal. Cada barra de ferramentas tem um cone
Personalizar barra de ferramentas. que abre um menu; escolha a opo
20
Introduo s Macros
Dica
A cobertura completa da caixa de dilogo Personalizar est alm do escopo deste documento. Clique no boto Ajuda para acessar a pgina de ajuda que acompanha o LibreOffice.
A caixa de dilogo Personalizar contm abas para configurar menus, atalhos de teclado, barra de ferramentas, e eventos.
Item de Menu
Use Ferramentas Personalizar para abrir a caixa de dilogo Personalizar, e selecione a aba Menus. Voc pode modificar um menu existente ou criar novos menus que chamam macros. Para mais informaes sobre menus modificados, consulte o Captulo 14.
Teclas de atalho
Use Ferramentas Personalizar para abrir a caixa de dilogo Personalizar, e selecione a aba Teclado. A atribuio de atalhos de teclado discutida no Captulo 14.
Barra de ferramentas
Macros podem ser adicionadas s barras de ferramentas. Para mais informaes sobre como modificar barras de ferramentas, consulte o Captulo 14, Personalizando o LibreOffice.
21
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. O LibreOffice permite que eventos causem um chamado de macro; a macro ento chamada por um processador de eventos. A cobertura total sobre o processador de eventos est alm do escopo deste documento, mas um pouco de conhecimento pode ajudar muito.
Tenha cuidado quando voc configura um processador de eventos. Por exemplo, suponha que voc escreve um processador de evento que chamado a cada vez que uma tecla pressionada, mas voc cometeu um erro, de modo que o evento no tratado corretamente. Um resultado possvel que seu processador de evento consumir todas as teclas pressionadas, forando voc a finalizar fora o LibreOffice.
Cuidado
Use Ferramentas Personalizar para abrir a caixa de dilogo Personalizar, e selecione a aba Eventos (ver Figura 13). Os eventos na caixa de dilogo Personalizar esto relacionados com a aplicao completa e documentos especficos. Use a caixa Salvar em para escolher LibreOffice, ou um documento especfico.
Figura 13: Atribuir macro a um evento de nvel de aplicativo Um uso comum atribuir o evento Ao criar um novo documento para chamar uma macro especfica. A macro ento executa certas tarefas de configurao para o documento. Selecione o evento desejado e clique no boto Macro para abrir a caixa de dilogo Seletor de macro (ver Figura 14).
22 Introduo s Macros
Figura 14: Atribuir macro ao evento documento aberto Selecione a macro desejada e clique OK para atribuir a macro ao evento. A aba Eventos mostra que o evento foi atribudo para a macro (ver Figura 15). Quando um documento criado, a macro DigiteMeuNome executada. Muitos objetos em um documento podem ser definidos para chamar macros quando ocorrem eventos. O uso mais comum adicionar um controle, como um boto, em um documento. Mesmo um duplo clique sobre um grfico abre a caixa de dilogo com uma aba de Macros, que permite atribuir uma macro a um evento.
Extenses
Uma extenso um pacote que pode ser instalado no LibreOffice para adicionar novas funcionalidades. Extenses podem ser escritas em praticamente qualquer linguagem de programao e podem ser simples ou sofisticadas. Extenses podem ser agrupadas em tipos:
Suplementos Calc, que oferecem novas funcionalidades para o Calc, incluindo novas
funes que agem como funes internas normais. Novos componentes e funcionalidades, que normalmente incluem algum nvel de integrao com a interface do usurio, tais como novos menus e barras de ferramentas. Dados pilotos que so usados diretamente no Calc.
Suplementos grficos com novos tipos de grficos. Componentes de lingustica, como um corretor ortogrfico. Modelos de documentos e imagens.
Embora extenses individuais podem ser encontradas em diferentes lugares, existe atualmente um repositrio de extenses em http://extensions2.libreoffice.org/ e alguma documentao em http://libreplanet.org/wiki/Group:OpenOfficeExtensions/List. Para mais informaes sobre como obter e instalar extenses, consulte o Captulo 14, Personalizando o LibreOffice.
Extenses
23
Material includo
Muitas excelentes macros so includas com o LibreOffice. Use Ferramentas Macros Organizar macros LibreOffice Basic para abrir a caixa de dilogo Macros do LibreOffice Basic. Expanda a biblioteca Tools no recipiente de biblioteca LibreOffice. Explore o mdulo Debug alguns bons exemplos incluem o WritedbgInfo(documento) e o printdbgInfo(planilha).
Recursos Online
Os links e referncias a seguir contm informaes sobre a programao de macros: http://user.services.openoffice.org/ (fruns do Ooo, com bom suporte; os voluntrios respondem questes sobre o LibreOffice tambm).
24
Introduo s Macros
http://api.openoffice.org/docs/common/ref/com/sun/star/module-ix.html (IDL oficial de referncia; aqui voc encontrar praticamente todos os comandos com uma descrio). http://wiki.services.openoffice.org/wiki/Documentation/BASIC_Guide (Guia de Programao Basic Oficial do OpenOffice.org) Tambm disponvel em formato ODT em http://wiki.documentfoundation.org/Documentation#Other_Documentation_and_Resources http://wiki.services.openoffice.org/wiki/Documentation/DevGuide (Guia de Desenvolvimento Oficial do OpenOffice.org; contm uma explicao detalhada). Tambm disponvel em formato ODT em http://wiki.documentfoundation.org/Documentation#Other_Documentation_and_Resources http://www.pitonyak.org/oo.php (Pgina Andrew Pitonyak de macros) http://www.pitonyak.org/AndrewMacro.odt (numerosos exemplos de macros de trabalho). http://www.pitonyak.org/OOME_3_0.odt (Livro de Andrew Pitonyak sobre macros) http://www.pitonyak.org/database/ (numerosos exemplos de macro usando o Base). http://docs.sun.com/app/docs/doc/819-0439 (Livro da Sun sobre programao de macro, muito bem escrito e apresentado; O Guia de Programao BASIC do Ooo e o Guia de Desenvolvimento do Ooo so derivados deste livro).
25