# OpenOffice.org/Macro

Uma Macro é uma subrotina que executa uma tarefa.
Macros são utilizadas principalmente para automatizar tarefas repetitivas, mas também podem ser utilizadas para executar tarefas que seriam impraticáveis de serem feitas em modo normal.
Uma diferença conceitual muito importante é que a linguagem de programação normalmente usada pelas macros é Turing completa, enquanto que as planilhas eletrônicas (Calc, por exemplo) não são - por exemplo, não é possível escrever loops com um número indeterminado de passos.

## Índice

* #Criação de uma macro
* #Execução de uma macro
* #Linguagem da macro
* BASIC
* Orientação a objetos
* Atributos e métodos
* ThisComponent - o principal objeto de qualquer programa
** ThisComponent.Sheets - as planilhas de um documento Calc
** ThisComponent.DrawPages - os desenhos de um documento Draw e os slides de um documento Impress

## Criação de uma macro

A forma mais simples de criar uma macro é usar o "gravador de macros":
* Clicar em "Ferramentas" -> "Macros" -> "Gravar Macro"
* Entrar com os comandos que a macro vai executar
* Terminar a gravação da macro
* Entrar em "Ferramentas" -> "Macros" -> "Organizar Macros" -> "BR Office.org Basic" (ou "OpenOffice.org BASIC") -> "Editar"
* Examinar e (eventualmente) modificar a macro
Diferentemente do Microsoft Office, a macro criada pelo método acima, por default, não está associada ao documento, mas ao usuário, organizada em "Minhas Macros" -> "Standard" -> "Module1". Para criar uma macro associada ao documento, é preciso criá-la em (nome do documento) -> "Standard".
Uma macro, criada na forma acima, está na linguagem BASIC. É possível também usar macros em outras linguagens de programação.
Um cuidado deve ser tomado por quem está familiarizado com as macros do Microsoft Excel: este BASIC é completamente distinto do VBA - de modo que uma planilha Excel que contenha macros não consegue ser importada pelo Calc.
Alguns aplicativos (por exemplo, [[../../Draw/]]) do OpenOffice não permitem que macros sejam criadas através deste método de "gravar macro". Para criar macros deve-se fazer:
* Entrar em "Ferramentas" -> "Macros" -> "Organizar macros" -> "BROffice.org Basic" (ou "OpenOffice.org BASIC")
* Procurar o arquivo em questão e selecioná-lo, entrando na pasta "Standard"
* Se a pasta "Standard" estiver vazia, selecioná-la, clicar no botão "Novo" e dar um nome para o arquivo que conterá a macro. Este arquivo não precisa ter o nome da macro (mas, obviamente, se a ideia for organizar cada macro em um arquivo, o bom senso recomenda que cada arquivo tenha o nome da macro)
Será criado um arquivo com:
Este arquivo pode ser editado à vontade, inclusive mudando-se o nome da macro de Main para qualquer outro nome mais apropriado.

## Execução de uma macro

Existem várias formas de executar uma macro. A mais simples e direta é através do Menu:
* Ferramentas -> Macro -> Executar Macro... (e agora escolhe-se a macro)
Uma outra forma, que é mais difícil de programar mas mais simples de executar, consiste em criar um Botão que, ao ser pressionado, invoca a macro.
Para isto, são necessários os seguintes passos:
* Escrever a macro
* Inserir o botão no aplicativo (por exemplo, em uma planilha)
* Associar o clique do botão à execução da macro
Veremos isto passo a passo.
A escrita da macro foi resumida no parágrafo acima. Para mais detalhes, ver o módulo sobre a linguagem BASIC.
A inserção do botão é feita de forma não-trivial: em vez do modo natural (que seria "Inserir" -> "Objeto" -> "Botão", ou algum modo parecido), os programadores do OpenOffice adotaram o mesmo layout esdrúxulo do Microsoft Office, então para inserir um botão deve-se seguir a sequência:
* "Exibir" -> "Barra de Ferramentas" -> "Controle de Formulários"
* Se, depois disto, a barra estiver com campos desativador, clicar no ícone correspondente a "Ativar/Desativar Modo de Design"
* Escolher "Botão de pressão" e inserir o botão no documento
* Mudar o nome exibido pelo botão para indicar o que ele vai fazer: clique no botão com o botão direito do mouse, escolha "Controle", aba "Geral" e mude o campo "Rótulo"
Para associar o botão a uma macro, é preciso alterar o campo de "Executar Ação" da aba "Eventos" do botão:
* Clique com o botão direito do mouse no botão, escolha "Controle", aba "Eventos"
* Clique no ícone [...] e escolha a Macro que está associada ao botão
* É preciso agora sair do "modo design": "Exibir" -> "Barra de Ferramentas" -> "Controle de Formulários" -> "Ativar/Desativar Modo de Design". O modo de design estará desativado se quase todos os campos estiverem neutralizados.

## Linguagem da macro

As macros normalmente são criadas e utilizadas em "OpenOffice Basic" (ver BASIC). Em princípio, é possível escrever e utilizar macros em outras linguagens (por exemplo, Python), mas o procedimento para incluir é absurdamente complexo (ver Python as a macro language para ter uma ideia da complexidade).

## Ver também

* Microsoft Office/Macro - criação de macros no Microsoft Office