Do Básico ao Avançado
Home | Tutoriais | Artigos |Contato

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:


Tabela


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.


Formulários Herdados


Em Formulários Herdados clique em Caixa de Combinação.


Caixa de Combinação


Veja como ficará.


Caixa de Combinação


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.


Formulários Herdados


Em Formulários Herdados clique em Caixa de Seleção.


Caixa de Seleção


Veja como ficará:


Caixa de Seleção


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.


Formulários Herdados


Em Formulários Herdados clique em Caixa de Seleção.


Caixa de Seleção


Veja como ficará:


Caixa de Seleção


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.


Visual Basic


No Editor do Visual Basic, na janela Projeto – Project clique em ThisDocument.


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:


Janela de Código


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.


Propriedades


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:


Opções do campo de formulário suspenso


Agora vamos proteger nosso formulário para que possamos vê-lo em funcionamento.


Na Guia Desenvolvedor, no Grupo Proteger clique em Proteger Documento.


Proteger Documento


Clique em Restringir Formatação e Edição


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:


Preenchendo formulários


Digite uma senha para aplicar a proteção.


Aplicar 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:


Formulário


Formulário com macro


Formulário


Formulário com macro no word


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.


Formulário


Caixa de Mensagem


Formulário com macro


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:


Opções do Word


Na janela de Opções do Word clique em Central de Confiabilidade:


Central de Confiabilidade


Clique em Configurações da Central de Confiabilidade...


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.


Configurações de Macro




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








Conteúdo Correspondente:




eBook Word 2010 VBA

© 2013 Tutoriais Word - Todos os direitos reservados