Preencher formulário da web via código VBA Excel

MR
Marcos Rieper

Especialista em Excel

14 de março de 2015 Atualizado 08 de julho de 2026 4 min de leitura
Preencher página Internet com VBA

Objetivo: Demonstrar como preencher um formulário da web via código VBA Excel.

Preencher página Internet com VBA

Este artigo foi criado para auxiliar o nosso amigo Djanes, que participa do nosso Fórum Guia do Excel, veja a dúvida dele em: http://guiadoexcel.com.br/forum/viewtopic.php?f=14&t=19.

A dúvida consiste em a partir de uma lista de dados com UF e cidade, buscar no site dos correios os dados de faixa de CEP, veja também como fazer rastreamento correio no Excel.

Para esta ação tive ajuda do  amigo Jardel Novaes para a criação do código que está comentado logo abaixo.

Este código fonte teve também uma parte baseada nas explicações do artigo do nosso amigo Tomaz Vasquez http://www.tomasvasquez.com.br/blog/microsoft-office/vba-interagindo-com-o-objeto-internet-explorer, ao qual também agradeço.

Para utilizar a planilha de exemplo de como interagir com controles da internet com VBA,  basta clicar no botão Processar e aguardar a finalização do preenchimento da planilha com as faixas de CEP.

Preencher página Internet com VBA 2

O código irá abrir o internet explorer e realizar as consultas preenchendo os dados da planilha.

Preencher página Internet com VBA 3

Sem mais delongas, o código fonte segue abaixo  totalmente comentado e ao final do artigo um link para você realizar o download da planilha no exemplo.

Aproveito a oportunidade para convidá-lo a participar do nosso fórum ajudando nas dúvidas dos colegas e postando suas próprias dúvidas: Fórum Guia do Excel.

'Inclui referência ao Microsoft Internet Controls
Sub lReferenciaIE()
    Dim ObRef
    On Error Resume Next

    ThisWorkbook.VBProject.References.AddFromGuid "{EAB22AC0-30C1-11CF-A7EB-0000C05BAE0B}", 1, 1
End Sub

Sub lsPesquisarCEPFaixa()
    'Inclui a referência se não houver
    lReferenciaIE
    
    Dim IE                  As InternetExplorer
    Dim lCidade             As String
    Dim lUF                 As String
    Dim lUltimaLinhaAtiva   As Long
    Dim lContador           As Long
    
    'Identifica a última célula ativa da lista
    lUltimaLinhaAtiva = Worksheets("Plan1").Cells(Worksheets("Plan1").Rows.Count, 1).End(xlUp).Row
    
    'Cria um objeto Internet Explorer
    Set IE = New InternetExplorer
        
    'Torna o objeto visível
    IE.Visible = True

    'Faz um loop por todas as linhas da planilha
    For lContador = 2 To lUltimaLinhaAtiva
        'Navega ao site dos correios
        IE.Navigate "http://www.buscacep.correios.com.br/servicos/dnec/menuAction.do?Metodo=menuFaixaCep"
        
        'Identifica se a página já foi totalmente carregada
        While IE.ReadyState <> READYSTATE_COMPLETE
        Wend
        
        'Como a página possui JavaScript que cria os objetos que são preenchidos após a carga completa, é necessário
        'aguardar um tempo, coloquei 3 segundos, alterar conforme a necessidade.
        'Caso não tenha javascript na criação dos objetos da página comentar esta parte do código, pois será bem
        'mais rápida a execução.
        sng = Timer
        Do While sng + 3 > Timer
        Loop
        
        'Carrega os dados de cidade e UF que serão preenchidos na página
        lCidade = Range("B" & lContador).Value
        lUF = Range("A" & lContador).Value
        
        'Carrega os dados de cidade e UF na página e submente os dados do formulário
        IE.Document.all("Localidade").innertext = lCidade
        IE.Document.all("UF").Value = lUF
        IE.Document.forms("Geral").submit
       
        'Identifica se a página já foi totalmente carregada
        While IE.ReadyState <> READYSTATE_COMPLETE
        Wend

        'Como a página possui JavaScript que cria os objetos que são preenchidos após a carga completa, é necessário
        'aguardar um tempo, coloquei 3 segundos, alterar conforme a necessidade.
        'Caso não tenha javascript na criação dos objetos da página comentar esta parte do código, pois será bem
        'mais rápida a execução.
        sng = Timer
        Do While sng + 3 > Timer
        Loop
       
        'Faz um loop pelos objetos do tipo table na página e procura pelo campo Faixa(s) de CEP: preenchido.
        'Em seguida busca pela segunda coluna da linha de faixa de CEP e armazena esta informação diretamente na coluna C da linha
        'da planilha
        For Each i In IE.Document.body.getElementsByTagName("table")
            If InStr(i.innertext, "Faixa(s) de CEP:") > 0 Then
                For Each l In i.getElementsByTagName("tr")
                    If InStr(l.innertext, lCidade) Then
                        Range("C" & lContador).Value = l.getElementsByTagName("td")(1).innertext
                    End If
                Next l
            End If
        Next i
    Next lContador
    
    MsgBox "Concluído!"
End Sub

Veja neste artigo como copiar os procedimentos acima e incluir na sua pasta pessoal de Macros neste artigo: http://guiadoexcel.com.br/habilitando-a-guia-desenvolvedor-e-copiando-procedimentos-vba-sub-da-internet

Download — baixe aqui: Preencher formulário com dados da WEB

Preencha seus dados para receber o link de download no seu e-mail.

Abraço

Marcos Rieper

Principais recursos

Confira o que este material oferece para você.

Organização por data e etapas
Classificação automática
Ranking e destaques
Fluxos e etapas automáticas
Dashboard com indicadores
Atualização automática por fórmulas

Perguntas frequentes

O material é realmente gratuito?

Sim. O acesso é gratuito e não exige cadastro.

Preciso ter o Excel instalado?

Recomendamos o Excel 2013 ou superior para todos os recursos.

Como faço para receber atualizações?

As atualizações são automáticas dentro da própria planilha.

Funciona no Excel do Mac?

Sim, funciona no Excel para Windows e para Mac.

Funciona no celular?

É possível visualizar no app do Excel; a edição completa é no computador.

Planilhas relacionadas

Planilha de Fluxo de Caixa

Planilha de Fluxo de Caixa

(1.327)

R$ 89,90

Controle de Estoque

Controle de Estoque

(962)

R$ 69,90

Planilha Financeira Empresarial

Planilha Financeira Empresarial

(1.254)

R$ 79,90

Dashboard Financeiro no Excel

Dashboard Financeiro no Excel

(689)

R$ 49,90

Continue lendo

Curso Excel Master — Básico ao Avançado, VBA, PowerPoint e mais

Receba conteúdos e novidades direto no seu e-mail

Dicas, tutoriais, planilhas gratuitas e muito mais.

Não enviamos spam. Cancele quando quiser.

Download imediato

Acesso na hora após a compra

Compra 100% segura

Seus dados protegidos com SSL

Acesso vitalício

Use para sempre, sem mensalidades

Suporte via WhatsApp

Atendimento rápido e humanizado