Como criar macros para abrir e fechar formulários no LibreOffice Base 6.3.5

Estou trabalhando em um banco de dados do LibreOffice Base 6.3.5,onde eu criei um formulário com botões de pressão, e em um desses botões ,é necessária a ação de abrir um formulário, ação essa que só é possível através de uma macro. Sou usuário iniciante do LibreOffice, e possuo muito pouco conhecimento em programação, gostaria muito de receber auxílio de alguém que me descrevesse, passo a passo como criar essa macro, e também respectivamente uma macro que fechasse o formulário, e uma última macro que acessa- se um relatório.

Boa tarde!

Também sou iniciante no LibreOffice Base e tenho (ou tinha) um problema semelhante. No meu caso, eu já consigo abrir e fechar os formulários, mas eu quero um botão com duas ações (fechar o formulário atual e abrir outro sem voltar para o formulário inicial). Para abrir e fechar (botão com uma só ação), eu fiz assim:

PASSO 1 - Ativar macros

No “Menu Principal” do LibreOffice, clique em “Ferramentas”, depois em “Opções”, depois em “Segurança”, depois no botão “Segurança de macros…” e na aba “Nível de segurança”, marque a opção “Média” ou “Baixa (não recomendado)”

Obs: no nível “Média”, toda vez que abrir o arquivo de banco de dados vai pedir para ativar macros (eu escolhi o nível “Media”; o nível “Baixa” é mais arriscado).

PASSO 2 - Criar as macros (acho que o arquivo do banco de dados precisa está aberto)

a) No “Menu Principal” do LibreOffice, clique em “Ferramentas”, selecione “Macros”, “Organizar Macros” e depois clique em “Basic”.

Na janela “Macros do BASIC”, na coluna esquerda deve aparecer a lista de macros: “Minhas macros”, “Macros do Libreoffice”, etc e logo abaixo o nome do(s) seu(s) arquivo(s) de banco de dados.

b) Com dois cliques (ou pela seta), selecione seu arquivo de banco de dados, depois “Standard” e depois clique em “Nova” (no meu caso ficou “Module1”, mas acho que poderia ter dado outro nome. Todas as macros que criei ficou dentro de "Module1 e depois da primeira macro eu clicava em “Editar” para criar as outras macros). O LibreOffice cira uma macro vazia chamada Main (não sei se tem alguma função, mas eu não mexi nela, apenas criei as minhas logo abaixo dela):

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

Sub Main

End Sub

Obs: O texto após o “REM” é um comentário. “Sub” delimita o início da macro, “Main” é o nome da macro e “End Sub” o fim da macro.

c) Os códigos das macros que criei (logo abaixo da macro “Main”:

REM ***** Abre o formulário fm_produtos *****
Sub Abrir_fm_produtos
const sNewDocumentName=“fm_produtos”
oNewFormDocument=ThisDatabaseDocument.FormDocuments.getbyname(sNewDocumentName).open
End Sub

REM ***** Fecha o formulário fm_produtos *****
Sub Fechar_fm_produtos
const sNewDocumentName=“fm_produtos”
oNewFormDocument=ThisDatabaseDocument.FormDocuments.getbyname(sNewDocumentName).close
End Sub

REM ***** Abre o relatório rl_estoque_produtos *****
Sub Abrir_rl_estoque_produtos
const sNewDocumentName=“rl_estoque_produtos”
oNewReportDocument=ThisDatabaseDocument.ReportDocuments.getbyname(sNewDocumentName).open
End Sub

Obs1: não esquecer de salvar a macro assim que criá-la. Eu criei uma de cada vez, saia para configurar e testar os botões e voltava para criar a próxima (ao voltar para “Module1”, eu clicava em “Editar” em vez de “Nova”).

Obs2: o nome da macro fica logo após o “Sub”, na primeira linha, e não pode ter caracteres especiais nem espaço. Ex: “Abrir_fm_produtos” para diferenciar do nome do formulário que ela abrirá (fm_produtos).

Obs3: “const sNewDocumentName”, na segunda linha, é uma constante que recebe o nome do objeto que será acionado (formulário, relatório, etc). Ex: fm_produtos

Obs4: o que diferencia a ação das macros é o comando no final da terceira linha, após o ponto (.). Ex: “open” para abrir e “close” para fechar.

Obs5: na terceira linha, no meio do comando (?) é informado o tipo do objeto que será acionado. Ex: “oNewFormDocument” e “FormDocuments” (para formulários) ou “oNewReportDocument” e “ReportDocuments” (para relatórios).

PASSO 3 - Configurar o botão para chamar a macro

a) No arquivo do banco de dados, abrir o formulário (ou relatório) para edição.

b) Criar ou selecionar o botão de pressão e abrir “Propriedades do controle”.

c) Na aba “Geral”, se desejar, mude o “Nome” e o “Rótulo” do botão.

d) Na aba “Eventos”, em “Executar ação”, clique no botão ao lado (3 pontinhos), na janela “Atribuir ação” selecione “Ao executar ação” e clique no botão “Macro…”, na janela “Seletor de macros”, na coluna “Biblioteca”, selecione seu banco de dados, depois “Standard”, depois “Module1”, selecione a macro correspondente a ação e clique em “Ok”.

e) Feche as janelas na sequência inversa, saia do modo edição e salve seu formulário e seu banco de dados. Pronto. No meu funcionou.

E para o meu problema, deve ser possível colocar as duas ações (fechar um e abrir outro) na mesma marco. Vou continuar procurando a solução. Se alguém puder ajudar, eu agradeço.

REM Abre o formulário fm_produtos

Sub Abrir_fm_produtos

const sNewDocumentName=“fm_produtos”

oNewFormDocument=ThisDatabaseDocument.FormDocuments.getbyname(sNewDocumentName).open

End Sub

REM Fecha o formulário fm_produtos

Sub Fechar_fm_produtos

const sNewDocumentName=“fm_produtos”

oNewFormDocument=ThisDatabaseDocument.FormDocuments.getbyname(sNewDocumentName).close

End Sub

REM Abre o relatório rl_estoque_produtos

Sub Abrir_rl_estoque_produtos

const sNewDocumentName=“rl_estoque_produtos”

oNewReportDocument=ThisDatabaseDocument.ReportDocuments.getbyname(sNewDocumentName).open

End Sub

Na postagem anterior, os códigos não ficaram em linhas separadas para facilitar o entendimento…