Lomeutec - Tutoriais e Informação
ESTE BLOG NÃO É MAIS ATUALIZADO. SUAS ATIVIDADES FORAM DEFINITIVAMENTE ENCERRADAS EM 2020.

Drop Down, VBA e auto preenchimento de campos no Word

Vou mostrar um exemplo no Microsoft Word 2003 e 2010 para fazer com que ao selecionarmos um item em um drop down seja feito o auto preenchimento de alguns campos. Não será usado nenhum arquivo externo como base de dados, tudo será feito no próprio Word através do uso de VBA. Essa é uma publicação complementar sobre "Usando combobox no Word 2003 e 2010" e "Recursos para criação de formulários no Word". Por isso se sugir alguma dúvida sugiro que as veja primeiro.

Word

Word 2003:

Abra um documento novo do Word, depois crie uma tabela e campos como mostrado na imagem abaixo:


Habilite também a barra de ferramentas de formulários. Para isso vá ao menu "Exibir", "Barra de ferramentas" e clique em "Formulários". Depois coloque na frente de "Veículo:" um campo drop down - Campo de formulário suspenso - enquanto que na frente de "Marca:", "Motor:", "Cor" e "Portas:" coloque campos de formulário de texto. Dê dois cliques rápidos no campo drop down que você inseriu na frente de "Veículo:" para abrir as suas opções. Adicione "Uno Mille", "C4 Pallas" e "Voyage". Confirme.


Também dê dois cliques em cada campo de formulário de texto para abrir as suas opções e alterar o seu "Indicador". Por exemplo, no campo à frente de "Marca:" altere o indicador para "txtmarca", na frente de "Motor:" altere o indicador do campo de formulário de texto para "txtmotor", na frente de "Cor:" altere o indicador do campo de formulário de texto para "txtcor" e na frente de "Portas:" altere o indicador do campo de formulário de texto para "txtportas".


Agora vá ao menu "Ferramentas", em "Macro" clique em "Editor do Visual Basic". Na janela que abrir clique em "ThisDocument" do lado esquerdo para que seja mostrado à direita o local que você deverá colar o código abaixo. Repare que o código tem comentários que estão em verde para explicar como ele funciona.

Option Explicit

Sub autopreenchimento()
   
    'Se escolher "Uno Mille" no Dropdown então
    If ActiveDocument.FormFields("Dropdown1").Result = "Uno Mille" Then
   
        'Faz o preenchimento dos campos
        ActiveDocument.FormFields("txtmarca").Result = "FIAT"
        ActiveDocument.FormFields("txtmotor").Result = "Álcool"
        ActiveDocument.FormFields("txtcor").Result = "Branco"
        ActiveDocument.FormFields("txtportas").Result = "2"
               
    Else 'Se a escolha não foi "Uno Mille" então
   
           'Se a escolha foi "C4 Pallas" no Dropdown então
           If ActiveDocument.FormFields("Dropdown1").Result = "C4 Pallas" Then

               'Faz o preenchimento dos campos       
               ActiveDocument.FormFields("txtmarca").Result = "Citroën"
               ActiveDocument.FormFields("txtmotor").Result = "Gasolina"
               ActiveDocument.FormFields("txtcor").Result = "Preto"
               ActiveDocument.FormFields("txtportas").Result = "4"
       
         Else 'Se a escolha não foi "Uno Mille" e nem "C4 Pallas" então

                'Faz o preenchimento dos campos
                ActiveDocument.FormFields("txtmarca").Result = "Volkswagen"
                ActiveDocument.FormFields("txtmotor").Result = "Flex"
                ActiveDocument.FormFields("txtcor").Result = "Prata"
                ActiveDocument.FormFields("txtportas").Result = "4"

        End If
    End If

End Sub

Veja como fica no editor:


Salve, feche o "Editor do Visual Basic" Clicando no ícone do Word - Primeiro ícone na barra de ferramentas - e abra as opções do campo de formulário de texto à frente de "Marca". Você deverá selecionar o nome da subrotina em "Saída". No nosso caso o nome da subrotina é "autopreenchimento".


Faça a mesma coisa com os demais campos de formulários de texto e também com o campo drop down. Feito isso você já pode trancar o formulário clicando no ícone de cadeado - Proteger formulário - o último ícone da barra de formulários. Salve que já está pronto.


Só tem um problema, depois de selecionar no drop down o item que você quer, os demais campos só serão atualizados se você clicar em um campo de formulário de texto, nada que incomode muito. Se não está funcionando pode ser que a segurança de macro do Word esteja bloqueando a função. Para resolver isso vá ao menu "Ferramentas" e clique em "Opções". Na janela que se abrir clique na aba "Segurança" e nessa aba clique no botão "Segurança de macro". Ao clicar nesse botão será aberta outra janela com mais duas abas. Na aba "Nível de segurança" selecione "Nível médio" e confirme. Assim quando for abrir o documento novamente, será perguntado se deseja habilitar as macros. Opte por habilitar.

Vamos ver agora um outro exemplo, dessa vez faremos um campo drop down preencher outro campo drop down dependendo do que for selecionado no primeiro.

Abra um novo documento do Word e coloque dois campos drop down. No primeiro insira as opções: Frutas, Legumes e Carnes. Em indicador escreva "Selecionado".

 

Nas opções do segundo drop down digite "Resultado" no campo "Indicador".


Agora abra o "Editor do Visual Basic" e cole o seguinte código em "ThisDocument". Veja que este código também está comentado para facilitar o entendimento.

Option Explicit

Sub Combina_DropDown()

 ' Declaração de variáveis do tipo texto como matriz
 Dim Frutas(3) As String
 Dim Legumes(3) As String
 Dim Carnes(3) As String

 ' Declaração de variáveis do tipo numérico
 Dim i As Integer
 Dim contador

    ' Variáveis sendo armazenadas em suas matrizes
    Frutas(0) = "Maçã"
    Frutas(1) = "Pêssego"
    Frutas(2) = "Pera"
    Frutas(3) = "Abacaxi"
   
    Legumes(0) = "Berinjela"
    Legumes(1) = "Nabo"
    Legumes(2) = "Cenoura"
    Legumes(3) = "Beterraba"
   
    Carnes(0) = "Bife"
    Carnes(1) = "Alcatra"
    Carnes(2) = "Picanha"
    Carnes(3) = "Pernil"
  
' Começa a verificar as condições dependendo do que for escolhido
Select Case ActiveDocument.FormFields("Selecionado").DropDown.Value

    ' Caso seja escolhido Frutas então preencha o segundo Drop Down
    Case 1
        ActiveDocument.FormFields("Resultado").DropDown.ListEntries.Clear
            For contador = 1 To 4
                ActiveDocument.FormFields("Resultado").DropDown.ListEntries.Add Name:=Frutas(i)
                i = i + 1
            Next
        ActiveDocument.FormFields("Resultado").DropDown.Value = 1
       
    ' Caso seja escolhido Legumes então preencha o segundo Drop Down
    Case 2
        ActiveDocument.FormFields("Resultado").DropDown.ListEntries.Clear
            For contador = 1 To 4
                ActiveDocument.FormFields("Resultado").DropDown.ListEntries.Add Name:=Legumes(i)
                i = i + 1
            Next
        ActiveDocument.FormFields("Resultado").DropDown.Value = 1
       
    ' Caso seja escolhido Carnes então preencha o segundo Drop Down
    Case 3
        ActiveDocument.FormFields("Resultado").DropDown.ListEntries.Clear
            For contador = 1 To 4
                ActiveDocument.FormFields("Resultado").DropDown.ListEntries.Add Name:=Carnes(i)
                i = i + 1
            Next
        ActiveDocument.FormFields("Resultado").DropDown.Value = 1
End Select

End Sub

Feito isso feche o "Editor do Visual Basic" para voltar ao documento do Word. Abra as opções do primeiro Drop Down, em "Saída:" selecione "Combina_DropDown" e dê "OK".


Agora tranque o formulário, salve e faça o teste. Tudo já deve estar funcionado corretamente agora.


E isso encerra a explicação sobre o Word 2003.

_______________________________________

Word 2010:

Para fazer mesmo procedimento no Word 2010, leia toda a publicação. Serão mostradas somente as diferenças da interface que poderão gerar dúvidas. Os códigos usados são os mesmos.

Para habilitar os recursos que você irá precisar, abra o Word, vá ao menu "Arquivo" e clique em "opções".



Será aberta outra janela onde você deverá clicar em "Personalizar Faixa de Opções" e marcar a checkbox "Desenvolvedor".


Feito isso ficará diponível a guia "Desenvolvedor" que possui as ferramentas de que precisamos. Os recursos usados na criação de formulários estão em "Controles". Crie os dois campos drop down (Caixa de Combinação - Controle de Formulário).

Agora será necessário ler o que foi descrito acima na explicação sobre o Word 2003. Isso porque os procedimentos não diferem muito, então não ví necessidade de repetir toda a explicação. A diferença está na hora de trancar o documento. O Word 2010 não possui o ícone de cadeado nas ferramentas de formulários como no Word 2003. Para proteger o documento clique em "Restringir Edição" na aba "Desenvolvedor". Marque a checkbox "Permitir apenas este tipo de edição no documento" e seleciona abaixo "Preenchendo formulários". Clique em "Sim, Aplicar Proteção" e será solicidado que você coloque uma senha, essa senha é opcional bastando confirmar caso não queira nenhuma.


Outra diferença está na hora de salvar. Por possuir comandos em VBA, o documento no Word 2010 deve ser salvo como "Documento Habilitado para Macro do Word" em "Salvar como". O Resultado final é visto abaixo.


Se quiser baixar os exemplos desta publicação clique aqui e clique aqui.
Senha para descompactar: lomeutec

Por enquanto é só. :-)