Programando Ooo 18-03-06

download Programando Ooo 18-03-06

of 164

Transcript of Programando Ooo 18-03-06

  • Programando MacrosProgramando MacrosPara OPara O

    OpenOffice.orgOpenOffice.org

    Verso _18_03_2006

    Autor: Noelson Alves Duarte

    Copyright 2006 por Noelson Alves Duarte permitida a cpia, distribuio e / ou modificao deste documento, sob os termos da GNU Free Documentation License, Version 1.1 ou uma verso posterior publicada pela Free Soft-ware Foundation. Uma cpia da licena acompanha este documento.

  • Verso

    ndice

    1 Trabalhando com Macros.................................................................................................................. 61.1 Introduo.................................................................................................................................. 61.2 Estrutura Geral das Macros........................................................................................................61.3 Gravando Macros.......................................................................................................................71.4 Executando Macros....................................................................................................................81.5 Organizando Macros..................................................................................................................81.6 Atribuindo Macros a Eventos.................................................................................................. 111.7 Gerenciando Pacotes................................................................................................................13

    2 Linguagem OpenOffice.org Basic................................................................................................... 162.1 Componentes da linguagem.....................................................................................................162.2 Ambiente de Desenvolvimento................................................................................................162.3 Anlise de um programa.......................................................................................................... 192.4 Elementos do Basic..................................................................................................................22

    Palavras reservadas................................................................................................................... 22Regras para nomes.................................................................................................................... 22Comentrios.............................................................................................................................. 23Tipos de dados internos.............................................................................................................23Declarao de variveis.............................................................................................................23Constantes simblicas............................................................................................................... 24Expresses.................................................................................................................................25

    2.5 Fluxo de controle da execuo.................................................................................................28Comando de Deciso If ... Then ... End If.................................................................................28Comando de Deciso Select Case............................................................................................. 29Comando de Repetio While ... Wend.................................................................................... 30Comando de Repetio For ... Next.......................................................................................... 30Comando de Repetio Do ... Loop ......................................................................................... 31Comandos de Desvio Incondicional..........................................................................................32Comandos de Controle de Erros............................................................................................... 33

    2.6 Tipos de dados avanados........................................................................................................34Vetores...................................................................................................................................... 34Vetor de vetores........................................................................................................................ 35Tipo de dado definido pelo usurio...........................................................................................36

    3 Organizao do Programa OOoBasic..............................................................................................383.1 Comandos................................................................................................................................ 383.2 Sub-rotinas............................................................................................................................... 383.3 Funes.................................................................................................................................... 393.4 Passagem de Parmetros.......................................................................................................... 403.5 Escopo das variveis................................................................................................................413.6 Chamada de Procedimentos.....................................................................................................42

    Procedimentos na mesma biblioteca......................................................................................... 42Procedimentos em bibliotecas diferentes.................................................................................. 43Procedimentos em bibliotecas dinmicas..................................................................................44Procedimentos recursivos..........................................................................................................44

    3.7 Modelo Geral de uma Macro................................................................................................... 444 Comandos e Funes do OOoBasic................................................................................................ 46

    4.1 Interao com o Operador........................................................................................................46

    Programando Macros para o OpenOffice.org 1

  • Verso

    4.2 Instrues de tipos de dados.................................................................................................... 47Funes de verificao.............................................................................................................. 47Funes de converso............................................................................................................... 47

    4.3 Funes de cadeias de caracteres............................................................................................. 484.4 Funes de Data e Hora........................................................................................................... 494.5 Funes Matemticas...............................................................................................................504.6 Instrues de arquivos e diretrios.......................................................................................... 50

    Funes de administrao......................................................................................................... 51Funes de abertura e fechamento de arquivos.........................................................................51Funes de entrada e sada........................................................................................................ 51

    4.7 Funes Vetoriais.................................................................................................................... 524.8 Instruo With ... End With..................................................................................................... 524.9 Instrues Diversas.................................................................................................................. 53

    5 Programando Macros sem Objetos..................................................................................................545.1 Funes para o Calc................................................................................................................. 54

    Funes recebendo clulas........................................................................................................ 54Funes recebendo extenses de clulas...................................................................................55Funes Matriciais.................................................................................................................... 56

    5.2 Macros para Eventos................................................................................................................576 API do OpenOffice.org Viso Geral.............................................................................................59

    6.1 Introduo................................................................................................................................ 596.2 UNO.........................................................................................................................................596.3 Organizao da API................................................................................................................. 60

    Service.......................................................................................................................................60Interface.....................................................................................................................................60Struct......................................................................................................................................... 61Exception.................................................................................................................................. 61Enum......................................................................................................................................... 61Constant.................................................................................................................................... 62

    6.4 Mapeamento de dados............................................................................................................. 626.5 Guia de Referncia da API.......................................................................................................636.6 Objetos..................................................................................................................................... 65

    Mtodos do objeto.....................................................................................................................65Propriedades do objeto..............................................................................................................66Analisando um objeto............................................................................................................... 67

    6.7 Inspeo de objetos.................................................................................................................. 69Usando o IDE Basic.................................................................................................................. 69Usando o OOoBasic..................................................................................................................69Usando o XRay......................................................................................................................... 70

    6.8 Instrues UNO do OOoBasic.................................................................................................707 Principais objetos e interfaces......................................................................................................... 72

    7.1 ServiceManager....................................................................................................................... 727.2 Desktop.................................................................................................................................... 737.3 Colees...................................................................................................................................74

    Containeres................................................................................................................................74Acesso nomeado........................................................................................................................75Acesso indexado....................................................................................................................... 76Acesso seqncial..................................................................................................................... 77

    2 Programando Macros para o OpenOffice.org

  • Verso

    7.4 Descritores............................................................................................................................... 787.5 Listeners...................................................................................................................................787.6 Fluxos.......................................................................................................................................80

    Acesso a arquivos......................................................................................................................80Fluxos de entrada e sada.......................................................................................................... 81Fluxos de texto.......................................................................................................................... 82

    8 Trabalhando com Documentos........................................................................................................848.1 URL..........................................................................................................................................848.2 Arquitetura FCM......................................................................................................................85

    Objeto Frame.............................................................................................................................85Ativando Documentos Abertos................................................................................................. 86Executando Comandos UNO.................................................................................................... 86

    8.3 Filtros do OO.o........................................................................................................................ 878.4 Descritor do Meio.................................................................................................................... 878.5 Documentos do Office............................................................................................................. 888.6 Interface XComponentLoader..................................................................................................908.7 Criando Documentos............................................................................................................... 918.8 Abrindo Documentos...............................................................................................................918.9 Salvando e Exportando Documentos.......................................................................................928.10 Imprimindo Documentos....................................................................................................... 938.11 Fechando Documentos...........................................................................................................948.12 Identificando documentos abertos......................................................................................... 94

    9 Documentos do Writer.....................................................................................................................969.1 Introduo................................................................................................................................ 969.2 Documento Texto.................................................................................................................... 97

    Modelo...................................................................................................................................... 97Controlador............................................................................................................................... 98

    9.3 Edio Bsica.........................................................................................................................100Objeto Text............................................................................................................................. 100Objeto TextRange................................................................................................................... 101Objeto TextContent.................................................................................................................103

    9.4 Edio Avanada................................................................................................................... 104Cursor de Texto.......................................................................................................................104Cursor da Viso.......................................................................................................................107

    9.5 Formatao.............................................................................................................................110Formatando Caracteres............................................................................................................110Formatando Pargrafos........................................................................................................... 112

    9.6 Estilos de Formatao............................................................................................................114Organizao dos estilos...........................................................................................................114Acessando os estilos................................................................................................................115Criando estilos de pgina........................................................................................................ 116Criando estilos de pargrafos.................................................................................................. 118

    9.7 Numerando Tpicos...............................................................................................................119Numerando pargrafos............................................................................................................ 119Numerando captulos.............................................................................................................. 121

    9.8 Pargrafos.............................................................................................................................. 122Partes de um pargrafo............................................................................................................123

    9.9 Tabelas................................................................................................................................... 124

    Programando Macros para o OpenOffice.org 3

  • Verso

    Criando tabelas........................................................................................................................124Linhas e Colunas..................................................................................................................... 127Clulas.....................................................................................................................................129Cursor da tabela.......................................................................................................................132Visitando as tabelas do documento......................................................................................... 133

    9.10 Campos................................................................................................................................ 133Criando campos.......................................................................................................................134Identificando e editando campos.............................................................................................135

    9.11 Cabealhos e Rodaps......................................................................................................... 1369.12 Desenhos..............................................................................................................................1379.13 Busca e Substituio............................................................................................................ 140

    Busca....................................................................................................................................... 140Substituio.............................................................................................................................141

    9.14 Ordenao............................................................................................................................ 1429.15 Seleo................................................................................................................................. 143

    10 Documentos do Calc....................................................................................................................14510.1Introduo............................................................................................................................. 14510.2 Documento...........................................................................................................................145

    Modelo.................................................................................................................................... 145Controlador............................................................................................................................. 147Edio Bsica.......................................................................................................................... 150

    10.3 Folhas da Planilha................................................................................................................15110.4Extenso de clulas (SheetCellRange)..................................................................................154

    11 Documentos do Draw ................................................................................................................. 15512 Documentos do Impress.............................................................................................................. 15613 Documentos do Base................................................................................................................... 15714 Dilogos.......................................................................................................................................15815 Formulrios..................................................................................................................................15916 Mais informaes........................................................................................................................ 160

    16.1 Na rede.................................................................................................................................16016.2 Com o autor......................................................................................................................... 16116.3 Histrico deste documento...................................................................................................161

    17 Crditos, Agradecimentos, Licena.............................................................................................16217.1 Crditos................................................................................................................................16217.2 Agradecimentos .................................................................................................................. 16217.3 Licena.................................................................................................................................162

    4 Programando Macros para o OpenOffice.org

  • Verso

    Apresentao

    REESCREVER!!

    Programando Macros para o OpenOffice.org 5

  • Trabalhando com Macros Verso

    1 Trabalhando com Macros

    1.1 Introduo

    Uma macro um programa escrito numa linguagem suportada pelo OpenOffice.org com a fi-nalidade de automatizar tarefas do OpenOffice.org. Atualmente, as linguagens suportadas so OOoBasic, JavaScript, JavaBeans, Java e Python.O nosso trabalho ser dirigido para a linguagem OpenOffice.org Basic (OOoBasic).

    1.2 Estrutura Geral das Macros

    As macros do OpenOffice.org so organizadas num container do aplicativo ou do documento. As macros gravados num documento podem ser executadas apenas quando o documento es-tiver aberto. As macros do aplicativo podem ser executadas a qualquer momento. As macros do aplicativo podem ser criadas para serem usadas por todos os usurios ou por apenas um usurio. No primeiro caso, elas so instaladas sob um diretrio subordinado ao di-retrio de instalao do OpenOffice.org. No segundo, so instaladas num diretrio subordina-do ao diretrio da instalao do OpenOffice.org para aquele usurio.A macros do container documento so armazenadas dentro do prprio documento.Cada um destes containeres pode ter uma ou mais bibliotecas. Uma biblioteca pode conter um ou mais mdulos. Um mdulo pode conter uma ou mais macros (rotinas) e, ainda, uma ou mais caixas de dilogo (desenhadas com o editor de dilogos do IDE Basic).Para compreender esta estrutura, ative o dilogo Selector de macro, selecionando, na barra de menu principal, Ferramentas => Macros => Executar Macro.

    Na figura acima, observe os containeres do aplicativo Minhas macros e Macros do OpenOffice.org o primeiro contm as macros do usurio e o segundo as macros compartil-hadas por todos os usurios. Logo abaixo, temos o container ooo_basic_v3.odt de um docu-mento aberto no OO.o.

    6 Programando Macros para o OpenOffice.org

  • Verso Trabalhando com Macros

    Note a biblioteca Standard, contendo o mdulo Module1 e, do lado direito, as macros Main e buscaPalavra existentes no Module1.As bibliotecas Standard - do usurio ou do documento - so criadas automaticamente pelo OpenOffice.org. Ainda, o prprio OpenOffice.org gerencia, automaticamente, a carga destas bibliotecas para a memria.

    1.3 Gravando Macros

    A partir da verso 1.1.x, o OO.o incluiu um gravador de macros que gera cdigo OOoBasic. Esta ferramenta facilita a automao de tarefas simples por usurios que no so desenvolve-dores. O gravador encadeia os comandos executados na interface grfica e depois salva estes comandos como uma macro. Est disponvel apenas para o Writer e Calc.Crie um novo documento do Writer. Agora, suponha que voc execute com frequncia a bus-ca da palavra captulo num texto. Vamos criar uma macro para esta tarefa: Selecione Ferramentas => Macros => Gravar Macro; A ferramenta Gravar Macro torna-se ativa. A partir deste momento,

    todos os comandos sero memorizados para gravao; Selecione Editar => Localizar e Substituir, digite captulo na caixa Procurar por,

    clique sobre o boto Localizar e, em seguida sobre o boto Fechar; Para encerrar a gravao, clique sobre Parar Gravao na ferramenta Gravar Macro. Surge o dilogo Macros do OpenOffice.org Basic. Selecione Module1, na biblioteca

    Standard, no container Minhas Macros e, em Nome da Macro, digite buscaPalavra;

    Para gravar a macro buscaPalavra, clique sobre o boto Salvar. Se o dilogo de criao de novo mdulo for exibido, digite um nome para o mdulo ou

    aceite o nome sugerido e clique sobre o boto Ok. Aps a gravao, o dilogo Macros do OpenOffice.org Basic ser fechado.

    Programando Macros para o OpenOffice.org 7

  • Trabalhando com Macros Verso

    Antes de gravar a macro o usurio poder criar uma biblioteca (boto Nova Biblioteca) e/ou um mdulo (boto Novo Mdulo). Mas, pela interface grfica, uma nova biblioteca no pode ser criada no container Macros do OpenOffice.org, porque este container protegido.Tenha em mente que o gravador de macros uma funcionalidade recente e alguns comandos da interface grfica esto indisponveis para gravao. Normalmente, estes comandos so gravados como comentrios da linguagem OOoBasic.

    1.4 Executando Macros

    Vamos, agora, testar a macro buscaPalavra: Selecione Ferramentas => Macros => Executar Macro; Aparece o dilogo Seletor de macro;

    Expanda a entrada Minhas macros e selecione o Module1, da biblioteca Standard; Selecione a macro buscaPalavra e clique sobre o boto Executar.Este procedimento deve ser usado para rodar qualquer macro do OpenOffice.org. Contudo, podemos rodar macros a partir da linha de comando (til para scripts). Veja alguns exemplos:> soffice.exe macro://nome_documento/Biblioteca.Modulo.Macroexecuta uma Macro num documento aberto> soffice.exe macro://./Standard.Modulo.Macroexecuta uma Macro num documento aberto e ativo> soffice.exe url_do_documento macro://./Standard.Modulo.MacroAbre um documento e executa uma macroExistem, ainda, configuraes do aplicativo que podem afetar a execuo de uma macro. Sele-cione Ferramentas => Opes, expanda a entrada OpenOffice.org, selecione Segurana e clique sobre o boto Segurana de macro para verificar as restries da sua instalao.

    1.5 Organizando Macros

    Atravs do dilogo Macros do OpenOffice.org Basic, podemos efetuar outras operaes so-bre macros. Para ativ-lo, selecione Ferramentas => Macros => Organizar macros => OpenOffice.org Basic.

    8 Programando Macros para o OpenOffice.org

  • Verso Trabalhando com Macros

    As operaes possveis so:Boto Executar: outro modo para executar a macro selecionada. Aqui, apenas as macros do OOoBasic esto disponveis. Com o dilogo Seletor de macros, podemos executar macros escritas em qualquer uma das linguagens suportadas pelo OpenOffice.org.Boto Atribuir: atribui uma macro a um item de menu, uma combinao de teclas, um cone na barra de ferramentas ou a um evento do documento ou do aplicativo. Esta operao ser vista em detalhes noutro tpico.Boto Editar: abre o editor do IDE Basic para a edio do cdigo fonte da macro seleciona-da, com o cursor posicionado no incio da mesma. Boto Excluir: apaga a macro selecionada, aps a confirmao do usurio.Boto Organizador: ativa o dilogo Organizador de Macros do OpenOffice.org Basic. Este dilogo permite operaes sobre mdulos, caixas de dilogos e bibliotecas. Clique sobre o boto para ativar o dilogo e vamos analis-lo.

    Programando Macros para o OpenOffice.org 9

  • Trabalhando com Macros Verso

    Na guia Mdulos temos opes para criar e excluir mdulos. Na guia Caixas de dilogo temos opes para criar e excluir dilogos. Estas tarefas tambm podem ser executadas direta-mente no IDE Basic. No existem opes para mover ou copiar mdulos e caixas de dilogos entre bibliotecas. Mas, estas operaes podem ser feitas, usando os recursos de arrastar e soltar dentro deste dilogo, nas guias correspondentes.Na guia Bibliotecas podemos selecionar o container (na lista Local) e, a seguir, efetuar uma das operaes abaixo: Boto Editar: abre o IDE Basic para a edio do cdigo fonte ou das caixas de dilogos

    da biblioteca. Esta a nica operao disponvel para as bibliotecas do container Macros do OpenOffice.org (vimos que ele protegido);

    Boto Senha: protege uma biblioteca, exceto a Standard que no pode ser protegida. Aps a proteo de uma biblioteca, qualquer operao sobre a mesma, somente ser pos-svel mediante a entrada da senha. Para executar uma macro protegida sem a entrada da senha, podemos associ-la a um evento ou cham-la atravs de outra macro numa bibliote-ca no protegida;

    Boto Nova: cria uma biblioteca no container selecionado, aps a definio do nome da nova biblioteca;

    Boto Excluir: exclui a biblioteca selecionada, aps a confirmao do usurio. A bibliote-ca Standard no pode ser excluda;

    Boto Acrescentar: acrescenta uma biblioteca ao container selecionado na lista Local. Atravs desta opo, podemos instalar bibliotecas distribudas em documentos do OpenOffice.org. Um clique neste boto comanda a abertura do dilogo de seleo de ar-quivos, para a escolha do documento contendo a biblioteca a ser acrescentada. Aps a se-leo do documento, o dilogo Acrescentar Biblioteca ser exibido. Para acrescentar bib-liotecas ao container Macros e caixas de dilogo do OpenOffice.org, consulte a seo Gerenciando Pacotes, neste manual.

    10 Programando Macros para o OpenOffice.org

  • Verso Trabalhando com Macros

    Supondo que voc deseja acrescentar uma biblioteca Library1 ao container selecionado na lista Local, marque a opo Library1, desmarque a opo Standard e clique sobre o boto Ok. Numa re-instalao de bibliotecas, marque tambm a opo Substituir bibliotecas exis-tentes. A biblioteca Standard de um container qualquer no pode ser substituda. A opo In-serir como referncia, quando ativa, acrescenta a biblioteca no modo somente leitura e deve ser usada para macros localizadas em pastas diferentes das padronizadas.Ao acrescentar bibliotecas do container da aplicao ou de um diretrio, no dilogo de seleo de arquivos, selecione o diretrio contendo a macro. Voc ver dois arquivos: script.xlb e dia-log.xlb, selecione o arquivo script.xlb e comande Abrir. A seguir proceda como j explicado. Finalmente, as bibliotecas do container Macros e caixas de dilogo do OpenOffice.org so gravadas como um subdiretrio, com o nome igual ao da biblioteca, subordinado ao diretrio /share/basic. As bibliotecas do container Minhas macros e caixas de dilogo so gravadas, tambm, em subdiretrios do diretrio /user/basic.

    1.6 Atribuindo Macros a Eventos

    Um evento ocorre a partir de uma ao do usurio sobre a interface grfica. As macros do OpenOffice.org podem ser associadas a eventos do aplicativo ou do documento. Alm destes eventos predefinidos, podemos atribuir uma macro a uma combinao de teclas, a um cone na barra de ferramentas ou a uma entrada na barra de menu. Aps a atribuio, sempre que o evento ocorrer a macro ser executada.Um evento do aplicativo ocorre para todo o OpenOffice.org e um evento do documento ocorre somente no documento. Por exemplo, o evento Fechar Documento est disponvel para o aplicativo e para um documento. Uma macro atribuda a este evento do aplicativo ser execu-tada quando qualquer documento do OpenOffice.org for fechado, do contrrio (evento do doc-umento) a macro ser executada apenas quando o documento a que se refere for fechado.A associao de macros a eventos pode ser executada a partir do boto Atribuir no dilogo Macros do OpenOffice.org Basic ou selecionando Ferramentas => Personalizar na barra de menus. Aps o clique sobre o boto Atribuir, o dilogo Personalizar ser exibido.

    Programando Macros para o OpenOffice.org 11

  • Trabalhando com Macros Verso

    Para atribuir uma macro a um evento: Clique sobre a guia Eventos para ver a relao de eventos disponveis; Escolha o tipo do evento (documento/aplicativo) na caixa de listagem Salvar em; Selecione o evento desejado na relao de eventos; Clique sobre o boto Atribuir Macro para ativar o dilogo Seletor de macro;

    Selecione o mdulo e a macro e clique sobre o boto OK. Note que o URL da macro ser acrescentada na coluna Macro atribuda, ao lado do evento selecionado.

    12 Programando Macros para o OpenOffice.org

  • Verso Trabalhando com Macros

    Clique sobre o boto OK no dilogo Personalizar.Para remover uma atribuio de macro a um evento, selecione o evento e clique sobre o boto Remover Macro, no dilogo Personalizar.Neste mesmo dilogo podemos definir outras maneiras para rodar uma macro. Na guia Menus possvel acrescentar um item de menu, na guia Teclado pode-se definir uma combinao de teclas e na guia Barra de Ferramentas um cone para comandar a execuo da macro.Alm dos eventos j mencionados, alguns objetos do OpenOffice.org como Controles, Grfi-cos, Quadros e Hiperlinks, possuem eventos que podem ser associados a macros. Abaixo ve-mos alguns eventos disponveis para o objeto Figura (clique sobre uma figura e selecione Formatar => Figura => guia Macro).

    Consulte a ajuda do OpenOffice.org para uma relao dos objetos, eventos e comandos para fazer a atribuio de macros.Outro modo comum de executar macros atravs de um evento de um controle de formulrio num documento, por exemplo, um clique sobre um Boto de Ao. Esta operao ser apre-sentada adiante, no captulo Formulrios.Finalmente, no Writer, em Inserir => Campos => Outros, na guia Funo, existe o campo Executar macro, que dispara a macro associada ao campo toda vez que o usurio clicar sobre o mesmo.

    1.7 Gerenciando Pacotes

    Vimos como instalar mdulos e bibliotecas usando o Gerenciador de Macros. Contudo, este mtodo tem limitaes. Por exemplo, um desenvolvedor que deseja distribuir um suplemento (Addon), que instale suas prprias configuraes (dados, interface grfica, bibliotecas, etc) no pode usar o Gerenciador de Macros.

    Programando Macros para o OpenOffice.org 13

  • Trabalhando com Macros Verso

    O OpenOffice.org usa o conceito de pacote para facilitar a distribuio de componentes. Um pacote um arquivo no formato zip, contendo todos os arquivos do componente. Para a ver-so 2.0, os pacotes devem ter o nome na forma: *.uno.pkg (por exemplo: meuSuplemen-to.uno.pkg) e, alm dos arquivos do componente, ele deve conter uma pasta META-INF com um arquivo manifest.xml.Num ambiente do OpenOffice.org, um pacote pode ser instalado para um usurio ou para to-dos os usurios (rede) ou, ainda, para uma estao de trabalho.O gerenciador de pacotes, para o OO.o 1.x.x, o programa pkgchk.exe um utilitrio de linha de comando, que pode ser encontrado no diretrio /program. Antes de us-lo, feche todos os processos do OpenOffice, inclusive o incio rpido. Para ver as suas opes, no shell do seu sistema digite:\program\pkgchk --help

    A verso 2.0 do OpenOffice.org traz um novo gerenciador de pacotes, o programa unop-kg.exe, tambm localizado no diretrio /program. Evite usar o pkgchk nesta verso, pois o unopkg reconhece os pacotes das verses anteriores. Para ver as suas opes, digite na linha de comando do sistema:\program\unopkg --help ou, para ativar a sua interface grfica:\program\unopkg gui A interface grfica pode ser ativada, tambm, atravs do menu do OpenOffice.org ( Ferra-mentas => Gerenciador de pacotes ). Segue uma imagem do dilogo do aplicativo.

    Note que existem dois containeres: Meus pacotes e Pacotes do OpenOffice.org. O primeiro contm os pacotes instalados para o usurio e o segundo os pacotes compartilhados por todos

    14 Programando Macros para o OpenOffice.org

  • Verso Trabalhando com Macros

    os usurios. No podemos instalar pacotes do segundo tipo a partir do OpenOffice.org, para isto o usurio deve usar a linha de comando e ter direitos de escrita na pasta .Eis as opes de gerenciamento:Boto Adicionar : permite acrescentar um pacote ao ambiente do OpenOffice.org. Um clique neste boto, abre o dilogo Adicionar Pacote, para a seleo do pacote a ser instalado.Boto Remover : remove o pacote selecionado.Boto Ativar : ativa o pacote selecionado.Boto Desativar : desativa o pacote selecionado.Boto Exportar : exporta um pacote no formato do pkgchk para o novo formato (acrescenta a pasta META-INF com o arquivo manifest.xml). A extenso do nome do arquivo deve ser al-terada manualmente.O unopkg pode ser utilizado para instalar macros de qualquer linguagem, inclusive as macros que devem ser compartilhadas por todos os usurios (container Macros do OpenOffice.org). Para tal, voc deve criar um arquivo zip com todos os arquivos da sua macro, ter os direitos de escrita no diretrio e usar o gerenciador a partir da linha de comando.

    Programando Macros para o OpenOffice.org 15

  • Linguagem OpenOffice.org Basic Verso

    2 Linguagem OpenOffice.org Basic

    A linguagem BASIC (Beginner's All-purpose Symbolic Instruction Code) foi criada no ano de 1963, pelos matemticos John George Kemeny e Tom Kurtzas, no Dartmouth College. Desde en-to, pela facilidade de uso e aplicao geral, tornou-se uma linguagem de programao de com-putadores muito popular, em todo o mundo.A Linguagem OpenOffice.org Basic mantm as principais caractersticas das verses atuais do BASIC, no que diz respeito sintaxe, tipos de dados, operadores, comandos, funes internas e organizao geral do programa. Alm disto, o OpenOffice.org Basic permite o acesso a uma grande quantidade de objetos, com seus mtodos e propriedades, especficos do OpenOffice.org.

    2.1 Componentes da linguagem

    Os principais componentes da linguagem so:Linguagem Basic: Define os construtores bsicos da linguagem, os operadores e tipos de da-dos suportados e as regras de combinao dos elementos.Biblioteca de Funes do Basic (RTL Basic): Contm diversas funes predefinidas e com-piladas juntamente com o interpretador OOoBasic.API do OpenOffice.org: Permite o acesso aos objetos UNO do OpenOffice.org.IDE Basic: Ambiente de desenvolvimento para a edio e depurao de cdigo fonte e para o desenho de caixas de dilogos.Ajuda do OOoBasic: Ajuda para todas as caractersticas da linguagem (funes, comandos, tipos de dados, operadores, etc). Entretanto, no oferece ajuda para os objetos da API.Eis algumas limitaes da linguagem: No permite a criao de objetos, no h suporte para linhas de execuo (threads) e no permite a escrita de componentes UNO (exceto listeners).

    2.2 Ambiente de Desenvolvimento

    O OpenOffice.org possue um Ambiente de Desenvolvimento Integrado (IDE Basic) que ofer-ece as funes bsicas para a programao de macros OOoBasic.Entre as suas funcionalidades cabe ressaltar: Editor de texto para a edio do cdigo fonte; Funes bsicas de acompanhamento da execuo da macro; Funes bsicas para a depurao do cdigo fonte; Editor de Caixas de Dilogo para a criao e testes de Dilogos personalizados.Vamos analisar o IDE Basic. Crie um documento do Writer e salve-o como primeirosPassos, em seguida: selecione Ferramentas=>Macros=>Organizar Macros=>OpenOffice.org Basic; no container primeirosPassos.odt, selecione a biblioteca Standard;

    16 Programando Macros para o OpenOffice.org

  • Verso Linguagem OpenOffice.org Basic

    clique sobre o boto Novo para criar um mdulo na biblioteca Standard, aceite o nome Module1 e clique sobre OK;

    a janela do IDE Basic ser ativada, vamos analis-la.

    Note que, ao iniciar um novo mdulo, o IDE acrescenta uma linha de cdigo comentada e uma macro Main vazia (linhas: Sub Main e End Sub).Temos, na parte superior do IDE, a barra de menus e a barra de ferramentas com os cones. Na parte central, temos o editor de texto e, esquerda deste, a barra de indicao. Logo abaixo do editor, no lado esquerdo, vem a janela de inspeo e, no lado direito, a janela de chamadas. Mais abaixo temos a barra de mdulos e, por fim, a barra de estado.Na barra de ferramentas, alm dos cones j identificados, temos ainda o Catlogo de objetos, Selecionar Macros e Selecionar Mdulo. Apontando o cursor do mouse para um cone, uma pequena descrio sobre o mesmo ser exibida. Vejamos a funcionalidade dos principais cones:Compilar: faz uma verificao da sintaxe do cdigo fonte do mdulo corrente, apenas.Executar: verifica a sintaxe do cdigo fonte de todos os mdulos da biblioteca corrente e, se nenhum erro for encontrado, inicia a execuo da primeira macro do mdulo corrente. Em caso de erro, uma caixa de dilogo, com informaes sobre o mesmo, ser exibida. Durante a execuo da macro algum erro (run-time) pode ocorrer. Para uma relao dos cdigos de erros run-time, consulte a Ajuda do OOoBasic (no IDE tecle F1).

    Programando Macros para o OpenOffice.org 17

  • Linguagem OpenOffice.org Basic Verso

    Parar macro: finaliza a execuo da macro. til, por exemplo, para interromper um loop infinito.Depurao Parcial: executa uma macro comando a comando, as chamadas de rotinas so tratadas como um s comando. Durante a depurao, uma seta amarela, na barra de indi-cao, aponta para a linha a ser executada no prximo passo.Depurao Total: acompanha a execuo de todos os comandos da macro, inclusive os co-mandos das rotinas chamadas a partir da macro.Depurao Circular: executa a macro sem acompanhar nenhum comando. Use para sair de uma depurao total e retornar a uma depurao parcial.Ativar/Desativar ponto de interrupo: Um ponto de interrupo um local (linha) onde a execuo da macro ser temporariamente interrompida. Para ativar ou desativar um ponto de interrupo, posicione o cursor na linha desejada e clique sobre este cone. Aps a definio, uma marca circular vermelha surge na barra de indicao lateral.Gerenciar pontos de interrupo: Exibe um dilogo para incluir ou excluir pontos de inter-rupo. Os nmeros das linhas com pontos de interrupco so exibidos. O campo Contagem de Passagens indica que a macro ser interrompida aps a ensima passagem pelo ponto de interrupo, isto desejvel porque, s vezes, uma linha de cdigo s apresenta erros quando executada mais de uma vez.

    Ativar inspeo: Permite o acompanhamento, na janela de inspeo, do valor de uma variv-el. Para ativar uma inspeo, selecione a varivel no cdigo fonte e clique sobre este cone. Aps a definio, uma entrada com o nome da varivel ser acrescentada na janela de in-speo e o cone Remover Inspeo, nesta janela, ser ativado.Localizar parnteses: Seleciona um trecho de cdigo entre parnteses.Inserir Controles: Ativo apenas no editor de dilogos, contm os controles das caixas de dilogo, alm de outras operaes relacionadas a dilogos.Inserir cdigo fonte do BASIC: Permite a seleo de um arquivo ASCII, contendo cdigo fonte BASIC, para ser inserido no mdulo corrente.Salvar BASIC: Exporta o cdigo fonte do mdulo corrente para um arquivo ASCII.Catlogo do objetos: Apresenta um navegador para os objetos do OOoBasic.Selecionar macro: Ativa o dilogo Macros do OpenOffice.org Basic.

    18 Programando Macros para o OpenOffice.org

  • Verso Linguagem OpenOffice.org Basic

    Selecionar mdulo: Ativa o dilogo Organizador de Macros do OpenOffice.org Basic.Na barra de indicao acompanhamos a execuo da macro, os pontos de interrupo e as lin-has que provocam algum erro.Na janela de inspeo verificamos o valor e as propriedades das variveis definidas na caixa Observar. Tambm, durante a execuo, podemos posicionar o cursor do mouse sobre uma varivel para verificar o seu contedo.A janela de chamadas exibe a situao da pilha de rotinas durante a execuo da macro, ou seja, a hierarquia das rotinas que esto sendo executadas no momento.A barra de mdulos deve ser usada para navegar entre mdulos e caixas de dilogo.Para se familiarizar com o IDE Basic, digite o cdigo a seguir na macro Main, de modo que ela fique com esta aparncia:

    Sub Main nome = InputBox ("Digite o seu nome:") If (nome = "") Then MsgBox "Ol usurio!" Else MsgBox "Ol " & nome End IfEnd Sub

    Execute a macro, clicando sucessivamente sobre o cone Depurao Parcial, note a seta amarela na barra de indicao.

    Defina um ponto de interrupo na linha If (nome = "") Then. Selecione a varivel nome na segunda linha e clique sobre Ativar Inspeo. Observe a

    janela de inspeo. Execute a macro usando o cone Depurao Total, observe as mudanas nas janelas de in-

    speo e de chamadas. Remova o ponto de interrupo e a Inspeo da varivel nome. Execute a macro clicando sobre o cone Executar. Verifique a funcionalidade do catlogo de objetos, do seletor de macros e de mdulos.Estes passos so suficientes para uma introduo ao IDE Basic. Naturalmente, ao escrever e depurar suas prprias macros, voc aprender mais.Deste ponto em diante, deixo por sua conta a criao de documentos para testar o cdigo fonte. Sugiro que voc crie documentos (Writer ou Calc) para cada captulo, como, por exem-plo, macros_cap2.odt para os exemplos deste captulo. De modo geral, apenas os exemplos contendo as linhas Sub ... End Sub podem ser executados. Os outros trechos de cdigo explicam algum conceito ou comando da linguagem.

    2.3 Anlise de um programa

    Para explicar algumas caractersticas do OOo Basic, vamos apresentar e analisar, passo a pas-so, um exemplo simples de programa.

    Programando Macros para o OpenOffice.org 19

  • Linguagem OpenOffice.org Basic Verso

    Crie um documento do Writer e salve-o como exemplosBasic, em seguida: selecione Ferramentas=>Macros=>Organizar Macros=>OpenOffice.org Basic; no container exemplosBasic.odt, selecione a biblioteca Standard; clique sobre o boto Novo para criar um mdulo na biblioteca Standard, aceite o nome

    Module1 e clique sobre OK;A nova janela que surgiu o editor Basic, parte do IDE Basic do OpenOffice.org. Esta janela, na sua parte central, contm as linhas:REM ***** BASIC *****

    Sub Main

    End SubSe voc no chegou neste ponto, consulte a seo Ambiente de Desenvolvimento, desta Apos-tila. L, existem informaes detalhadas sobre o IDE Basic.Vamos ao nosso exemplo. Ele solicita o nome do operador, obtm a hora do sistema e faz uma saudao apropriada. Digite o cdigo fonte abaixo, entre as linhas Sub Main e End Sub:

    Dim sNome As String ' varivel para guardar o nome Dim sSauda As String ' varivel para guardar a saudao Dim sHora As Integer ' varivel para guardar a hora do sistema

    sHora = Hour ( Now ) sNome = InputBox ( "Digite o seu Nome:", "Caixa de entrada", "Operador" ) If ( sHora > 6 And sHora < 18 ) Then sSauda = "Bom Dia! " Else sSauda = "Boa Noite! " End If MsgBox sSauda + sNome

    Voc acabou de criar uma macro chamada Main. Execute a macro, surge uma caixa de entra-da, solicitando o seu nome, digite-o e clique sobre o boto Ok. Surgir um dilogo com uma saudao, clique em Ok para encerrar a execuo da macro. Se ocorrer algum erro, revise o cdigo digitado e recomece.Vamos analisar, passo a passo, o cdigo fonte:REM ***** BASIC *****Esta linha contm um comentrio. Comentrios no so executados.Sub MainEsta linha declara e define a sub-rotina Main e deve estar acompanhada de uma linha End Sub. Entre as duas linhas deve vir o cdigo fonte que d funcionalidade a sub-rotina. Dim sNome As String ' varivel para guardar o nome Dim sSauda As String ' varivel para guardar a saudao Dim sHora As Integer ' varivel para guardar a hora do sistemaEstas linhas declaram e inicializam as variveis que sero usadas na macro. O apstrofe marca o incio de comentrios numa linha de cdigo. sHora = Hour ( Now )

    20 Programando Macros para o OpenOffice.org

  • Verso Linguagem OpenOffice.org Basic

    Aqui, chamamos duas funes internas do Basic. A funo Now, obtm a hora completa do sistema (hh:mm:ss). A funo Hour recebe o valor retornado por Now e extrai somente a ho-ra. Em seguida, o valor obtido por Hour ( a hora ) armazenado na varivel sHora. Neste con-texto, o sinal de igual ( = ) chamado operador de atribuio. Tudo que estiver do lado dire-ito do operador de atribuio recebe o nome de expresso, neste caso Hour ( Now ). sNome = InputBox ( "Digite o seu Nome:", "Caixa de entrada", "Operador" )Esta linha chama a funo InputBox, do Basic, que apresenta a caixa de dilogo para lidar com a entrada do nome do operador. Note que passamos trs cadeias de caracteres para esta funo. Estes valores (as cadeias) so chamados de parmetros da funo. O primeiro parmetro uma mensagem para o operador, o segundo o ttulo do dilogo e o terceiro o valor padro da caixa de texto. A funo InputBox retorna o contedo da caixa de texto se voc clicar sobre o boto Ok, seno ( clique sobre o boto Cancelar ou Fechar ) retorna uma cadeia vazia. Aps encerrar o dilogo, o valor retornado ser atribudo varivel sNome.Ainda, sobre parmetros, podemos dizer que a funo Now no tm parmetro e que a funo Hour recebe um parmetro. If ( sHora > 6 And sHora < 18 ) ThenAqui, iniciamos a execuo de um comando de deciso. Estamos dizendo ao Basic: se o val-or armazenado na varivel sHora for maior que 6 e menor que 18 ento execute o prximo bloco de cdigo. Os sinais > e < so chamados operadores relacionais. A palavra And chamada de operador lgico. O contedo entre parnteses uma expresso composta que ser avaliada como Verdadeira (True) ou Falsa (False). Ela ser verdadeira, se ambas as ex-presses ( sHora > 6; sHora < 18) forem verdadeiras. sSauda = "Bom Dia! "A expresso Bom Dia! ser atribuda a sSauda, se a expresso da linha anterior for avalia-da como verdadeira (True). ElseSeno, a expresso foi avaliada como falsa (False), execute o prximo bloco de cdigo. sSauda = "Boa Noite! "A expresso Boa Noite! atribuda varivel sSauda. End IfEsta linha indica o final do comando de deciso IF ... THEN ... ELSE ... END IF. MsgBox sSauda + sNomeEsta linha chama a sub-rotina MsgBox, do Basic, que exibe uma caixa de mensagem para o operador. Ela recebe um parmetro, neste caso a expresso sSauda + sNome. O sinal ( + ), neste contexto, chamado de operador de concatenao, pois junta as cadeias de caracteres guardadas nas variveis sSauda e sNome. Clique sobre o boto OK para fechar a caixa de mensagem.End SubEsta linha indica o trmino da sub-rotina, iniciada na linha SUB Main. No esquea, uma lin-ha SUB ... precisa estar associada a uma linha END SUB.Neste tpico, voc aprendeu diversos conceitos (esto em negrito) relacionados com a lin-guagem Basic. Se algum ponto no foi compreendido, execute novamente o exemplo (use o cone Depurao Parcial) e leia o passo a passo, tentando associar o que ocorreu durante a execuo com as linhas de cdigo.

    Programando Macros para o OpenOffice.org 21

  • Linguagem OpenOffice.org Basic Verso

    2.4 Elementos do Basic

    Desta seo at o Captulo 4 inclusive, veremos superficialmente os principais elementos da linguagem Basic. Lembro que a Ajuda do OOoBasic abrange todos os aspectos da linguagem e contm exemplos simples para todas as instrues. Para obter ajuda, basta pressionar a tecla F1, no IDE Basic.

    Palavras reservadas

    Uma palavra reservada um identificador ( nome ) utilizado internamente pela linguagem Ba-sic. As palavras reservadas do Basic so aquelas usadas nos seus comandos, nas suas funes internas, nas suas constantes e nos seus operadores. Abaixo, alguns exemplos:BEEP - comando do BasicCALL - comando do BasicSUB - comando do BasicFOR - parte de um comando do BasicNEXT - parte de um comando do BasicEXIT - parte de comandos do BasicWHILE - parte de comandos do BasicDO - parte de comandos do BasicSTR$ - funo do BasicTRIM$ - funo do BasicSQR - funo do BasicAND - operador do BasicOR - operador do BasicPI - constante definida pelo BasicO principal sobre estas palavras : elas no podem ser usadas como nomes para identificar variveis, constantes ou procedimentos definidos pelo programador.

    Regras para nomes

    Devemos observar as seguintes regras para os nomes das nossa variveis, constantes, sub-roti-nas e funes:Nomes so compostos por letras (A a Z), dgitos (0 a 9) e sublinhado (_);Caracteres especiais e de pontuao no so permitidos ( ex: letras acentuadas, vrgula );Nomes devem comear por uma letra do alfabeto;Nomes no podem conter mais de 255 caracteres;Nomes no diferenciam entre letras maisculas e minsculas;Nomes contendo espao so permitidos, mas devem estar entre colchetes;Palavras reservadas no podem ser usadas como nomes definidos pelo programador.

    Exemplos:Nomes vlidos: ptoIni, ponto2, flag, minha_Funcao, [Minha Variavel]Nomes invlidos: 2_ponto, minha?Varivel, celsius, Retngulo, BEEP

    22 Programando Macros para o OpenOffice.org

  • Verso Linguagem OpenOffice.org Basic

    Comentrios

    Numa macro, as linhas iniciadas por apstrofe ou pela palavra reservada REM ( de REMark-er) so consideradas como comentrios, portanto no so processadas.

    ' Isto um comentrio REM O cdigo abaixo inicializa as variveis de ambiente

    Os comentrios (com apstrofe) podem ser colocados na frente de uma linha de cdigo. DIM coord_X As Double ' varivel para guardar a coordenada X do ponto DIM coord_Y As Double ' varivel para guardar a coordenada Y do ponto

    Tipos de dados internos

    Inteiros ( INTEGER )Um inteiro pode conter um valor na faixa de -32768 a 32767.Inteiros Longos ( LONG )Um inteiro longo pode conter um valor na faixa de -2.147.483.648 a 2.147.483.647.Ponto flutuante simples ( SINGLE )Valores de preciso simples podem variar de 3.402823E38 a 1.401298E-45, para nmeros positivos ou negativos.Ponto flutuante duplo ( DOUBLE )Os valores de dupla preciso variam na faixa de 1.797693134862315E308 a 4.94066E-324, para valores negativos ou positivos.Cadeias de caracteres ( STRING )Uma cadeia pode conter at 64000 caracteres ( 64 Kb ).Moeda ( CURRENCY )Os valores deste tipo variam de -922.337.203.685.477,5808 at 922.337.203.685.477,5807.Booleano ( BOOLEAN )Os valores deste tipo podem ser True (verdadeiro) ou False (falso)Data ( DATE )Podem conter valores de data e tempo armazenados num formato interno.Variante (VARIANT)Podem conter qualquer tipo de dado

    Declarao de variveis

    Podemos declarar variveis explicitamente com a palavra reservada DIM, do modo abaixo:DIM nome_da_variavel AS tipo_de_dadoOu:DIM nome_da_variavel seguido do caractere indicador do tipo de dado

    Programando Macros para o OpenOffice.org 23

  • Linguagem OpenOffice.org Basic Verso

    nome_da_variavel um nome definido pelo programador, conforme as regras de nomeao.Exemplos:

    DIM varInteira AS INTEGER ' Declara uma variavel inteira DIM varInteira% ' Declara uma variavel inteira (%) DIM varIntLongo AS LONG ' Declara uma variavel longa DIM varIntLongo& ' Declara uma variavel longa (&) DIM varString AS STRING ' Declara uma variavel string DIM varString$ ' Declara uma variavel string ($) DIM varSingle AS SINGLE ' Declara uma variavel real simples DIM varSingle! ' Declara uma variavel real simples (!) DIM varDupla AS DOUBLE ' Declara uma variavel real dupla DIM varDupla# ' Declara uma variavel real dupla(#) DIM varPreco AS CURRENCY ' Declara uma variavel moeda DIM varPreco@ ' Declara uma variavel moeda (@)

    Podemos declarar uma varivel, no momento do seu emprego, acrescentando o caractere de tipo ao nome da varivel, como nos exemplos abaixo:

    UmInteiro% = 1500 ' declara um inteiro UmLongo& = 2195678 ' declara um inteiro longo MeuNome$ = JOS DE ANDRADE ' declara uma cadeia UmRealSimples! = 15.555 ' declara um real simples UmRealDuplo# = coordEne * sin(30) ' declara um real duplo

    Se o tipo de dado no for indicado a varivel ser assumida como Variant.O valor de uma varivel declarada ser 0 para tipos numricos, uma cadeia nula para Strings e False para Boolean. recomendvel a declarao explcita das variveis de um programa, bem como a escolha de nomes significativos para as mesmas. Para forar a declarao de todas as variveis, use a lin-ha de comando abaixo, no incio do mdulo:OPTION EXPLICIT

    O OOoBasic no nos obriga a declarar explicitamente uma varivel. Isto significa que, apesar de no recomendado, podemos criar uma varivel sem a declarao, nestes casos o tipo de dado ser assumido durante a operao de atribuio.

    Constantes simblicas

    Para facilitar a leitura de uma macro, os valores literais (1000, S, 2.718), usados ao longo da mesma, devem ser declarados como constantes simblicas, com o comando CONST, fora de qualquer sub-rotina ou funo, assim:

    ' declarao de constantes Const NR_PONTOS% = 1000 ' nmero de pontos = 1000 Const SIM$ = "S" ' constante SIM = "S" Const BASE_NATURAL# = 2.718 ' base log. naturais

    Posteriormente, podemos usar estas constantes numa expresso, no lugar dos seus valores lit-erais, por exemplo:

    DIM coordX (NR_PONTOS) As Double ' declara vetor com 1001 elementos

    24 Programando Macros para o OpenOffice.org

  • Verso Linguagem OpenOffice.org Basic

    valor# = valor1 * BASE_NATURAL ' bem mais compreensvel!

    If (Resposta$ = SIM) Then ' se resposta = "S" ento ' execute os comandos End If

    Aps a declarao de uma constante, o seu valor no poder ser mudado dentro do programa.Constantes simblicas facilitam a manuteno do programa, pois voc precisa alterar apenas o seu valor, em vez de todas as ocorrncias do valor literal dentro do programa.O OpenOffice.org Basic possui as seguintes constantes predefinidas: PI, TRUE e FALSE.

    Expresses

    Uma expresso uma constante, uma varivel, uma funo, ou qualquer combinao destas, separadas por operadores e parnteses, escrita segundo as regras do Basic e passvel de avali-ao. Seguem os principais operadores encontrados em expresses.Operador de AtribuioO resultado de uma expresso pode ser atribuido a uma varivel com o uso do operador de atribuio, o sinal de igual ( = ). Note que neste contexto, o sinal de igual no significa uma comparao, mas sim uma atribuio, isto , o resultado da expresso do lado direito do sinal ser atribudo varivel do lado esquerdo do sinal. Exemplos:

    ' declara as variveis diametro e raio Dim diametro#, raio# ' atribui o valor 2.0 ao raio ( 2.0 uma expresso ) raio = 2.0 ' atribui o resultado da expresso ( 2 * raio ) a diametro diametro = 2 * raio

    Operadores AritmticosSo usados com operandos numricos e produzem resultados numricos. Os operandos podem ser constantes numricas, variveis numricas ou funes que retornam valores numricos. Os operadores so:

    Operador Usado para Operandos+ Somar expresses 2- Subtrair expresses 2* Multiplicar expresses 2/ Dividir a primeira pela segunda expresso 2\ Dividir expresses inteiras 2

    Mod Obter o resto de uma diviso inteira 2^ Exponenciao 2

    Exemplos:

    Programando Macros para o OpenOffice.org 25

  • Linguagem OpenOffice.org Basic Verso

    ' valor = 0.5 ( note que 5 e 10 so promovidos a Double ) valor# = 5/10 ' cos() uma funo interna do Basic cosTeta# = cos (1.555 ) ' PI uma constante do Basic area# = 2 * PI * raio ^ 2 ' r, a, b, c, d, e so variveis numricas r = (a + b) * (c - d / e)

    Operadores de Concatenao de CadeiasSo usados para juntar duas ou mais cadeias de caracteres.

    Operador Usado para& Concatenar duas ou mais cadeias ( strings )+ Concatenar duas ou mais cadeias ( strings )

    Exemplos:

    preNome$ = "Menino" sobreNome$ = "Maluquinho" nomeCompleto$ = preNome & " " & sobreNome

    Operadores Relacionais ( Comparao )So usados para comparar expresses e o resultado um Booleano, True (-1) ou False (0).

    Operador Usado para= As expresses so iguais ?

    As expresses so diferentes ?> A primeira expresso maior que a segunda ?< A primeira expresso menor que a segunda ?

    >= A primeira expresso maior que ou igual a segunda ?

  • Verso Linguagem OpenOffice.org Basic

    Se usados com operandos Booleanos e/ou expresses Booleanas, resultam num valor Booleano. Se usados com operandos numricos, executam uma operao bit a bit, resultando num valor numrico.

    Operador Usado para OperandosNOT Inverte o resultado booleano 1OR Uma das expresses TRUE ? 2

    AND Ambas as expresses so TRUE ? 2XOR Uma expresso TRUE e a outra FALSE ? 2EQV Ambas so TRUE ou ambas so FALSE ? 2IMP Se a 1a. for TRUE a 2a precisa ser TRUE 2

    Exemplos:

    '

    ' resultado True, se as 2 expresses forem True ' FIM_ARQUIVO uma constante definida anteriormente resultado = (NrPtos < 1000 And Not FIM_ARQUIVO) '

    ' resultado True se a 1a. ou a 2a. for True ' EOF() uma funo do Basic resultado = (NrPtos < 1000 Or Not EOF())

    Para exemplos de operao bit a bit, consulte a ajuda do OOoBasic.Precedncia dos OperadoresUma expresso pode ser composta por mais de um operador. A ordem na qual estes oper-adores so avaliados chama-se precedncia dos operadores, da maior para a menor temos: ( ) Parnteses ^ Exponenciaco *, / Multiplicao e diviso Mod Mdulo \ Diviso inteira +, - Soma e subtrao =, , >, =,

  • Linguagem OpenOffice.org Basic Verso

    2.5 Fluxo de controle da execuo

    A ordem de execuo dos comandos, numa macro, determinada pelos comandos de deciso (IF e SELECT CASE) e repetio (DO, FOR e WHILE) existentes no programa. Alm destes, podemos usar Labels, GOTO e GOSUB, quando estritamente necessrio.

    Comando de Deciso If ... Then ... End If

    Primeira forma do comando IF:If ( expresso ) Then ' Se expresso for True Ento '

    ' Execute este bloco de comandos '

    End If Fim SeSegunda forma do comando IF (com a clusula ELSE):If ( expresso ) Then ' Se expresso for True Ento ' Execute este bloco de comandosElse ' Execute este bloco de comandosEnd If ' Fim SeTerceira forma do comando IF (com a clusula ELSE IF):If (expresso) Then ' Se expresso for True Ento ' Execute este bloco de comandosElseIf (expresso) Then ' Execute este bloco de comandosElse ' Execute este bloco de comandosEnd If ' Fim Se

    Em todas as formas o uso dos parnteses opcional. Podemos aninhar vrios comandos If.Exemplo da segunda forma do comando IF:

    If (a > b) Then ' se a for > que b, ento maior = a ' armazene o valor de a na variavel maior Else ' seno maior = b ' armazene o valor de b na variavel maior End If ' fim se ' OU, usando IIF: ' maior = IIF ( a > b, a, b )

    Em expresses simples, podemos usar a funo IIF, como abaixo:valor = IIF(expLog, exp1, exp2) ' retorna exp1 se expLog for True, seno retorna exp2

    Exemplo da terceira forma do comando IF:

    28 Programando Macros para o OpenOffice.org

  • Verso Linguagem OpenOffice.org Basic

    If (botao = Ok) Then mens$ = "OK pressionado" ElseIf (botao = Cancela) Then mens$ = "CANCELA pressionado" Else mens$ = "AJUDA pressionado" End If

    Comando de Deciso Select Case

    Forma do comando Select Case ... End Select:Select Case ( expresso_de_teste ) Case lista_de_expresses1 ' execute este bloco de comandos Case lista_de_expresses2 ' execute este bloco de comandos Case Else ' execute este bloco de comandosEnd Select ' fim da seleo

    A instruo Select Case avalia a expresso_de_teste somente uma vez, na entrada do coman-do, em seguida, compara seu resultado com a lista_de_expresses das clusulas Case. Se hou-ver uma coincidncia, os comandos abaixo do Case sero executados. Os comandos de Case Else (que opcional) sero executados se no houver nenhuma coincidncia anterior. A lista de expresses pode conter mais de uma expresso ou at uma faixa de valores (Ex: 10 To 20), com cada expresso separada por vrgula. As expresses devem ser do mesmo tipo de dado da expresso_de_teste. Aps a execuo do bloco de comandos, o controle passa para a prxima linha depois do End Select.Exemplo de Select Case avaliando constantes:

    Select Case tipoDesenho Case LINHA ' executa comandos para linha Case CIRCULO ' executa comandos para crculo Case CURVA ' executa comandos para curva Case Else ' avisa ao operador que o elemento invlido End Select

    Exemplo de Select Case avaliando valores:

    Select Case corElemento Case 0 To 2, 6, 8 ' caso cores 0, 1, 2, 6 ou 8 ' executa este bloco de comandos Case 3 To 5 ' caso cores 3, 4 ou 5 ' executa este bloco de comandos Case Is > 9 ' caso cor > 9 ' executa este bloco de comandos End Select

    Programando Macros para o OpenOffice.org 29

  • Linguagem OpenOffice.org Basic Verso

    Comando de Repetio While ... Wend

    Forma do comando While ... Wend: While ( expresso_de_teste ) ' enquanto expresso for True '

    ' executa este bloco de comandos '

    Wend ' fim enquantoEste comando avalia a expresso_de_teste no incio, se o resultado for True, o bloco de co-mandos ser executado e o controle volta para o While para uma nova avaliao da expresso. Seno o comando aps o Wend ser executado. permitido aninhar laos While ... Wend.Exemplo de While ... Wend:

    Sub exemplo_While_Wend Dim nome As String Dim nrTotal As Integer '

    nrTotal = 0 ' inicializa contador de nomes nome = Space( 10 ) ' inicializa varivel nome While (nome "") ' incio do lao ' bloco de codigo do lao '

    nome = InputBox("Digite um nome:") If nome "" Then msgBox "Voc digitou: " & nome nrTotal = nrTotal + 1 ' incrementa nrTotal End If Wend ' fim do lao MsgBox Str$(nrTotal) + " nomes foram digitados."End Sub

    Neste exemplo, enquanto o operador digitar um nome o cdigo dentro do lao ser repetido.

    Comando de Repetio For ... Next

    Forma geral do comando For ... Next: FOR Contador = valor_inicial TO valor_final STEP valor_incremento ' executa bloco de comandos IF (expresso) THEN ' para sair do lao antes do Contador atingir o valor_final EXIT FOR ' use o comando Exit For END IF ' fim se NEXT Contador ' aqui, Contador opcionalO comando For ... Next funciona da seguinte maneira:O valor_inicial atribudo varivel Contador, depois ele testa o contador com o valor_final, se o resultado do teste for True, os comandos dentro do lao sero executados, em seguida Contador ser incrementado com valor_incremento e um novo teste ser executado, at que se obtenha um valor False para o teste, conforme as regras:Para valor do incremento positivo, o teste ser True se Contador = valor_final.

    30 Programando Macros para o OpenOffice.org

  • Verso Linguagem OpenOffice.org Basic

    Se a clusula STEP for omitida o valor_incremento ser 1.O teste com IF deve ser usado se quisermos sair do lao antes que Contador bata com o valor_final.Exemplo de For ... Next:

    ' Inicializar um vetor de 100 elementos '

    Sub exemplo_For_Next Dim Vetor(1 To 100) As Integer Dim I As Integer '

    ' para I variando de 1 a 100 com incremento 1 For I = 1 To 100 ' I usado como ndice do vetor e tambm na expresso Vetor(I) = I * 2 Next I ' vai para a prxima avaliao de I ' exibe resultado da soma do 1o e ltimo elementos MsgBox Str$ ( Vetor(1) + Vetor(100) ) '

    End Sub

    Aqui, definimos um vetor com 100 elementos, com o ndice inicial em 1 e o final em 100 ( se voc no especificar o ndice inicial, o OOo Basic adota o zero ). Depois, entramos no lao e atribumos valores ( I * 2 ) para os elementos do vetor. Terminamos exibindo a soma dos primeiro e ltimo elementos do vetor.O comando For ... Next muito eficiente e deve ser usado sempre que soubermos o nmero de repeties do lao. Podemos aninhar comandos For ... Next ( muito til para operaes com matrizes ).

    Comando de Repetio Do ... Loop

    Empregado para executar um bloco de comandos um nmero indefinido de vezes. Este co-mando pode ser usado de 5 maneiras diferentes.Primeira, lao infinito: DO ' faa ' executa bloco de comandos ' teste para sair do lao, sem o teste o lao ser infinito IF (expresso) THEN EXIT DO ' sai do lao END IF LOOP ' retorna para o DoSegunda, teste no incio do comando com WHILE DO WHILE (expresso) ' faa ENQUANTO expresso for True ' executa bloco de comandos LOOP ' retorna para o DoTerceira, teste no incio do comando com UNTIL: DO UNTIL (expresso) ' faa AT que a expresso seja True ' executa bloco de comandos

    Programando Macros para o OpenOffice.org 31

  • Linguagem OpenOffice.org Basic Verso

    LOOP ' retorna para o DoQuarta, teste no final do comando com WHILE: DO ' faa ' executa bloco de comandos LOOP WHILE (expresso) ' ENQUANTO expresso for TrueQuinta, teste no final do comando com UNTIL: DO ' faa ' executa bloco de comandosLOOP UNTIL (expresso) 'AT que expresso seja True

    Em todas as maneiras podemos colocar um teste no interior do lao, para abandon-lo com o comando EXIT DO. Note que nas formas iniciadas somente com o DO, o lao ser executado pelo menos uma vez. Os Comandos Do ... Loop podem ser aninhados.Exemplo de Do ... Loop, com o teste da expresso no incio:

    Do While ( Not Eof() ) ' faa enquanto no for Fim de Arquivo ' leia a linha ' processe a linha Loop ' fim do lao

    Exemplo de Do ... Loop, com o teste da expresso dentro do lao:

    Do ' faa ' obtm nomePonto If IsNull (nomePonto) Then ' se nome do ponto for nulo Exit Do ' saia do lao End If ' fim se ' processa o ponto Loop ' fim lao

    Comandos de Desvio Incondicional

    GOTO LABEL Desvia a execuo do programa para a linha nomeada.' [ bloco de comandos ]Goto Label' [ bloco de comandos ]Label:' [ bloco de comandos ]

    GOSUB LABEL ... RETURN Desvia a execuo do programa para a linha nomeada e re-torna, para a linha seguinte ao GoSub Label, ao encontrar o comando Return.' [ bloco de comandos ]Gosub Label' [ bloco de comandos ]Label:' [ bloco de comandos ]

    32 Programando Macros para o OpenOffice.org

  • Verso Linguagem OpenOffice.org Basic

    ReturnA palavra LABEL deve ser substituda por um nome definido pelo programador. Note o sinal de dois pontos no final da linha nomeada.Estes comandos devem ser usados quando estritamente necessrio.

    Comandos de Controle de Erros

    Para manter um programa sob controle, precisamos tentar antecipar os erros possveis e as aes a serem tomadas para contorn-los. Esta a finalidade do comando ON ERROR. Ele inicia o controlador de erros e pode ser usado de vrias maneiras.On Error Goto Label => em caso de erro desvia para a linha nomeada.On Error Goto 0 => desativa o controlador de erros e continua a execuo.On Error Resume Next => desativa o controlador e continua a execuo na linha seguinte a que gerou o erro.On Error Resume Label => desativa o controlador e continua a execuo na linha nomeada.Resume Next | Label => podem ser usados isoladamente no bloco de controle de erros.A palavra Label, deve ser substituida por um nome definido pelo programador.Aps a ativao do controlador, podemos obter informaes sobre o erro, atravs de trs var-iveis globais:Err => retorna o nmero do erro.Erl => retorna a linha de cdigo que provocou o erro.Error$ => retorna uma descrio sucinta do erro.

    A escrita de cdigo para tratamento de erros no uma tarefa trivial. Como regra geral, pro-cure ativar e desativar o controlador de erros dentro das rotinas e no globalmente. Veja, a seguir, um trecho de cdigo seguindo esta estratgia.

    Sub exemplo_OnError ' Em caso de erro salta para a ' linha tratamentoDeErros: On Error Goto tratamentoDeErros '

    ' aqui vem o cdigo da rotina '

    MsgBox "Ufa! Nenhum erro." '

    ' desativa o controlador de erros On Error Goto 0 ' sai da rotina Exit Sub '

    ' cdigo de tratamento de errostratamentoDeErros: MsgBox "Erro: " & Error$ ' desativa o controlador de erros On Error Goto 0End Sub

    Note que temos dois pontos de sada da rotina (Exit Sub e End Sub) e, antes deles, desativa-mos o controlador de erros com o comando On Error Goto 0.

    Programando Macros para o OpenOffice.org 33

  • Linguagem OpenOffice.org Basic Verso

    2.6 Tipos de dados avanados

    Alm dos tipos de dados bsicos, o OOoBasic tem recursos para operaes com vetores e tipos de dados definidos pelo usurio, que so estruturas de dados mais especializadas.

    Vetores

    Um vetor (ou matriz) contm um grupo de variveis com caractersticas comuns e com o mes-mo tipo de dado. Com uma matriz podemos usar um s nome de varivel e acessar os valores de um elemento usando um ndice. Uma matriz tem um limite inferior e um limite superior em cada dimenso. Os ndices so valores inteiros (negativos ou positivos).A declarao de uma matriz pode ser feita com a instruo DIMDIM nome_vetor (numero_elementos) AS tipo_dadoDIM nome_matriz (nr_linhas, nr_colunas) AS tipo_dado

    Os elementos da matriz so referenciados atravs dos seus ndices. Por padro, os ndices comeam em zero.Seguem alguns exemplos de emprego de matrizes:

    Dim nomeDePonto (30) AS String 'Vetor para 31 nomes de pontos (0 a 30) Dim coordPonto3D# (30, 2) ' Matriz de 2 dimenses com 31 linhas e ' 3 colunas (X, Y e Z) do tipo Double ' Atribuindo valores nomeDePonto(0) = "Ponto01" ' atribui a cadeia ao 1o. elemento do vetor nomeDePonto(30) = "Ponto31" ' atribui a cadeia ao ltimo elemento do vetor ' Acessando valores coordX = coordPonto3D(9,0) ' obtm o valor da linha 10, coluna 1 coordY = coordPonto3D(9,1) ' obtm o valor da linha 10, coluna 2 coordZ = coordPonto3D(9,2) ' obtm o valor da linha 10, coluna 3

    Os ndices inferior e superior podem ser definidos com a clusula TO, por exemplo:

    Dim sNomes$(1 To 30) ' Declara vetor para 30 (1 a 30) nomes Dim matrizA%(1 To 5, 1 To 3) ' Declara matriz de 5 linhas X 3 colunas

    Podemos declarar uma matriz cujo tamanho ser determinado posteriormente.Dim nomePonto$( ) ' Declara um vetor de tamanho desconhecidoAps conhecer o nmero de pontos, podemos redimensionar o vetor com REDIM:NumeroPontos = 100Redim nomePonto(numeroPontos) 'redimensiona o vetor para 101 nomes (0 a 100)REDIM apaga o contedo do vetor, se quisermos aumentar o tamanho do vetor preservando o seu contedo, devemos usar a clusula PRESERVE, veja abaixo:REDIM PRESERVE nomePonto(200) ' aumenta de 100 para 200 conservando o contedo

    Vetores e matrizes so estruturas de dados apropriadas para uso com as instrues de repetio (laos), sendo que a mais adequada For ... Next. Vejamos um exemplo que soma duas matrizes 3x3.

    34 Programando Macros para o OpenOffice.org

  • Verso Linguagem OpenOffice.org Basic

    Sub somaMatrizes ' declara as matrizes 3x3 Dim m1(2,2) As Integer Dim m2(2,2) As Integer Dim soma(2,2) As Integer ' inicializa as matrizes m1 e m2 For i = 0 To 2 For j = 0 To 2 m1(i,j) = i * j m2(i,j) = m1(i,j) * m1(i,j) Next j Next i ' soma m1 e m2 (poderia ser no lao anterior) For i = 0 To 2 For j = 0 To 2 soma(i,j) = m1(i,j) + m2(i,j) Next j Next i ' exibe o ultimo elemento de cada matriz print m1(2,2); m2(2,2); soma(2,2)End Sub

    Vetor de vetores

    Nesta estrutura de dado, um vetor armazena outros vetores, que podem ter tipos de dados e tamanhos diferentes. Observe o esquema abaixo:vetor(0)

  • Linguagem OpenOffice.org Basic Verso

    linha = vetor(i) msg = "" ' acessa os elementos do vetor secundrio For j = LBound(linha()) To UBound(linha()) msg = msg & linha(j) & " " Next j ' exibe os elementos do vetor secundrio MsgBox msg Next iEnd Sub

    As funes LBound e UBound retornam os limites inferior e superior de um vetor.

    Tipo de dado definido pelo usurio

    Esta estrutura permite a definio de um tipo de dado composto por campos. Assemelha-se a um registro de uma tabela.A criao de um novo tipo de dado feita com a instruo TYPE ... END TYPE, fora de qual-quer procedimento, como a seguir:TYPE novo_tipo campo1 AS campo2 AS campo3 AS ...

    campoN AS END TYPENo podemos ter um vetor como um campo de dado.Aps a definio do tipo, usamos o comando DIM para criar variveis deste tipo.DIM meu_registro AS novo_tipoDIM meus_dados(100) AS novo_tipo

    O acesso aos campos se d com o uso do operador . (ponto).meu_registro.campo1 = valorminha_var = meu_registro.campo2meus_dados(10).campo3 = valor3O operador . (ponto) ser bastante utilizado com os objetos da API do OOo.Como um exemplo prtico, suponha que vamos registrar dados sobre clientes. Os dados so:nome da pessoa: tipo String com tamanho 40nascimento: tipo String com tamanho 8altura: tipo Single peso: tipo SingleComo temos diversas pessoas poderiamos usar vetores para manipular os dados, mas neste caso, eles seriam tratados separadamente. Ento, prefervel criar um tipo de dado contendo todos os campos e, em seguida, criar um s vetor deste tipo de dado.Veja uma possvel soluo:

    36 Programando Macros para o OpenOffice.org

  • Verso Linguagem OpenOffice.org Basic

    ' cria um novo tipo de dadoType Cliente ' declara os campos nome AS String*40 nasc AS String*8 peso AS Single altura As SingleEnd Type

    Sub tipoDefinidoUsuario ' declara uma varivel para o cliente Dim meuCliente As Cliente ' inicializa o registro meuCliente.nome = "Regina Cavalcante" meuCliente.nasc = "10/05/85" meuCliente.peso = 61 meuCliente.altura = 1.72 ' exibe dados print meuCliente.nome; meuCliente.pesoEnd Sub

    A declarao do tipo feita fora da rotina e o acesso aos campos usa o operador ponto. Tam-bm, note a declarao de uma cadeia de comprimento fixo.

    Programando Macros para o OpenOffice.org 37

  • Organizao do Programa OOoBasic Verso

    3 Organizao do Programa OOoBasic

    No OOo Basic, um programa organizado em procedimentos ( sub-rotinas ou funes ). O ponto de entrada da macro, procedimento principal, da responsabilidade do programador. Sub-rotinas e funes podem ser intrnsicas (vem com o OOo Basic) ou definidas pelo usurio. Uma sub-rotina no retorna nenhum valor, j uma funo retorna um valor, logo elas devem ser usadas com parte de uma expresso. Um procedimento pode ser chamado dentro de outros procedimentos de uma macro.Qualquer bloco de cdigo passvel de reutilizao na macro corrente ou noutra qualquer, deve ser implementado como um procedimento definido pelo usurio, este o critrio bsico. Por exemplo, se numa macro, precisarmos determinar o menor dentre trs valores mais de uma vez, devemos criar uma funo prpria para esta tarefa.

    3.1 Comandos

    Um comando uma combinao de elementos do Basic, escrito de acordo com as regras de sintaxe da linguagem. Alguns podem ocorrer em qualquer parte do programa, outros no. Os comandos so os responsveis pela funcionalidade dos procedimentos.Normalmente um comando cabe numa s linha, caso contrrio podemos usar o sublinhado, para indicar que o comando continua na prxima linha. O caractere de continuao no pode ser usado dentro de uma cadeia (string) e deve ser o ltimo na linha. Veja o exemplo:Informe$ = Esta uma linha de comando que continua + _

    na prxima linha

    Numa mesma linha, podemos escrever mais de um comando, usando o caractere dois pontos, como separador de comandos. Abaixo, temos trs comandos de atribuio:i = 0 : j = 1 : sinal = False

    3.2 Sub-rotinas

    Sub-rotinas devem ser definidas pelo comando SUB ... END SUB, da seguinte maneira:SUB Nome_Da_Rotina ( Lista_De_Parmetros )'

    ' Declarao de variveis Locais ' Comandos da sub-rotina'

    END SUBA Lista_de_Parmetros, so os valores, separados por vrgula, que a rotina recebe para execu-tar o seu trabalho e devem conter a especificao de tipo. Por exemplo:SUB MinhaSub (par1 As Integer, par2 As Double, par3 As String)Se um dos parmetros for uma varivel da macro o seu nome na lista da sub-rotina pode (e deve) ser diferente do nome da varivel na macro.

    38 Programando Macros para o OpenOffice.org

  • Verso Organizao do Programa OOoBasic

    Exemplo de sub-rotina que troca os valores de duas variveis:

    SUB TrocaValores ( valor1 As Double, valor2 As Double)'

    Dim temp As Double '

    temp = valor1 valor1 = valor2 valor2 = temp ' Note que apesar de no retornar valores, as variveis passadas ' como parmetros foram alteradas e estas alteraes sero ' visveis na rotina que chamar TrocaValores'

    END SUB

    Agora vamos escrever uma macro que chama a rotina TrocaValores:

    Sub testeTrocaValores ' declara as variaveis Dim a As Double, b As Double ' atribui valores a = 1111.11 : b = 2.22 print a; b ' chama a rotina troca valores TrocaValores ( a, b ) ' mostra o resultado print a; bEnd Sub

    O comando EXIT SUB pode ser usado dentro de uma sub-rotina para abandon-la imediata-mente.

    3.3 Funes

    A definio de uma funo feita entre os comandos FUNCTION ... END FUNCTION, como abaixo:FUNCTION NomeFuncao (ListaParametros) As TipoRetornado

    ' declarao das variveis locais ' comandos da funo

    NomeFuncao = expresso_Retorno ' NO ESQUEA!

    END FUNCTIONNote que uma funo retorna o valor de uma expresso numa varivel de nome igual ao nome da funo.O comando EXIT FUNCTION pode ser usado dentro de uma funao para abandon-la imedi-atamente.

    Exemplo de uma funo que calcula o volume de uma esfera, a partir do seu raio:

    FUNCTION VolumeEsfera ( raio As Double ) As Double Dim diametro As Double '

    Programando Macros para o OpenOffice.org 39

  • Organizao do Programa OOoBasic Verso

    diametro = 2 * raio VolumeEsfera = (PI / 6) * diametro ^ 3 ' NOTE: nome da funo VolumeEsfera; nome da varivel: VolumeEsferaEND FUNCTION

    Sub testeVolumeEsfera Dim r As Double r = 5 volume = VolumeEsfera( r ) print "Volume: "; volumeEnd Sub

    3.4 Passagem de Parmetros

    A passagem de parmetros para sub-rotinas e funes pode ser feita de duas maneiras, por referncia (padro) ou por valor. Quando um parmetro (varivel) passado por referncia, qualquer alterao em seu contedo ser refletida na rotina chamadora. Se a passagem for por valor, as alteraes na varivel sero descartadas quando o procedimento terminar a sua exe-cuo e o valor original ser preservado. Matrizes so passadas por referncia.Para passar um parmetro por valor, na definio do procedimento, use a palavra BYVAL, antes do nome do parmetro, ou, se BYVAL omitida, coloque a varivel entre parnteses, na chamada, veja abaixo:

    SUB ImprimePonto (BYVAL cadeia$, X#, Y#)

    cadeia = Ltrim$(Rtrim$(cadeia) + ", " + Str$(X) + ", " + Str$(Y) Print cadeia ' a mudana em cadeia, ser descartada no trmino da SubEND SUB

    Com relao aos parmetros, existe, ainda, a questo da obrigatoriedade ou no da passagem. Se declarados normalmente eles so obrigatrios, se declarados com o comando OPTIONAL a passagem opcional. Veja abaixo uma modificao da declarao anterior.

    SUB ImprimePonto (BYVAL cadeia$, Optional X, Optional Y) ' agora os parmetros X e Y so opcionais ' use a funo IsMissing para verificar se foi passado ou no If IsMissing(X) Then MsgBox "X no foi passado" End If ' outros comandosEND SUB

    40 Programando Macros para o OpenOffice.org

  • Verso Organizao do Programa OOoBasic

    3.5 Escopo das variveis

    O escopo tem a ver com a visibilidade de uma varivel dentro da macro, ou seja, os lugares da macro onde esta varivel pode ser referenciada. Quanto ao escopo, uma varivel pode ser lo-cal, pblica ou global, conforme a sua declarao.Quando for declarada, de modo explcito ou no, dentro de uma sub-rotina ou funo ela ser visvel apenas dentro da sub-rotina ou funo, sendo portanto local. Ser pblica quando declarada fora de qualquer sub-rotina ou funo com os comandos PUB-LIC, neste caso ela ser visvel por todos os procedimentos em todas as bibliotecas, mas seu valor ser conservado apenas durante a execuo da macro. As variveis declaradas com DIM ou PRIVATE deveriam ser visveis apenas no mdulo, mas elas se comportam como uma var-ivel pblica.Se for declarada fora de uma sub-rotina ou funo com o comando GLOBAL, ela ser visvel por todas as rotinas de todas bibliotecas e, ainda, preserva o seu valor aps o trmino da exe-cuo da macro.Para entender os conceitos, analise o cdigo abaixo, execute a macro exemploEscopo e, logo aps, a macro testaGlobal:

    ' visivel em todas as bibliotecas, preserva' o valor entre as chamadasGlobal varGlobal As Integer' v