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

Objetivo: Demonstrar como preencher um formulário da web via código VBA Excel.
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.
O código irá abrir o internet explorer e realizar as consultas preenchendo os dados da planilha.
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
Abraço
Marcos Rieper
Principais recursos
Confira o que este material oferece para você.
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
R$ 89,90
Controle de Estoque
R$ 69,90
Planilha Financeira Empresarial
R$ 79,90
Dashboard Financeiro no Excel
R$ 49,90







