Fechar Caixa de Diálogo após execução de macro

Galera, criei uma caixa de diálogo com botões que executam macros, mas não consigo fechar a caixa de diálogo após a execução das macros.
Como posso fazer isso?

Obrigado


Bom dia Grafeno,

Obrigado pela disposição em ajudar, sou iniciante e estou penando um pouco.

Já estou com a variável declarada, mas ele está retornando este erro quando tento abrir a caixa de diálogo

Descrição da imagem

Como proceder?

Abraços

----------- EDIT

Segue o código (o erro persiste)

REM  *****  BASIC  *****
 
  Dim oPRESCPROT As Object

Sub ABRIRPROT

    DialogLibraries.LoadLibrary("Standard")
    'Usando a variável declarada no começo do módulo'
    oPRESCPROT = CreateUnoDialog( DialogLibraries.Standard.getByName("PRESCPROT") )

    oPRESCPROT.Execute()
    oPRESCPROT.Dispose()
End Sub
1 Like

Boa noite,


Você não disse como carregou o diálogo para executar as macros, então vou detalhar o processo.

Para fechar , primeiro precisa ter uma variável declarada no começo do módulo:

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

'Varíavel para o diálogo'
Dim oDialogo AS Object

Ela deve ser usada para carrega o diálogo (exemplo):

Sub CarregarDialogo
	DialogLibraries.LoadLibrary("Standard")
	'Usando a variável declarada no começo do módulo'
	oDialogo = CreateUnoDialog( DialogLibraries.Standard.getByName("NOME_DO_SEU_DIÁLOGO") )

	oDialogo.Execute()
	oDialogo.Dispose()
End Sub

Então você poderá usar o método para fechar em qualquer macro associada a um botão:

Sub FecharDialogo()
   oDialogo.EndExecute()
End Sub

Atte,

Exemplo de uso

Descrição da imagem

@liban, você colocou o nome do seu diálogo no código? Editei minha resposta, agora veja se no lugar de “NOME_DO_SEU_DIÁLOGO” está o nome exato do seu. Se não for isso, por favor, edite sua pergunta e cole o seu código.

@Grafeno o erro persiste. Editei exatamente como está o código.

Obrigado

@liban, colei seu código em um .ods novo, criei um diálogo chamado “PRESCPROT” e ele funcionou perfeitamente. Veja este arquivo e diga se ele funciona com vc.

@Grafeno, realmente funcionou seu arquivo com meu código.
Consegui resolver salvando uma cópia do documento, e abriu normalmente, mas não consigo entender o motivo.
De qualquer forma, o problema foi solucionado.

Muito obrigado pela paciência e apoio,
Grande abraço!

Você também pode criar uma caixa de mensagem de aviso antes de fechar uma caixa de diálogo. Veja:

Function FecharDialogo()
	On Error Goto Sair
		Dim FecharDialg as Integer
			FecharDialg = MsgBox("Deseja SAIR do Formulário?",1,"Sair Formulário")
				If (FecharDialg = 1) Then
					dlg.endExecute()
				Else
	  			End If
   	On Error Goto 0
	Exit Function
	Sair:
	MsgBox "Linha " & Str(Erl) & ": " & Error$, 176, "Erro: Falta de Parâmetro"
	On Error Goto 0
End Function