Macro para salvar e fechar um documento no Word
Neste tutorial usarei como exemplo um Controle Activex (Botão de Comando) e adicionarei a ele através do VBA uma macro para que ao receber um clique o documento ativo seja salvo e em seguida fechado.
Inserir Controle no documento
Clique na Guia Desenvolvedor e no grupo Controles clique em Ferramentas Herdadas, como mostra a imagem abaixo.
Clique no controle Botão de Comando.
Observe o botão inserido no documento.
Alterar as propriedades do controle
Selecione o botão de comando e novamente na Guia Desenvolvedor no Grupo Controles clique em Propriedades ou se preferir selecione o controle com o botão direito do mouse e clique em Propriedades, como mostra a imagem abaixo.
Na Janela de Propriedade vamos definir as seguintes propriedades:
Caption = Salvar
Font = Arial, negrito, tamanho 11
OBS: Você pode alterar outras propriedades se assim desejar, porém, neste exemplo alterarei somente as propriedades acima mencionadas.
Observe como ficou agora o nosso controle no documento.
Adicionando código ao controle
Selecione o controle e com o botão direito do mouse clique sobre ele e depois clique em Exibir Código ou se preferir clique duas vezes sobre o controle.
Agora no evento Click do botão adicione o seguinte código:
Private Sub CommandButton1_Click()
Dim quest As VbMsgBoxResult
quest = MsgBox("Deseja realmente fechar este documento?", vbYesNo, "Fechar documento")
If quest = vbYes Then
With ActiveDocument
.Save
.Close
End With
Else
Exit Sub
End If
End Sub
Deverá ficar como na imagem abaixo:
Na 2ª linha do código declaramos a variável quest como tipo VbMsgBoxResult para armazenar o resultado da MsgBox.
Na linha 3 usamos a função MsgBox para exibir uma mensagem solicitando uma confirmação de decisão utilizamos o parâmetro vbYesNo para na mensagem seja exibido dois botões (Sim e Não), assim o usuário deverá clicar em uma das opções mostrada para que o retorno seja armazenado na variávelquest.
Em seguida, usamos a estrutura condicional If…Then…Else para verificar o resultado da função.
Se o resultado armazenado na variável quest for igual a constante vbYes (se a confirmação do usuário for sim) então o documento ativo será salvo (.Save) e depois fechado (.Close).
Caso contrário (Else) a macro deve parar sua execução saindo imediatamente do procedimento e para isso usamos a instrução Exit Sub. Neste caso o documento não será salvo e nem fechado. Isso significa que o usuário clicou no botão não (constante vbNo).