Formulário com Macro no Word - Exemplo 3
Neste tutorial darei um simples exemplo de como podemos executar uma macro através de um campo de formulário deixando seu preenchimento o mais automático possível.
Para este exemplo criaremos uma tabela com três linhas e três colunas, como mostra a figura abaixo:
Agora vamos inserir os controles dentro de nossa tabela. Neste exemplo usaremos os seguintes controles de formulário:
1 Caixa de Combinação
2 Caixas de Seleção
Coloque o ponto de inserção na célula abaixo de Nome e em seguida acione a Guia Desenvolvedor e no Grupo Controles clique em Ferramentas Herdadas.
Em Formulários Herdados clique em Caixa de Combinação.
Veja como ficará.
Coloque o ponto de inserção na célula abaixo de Masculino e em seguida acione a Guia Desenvolvedor e no Grupo Controles clique em Ferramentas Herdadas.
Em Formulários Herdados clique em Caixa de Seleção.
Veja como ficará:
Coloque o ponto de inserção na célula abaixo de Feminino e em seguida acione a Guia Desenvolvedor e no Grupo Controles clique em Ferramentas Herdadas.
Em Formulários Herdados clique em Caixa de Seleção.
Veja como ficará:
Agora que todos os controles foram inseridos no documento vamos criar a macro que deverá ser executada.
Na Guia Desenvolvedor, no Grupo Código clique Visual Basic ou use a tecla de atalho Alt + F11.
No Editor do Visual Basic, na janela Projeto – Project clique em ThisDocument.
Digite as seguintes linhas de código:
Sub exemplomacro()
Dim Valor As String
Valor = ActiveDocument.FormFields("Dropdown1").Result
If Valor = " " Then
MsgBox"Selecione o nome.", vbOKOnly, "Exemplo de Formulário com macro"
ActiveDocument.FormFields("Selecionar1").CheckBox.Value = False
ActiveDocument.FormFields("Selecionar2").CheckBox.Value = False
SendKeys "+{TAB}"
Else
If Valor = "Antônio" Then
ActiveDocument.FormFields("Selecionar1").CheckBox.Value = True
ActiveDocument.FormFields("Selecionar2").CheckBox.Value = False
Else
If Valor = "Maria" Then
ActiveDocument.FormFields("Selecionar1").CheckBox.Value = False
ActiveDocument.FormFields("Selecionar2").CheckBox.Value = True
End If
End If
End If
End Sub
Observe a figura abaixo:
Explicando o código de maneira simples:
Sub exemplomacro() ‘Cria uma macro chamada exemplomacro
Dim Valor as String ‘Declara a variável Valor como tipo String (texto)
Valor = ActiveDocument.FormFields(“Dropdown1”).Result ‘Afirma que Valor é igual ao conteúdo selecionado no campo Dropdown1 (campo de formulário suspenso) do formulário do documento ativo.
O trecho abaixo impõe algumas condições e validação aos controles
Se Valor for igual a espaço em branco, então..., ou seja, se nenhum nome for selecionado, será exiba uma caixa de mensagem informando ao usuário que um nome deve ser selecionado e nenhuma das caixas de seleção será selecionada.
If Valor = " " Then ‘É necessário colocar um espaço (somente um) entre aspas
MsgBox "Selecione o nome.", vbOKOnly, "Exemplo de Formulário com macro"
ActiveDocument.FormFields("Selecionar1").CheckBox.Value = False
ActiveDocument.FormFields("Selecionar2").CheckBox.Value = False
SendKeys "+{TAB}" ‘retorna o foco a Caixa de Seleção
Else
If Valor = “Antônio“ Then ‘Se Valor for igual a Antônio, então...
ActiveDocument.FormFields("Selecionar1").CheckBox.Value = True ‘Será selecionado a primeira caixa de seleção do formulário do documento ativo.
ActiveDocument.FormFields("Selecionar2").CheckBox.Value = False ‘A segunda caixa de seleção do formulário do documento ativo não será selecionada.
Else ‘Senão...
If Valor <> "Maria" Then ‘Se Valor for igual a Maria, então...
ActiveDocument.FormFields("Selecionar1").CheckBox.Value = False ‘A primeira caixa de seleção do formulário do documento ativo não será selecionada.
ActiveDocument.FormFields("Selecionar2").CheckBox.Value = True ‘Será selecionado a segunda caixa de seleção do formulário do documento ativo.
End If ‘Fecha a primeira condição
End If ‘fecha a segunda condição
End If ‘fecha a terceira condição
End Sub ‘Encerra a macro
Feche o Editor do Visual Basic e volte ao documento.
Agora devemos alterar as propriedades dos controles que foram inseridos em nossa tabela.
Selecione o controle Caixa de Combinação e clicando com o botão direito do mouse sobre ele selecione Propriedades no menu pop up, como mostra a figura abaixo.
Agora posicione o cursor dentro da caixa de texto Item suspenso e pressione a tecla de espaço apenas uma vez e em seguida clique em Adicionar para inserir um item em branco na lista suspensa (este será o primeiro item da lista).
Da mesma forma posicione novamente o cursor dentro da caixa de texto Item suspenso e insira os seguintes itens: Antônio e Maria, não esquecendo de clicar no botão Adicionar para inclusão de cada item.
Em Executar macro clique em Saída e selecione a macro que criamos anteriormente chamada exemplomacro e clique em OK.
Em Configurações de campo deixe o campo Indicador com o nome Padrão que já está preenchido (Dropdown1), é possível mudar o nome do Indicador, porém todas as vezes que for fazer referência a este campo deve utilizar o novo nome do Indicador, selecione apenas a opção Suspenso ativado.
Para finalizar clique no botão OK.
Observe a figura abaixo:
Agora vamos proteger nosso formulário para que possamos vê-lo em funcionamento.
Na Guia Desenvolvedor, no Grupo Proteger clique em Proteger Documento.
Clique em Restringir Formatação e Edição
No lado direito da tela surgirão as opções de restrição. Em Restrições de edição selecione a opção “Permitir apenas este tipo de edição no documento:”, em seguida no menu DropDown selecione “Preenchendo Formulários”. Em seguida clique no botão Sim, Aplicar Proteção. Observe a imagem abaixo:
Digite uma senha para aplicar a proteção.
OBS: Proteger o formulário ativa os controles e permite que os usuários o completem. As outras áreas do formulário ficam protegidas de alterações, o que impossibilita que o usuário faça qualquer tipo de modificação.
Para desativar a proteção basta somente clicar no botão Parar Proteção e se você optou por colocar uma senha ela será requerida para desproteger.
Com o formulário protegido você deve navegar pelos controles usando a Tecla Tab.
Tab: avançar para o próximo controle
Shift + Tab: retornar ao controle anterior
Clique no primeiro controle e selecione um nome e depois pressione a tecla Tab para sair deste campo. Note que ao sair do campo a macro é acionada preenchendo automaticamente os outros campos conforme o item selecionado.
Veja a seqüência de imagens abaixo:
Caso o usuário pressione a tecla TAB sem ter selecionado nenhum nome uma mensagem será exibida informando que um nome seja selecionado, em seguida retorna o foco à Caixa de Seleção. Observe a sequência de imagens.
Para que uma macro possa ser executada é necessário alterar a configuração de Macro do Word. Pra isso clique no Botão do Office e em seguida clique no botão Opções, como mostra as imagens abaixo:
Na janela de Opções do Word clique em Central de Confiabilidade:
Clique em Configurações da Central de Confiabilidade...
Em Central de Confiabilidade clique em Configurações de Macro e em Configurações de Macro selecione a opção Habilitar todas as macros.
Para concluir clique no botão OK. Agora o Microsoft Word está habilitado para executar macros.
Consideração Final: A partir do exemplo aqui mostrado você poderá criar outras macros a adaptá-las aos seus formulários automatizando ainda mais o seu preenchimento pelos usuários.
Neste simples exemplo que usamos ainda é possível aperfeiçoar a macro para uma lista maior de nomes e controles.
Dica importante: Para evitar que o usuário clique nas caixas de seleção é possível desativa-las deixando suas propriedades Enabled como False e retirando a linha SendKeys “+{TAB}”.
Acrescente as seguintes linhas:
ActiveDocument.FormFields("Selecionar1").Enabled = False
ActiveDocument.FormFields("Selecionar2").Enabled = False
Exclua a seguinte linha:
SendKeys “+{TAB}”
Desta maneira o código ficaria assim:
Sub exemplomacro()
Dim Valor As String
Valor = ActiveDocument.FormFields("Dropdown1").Result
If Valor = " " Then
MsgBox "Selecione o nome.",vbOKOnly, "Exemplo de Formulário com macro"
ActiveDocument.FormFields("Selecionar1").CheckBox.Value = False
ActiveDocument.FormFields("Selecionar2").CheckBox.Value = False
ActiveDocument.FormFields("Selecionar1").Enabled = False
ActiveDocument.FormFields("Selecionar2").Enabled = False
Else
If Valor = "Antônio" Then
ActiveDocument.FormFields("Selecionar1").CheckBox.Value = True
ActiveDocument.FormFields("Selecionar2").CheckBox.Value = False
ActiveDocument.FormFields("Selecionar1").Enabled = False
ActiveDocument.FormFields("Selecionar2").Enabled = False
Else
If Valor = "Maria" Then
ActiveDocument.FormFields("Selecionar1").CheckBox.Value = False
ActiveDocument.FormFields("Selecionar2").CheckBox.Value = True
ActiveDocument.FormFields("Selecionar1").Enabled = False
ActiveDocument.FormFields("Selecionar2").Enabled = False
End If
End If
End If
End Sub