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

Política de Privacidade  |   © 2013 Tutoriais Word - Todos os direitos reservados