Você está na página 1de 12

17/12/2017 Preencher formulário da web via código VBA Excel

LOJA GUIADOEXCEL ESCOLA(MOODLE) WEBPORTUGOL CONSULTORIA DOWNLOADS FORUM

BÁSICO AO AVANÇADO VBA LOJA GUIA DO EXCEL MOODLE CONSULTORIA FÓRUM

 Digite sua busca

PREENCHER FORMULÁRIO DA WEB VIA CÓDIGO


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

BUSCA

Digite sua busca


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

CATEGORIAS

Artigos e Planilhas de
Leitores

Avançado

Básico

Excel

Featured
Este artigo foi criado para auxiliar o nosso amigo Djanes, que participa do nosso Fórum Guia do
Geral
Excel, veja a dúvida dele em: http://guiadoexcel.com.br/forum/viewtopic.php?f=14&t=19.
Grá co
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. Grá cos

Para esta ação tive ajuda do  amigo Jardel Novaes para a criação do código que está comentado Intermediário
logo abaixo.
Jogos
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-o ce/vba-interagindo-com-o- Loja
objeto-internet-explorer, ao qual também agradeço.
Nível

planilhas

http://www.guiadoexcel.com.br/preencher-formulario-da-web-via-codigo-vba-excel/ 1/12
17/12/2017 Preencher formulário da web via código VBA Excel
Para utilizar a planilha de exemplo de como interagir com controles da internet com VBA,  basta Planilhas
clicar no botão Processar e aguardar a nalização do preenchimento da planilha com as faixas de
CEP. planilhas prontas

Sem categoria

VBA

MAIS POPULARES
Planilha de consulta de
CNPJ automática – 1
ano de acesso

Planilha de log de
usuários Excel e VBA

Como calcular
O código irá abrir o internet explorer e realizar as consultas preenchendo os dados da planilha.
combinação no Excel –
Função Combin

Solver e VBA no Excel –


Automatizar a solução
de problemas

Contar, Somar e Média


pela cor da célula no
Excel

ÚLTIMOS COMENTÁRIOS

JAMES FREIRE em Mapa de


Estoque Excel Logística
WMS

ANDREY SARTORI em
Solver e VBA no Excel –
Automatizar a solução de
Sem mais delongas, o código fonte segue abaixo  totalmente comentado e ao nal do artigo um problemas
link para você realizar o download da planilha no exemplo.
Gabriel em GUT – Técnica
Aproveito a oportunidade para convidá-lo a participar do nosso fórum ajudando nas dúvidas dos para de nir prioridades em
colegas e postando suas próprias dúvidas: Fórum Guia do Excel. tomadas de decisões –
Excel

william lages em Fórum de


'Inclui referência ao Microsoft Internet Controls
Excel e VBA – Guia do Excel
Sub lReferenciaIE()
Dim ObRef william lages em Fórum de
On Error Resume Next Excel e VBA – Guia do Excel

ThisWorkbook.VBProject.References.AddFromGuid "{EAB22AC0-30C1-11CF-
A7EB-0000C05BAE0B}", 1, 1
End Sub TAGS
Soluções em Excel
Sub lsPesquisarCEPFaixa()
'Inclui a referência se não houver Desenvolvimento de soluções
lReferenciaIE
Consultoria Excel

http://www.guiadoexcel.com.br/preencher-formulario-da-web-via-codigo-vba-excel/ 2/12
17/12/2017 Preencher formulário da web via código VBA Excel
Dim IE As InternetExplorer Converter para Word
Dim lCidade As String
Converter PDF
Dim lUF As String
 Dim lUltimaLinhaAtiva As Long Converter dados 
Dim lContador As Long Recrutamento e seleção

Gantt Excel NF-e


'Identifica a última célula ativa da lista
lUltimaLinhaAtiva = Consulta a dados externos
Worksheets("Plan1").Cells(Worksheets("Plan1").Rows.Count, 1).End(xlUp).Row Consultoria VBA

PDF para Excel


'Cria um objeto Internet Explorer
Set IE = New InternetExplorer Grá co de Gantt XML

Cursos Cursos Guia do Excel


'Torna o objeto visível
IE.Visible = True Guia do Excel

Grá cos avançados


'Faz um loop por todas as linhas da planilha
Cadastro Excel
For lContador = 2 To lUltimaLinhaAtiva
'Navega ao site dos correios Planilha de fornecedores Excel
IE.Navigate Administração industrial
"http://www.buscacep.correios.com.br/servicos/dnec/menuAction.do?
Congresso nacional de Excel online
Metodo=menuFaixaCep"
Especialistas Excel
'Identifica se a página já foi totalmente carregada
Dicas pro ssionais
While IE.ReadyState <> READYSTATE_COMPLETE
Wend Funções avançadas Power BI

Análise de dados
'Como a página possui JavaScript que cria os objetos que são
Cenários em Excel
preenchidos após a carga completa, é necessário
'aguardar um tempo, coloquei 3 segundos, alterar conforme a Gerenciador de cenários
necessidade.
Estoque Teste de hipóteses
'Caso não tenha javascript na criação dos objetos da página
comentar esta parte do código, pois será bem Função própria Validar email

'mais rápida a execução. Planilha Impeachment


sng = Timer
Cont.ses Report pro ssional
Do While sng + 3 > Timer
Loop Copiar e colar dados no Excel

Dicas Excel
'Carrega os dados de cidade e UF que serão preenchidos na página
Filtro de dados no Excel
lCidade = Range("B" & lContador).Value
lUF = Range("A" & lContador).Value Tutorial VBA

Habilitar guia desenvolvedor


'Carrega os dados de cidade e UF na página e submente os dados do
formulário Treinamento

IE.Document.all("Localidade").innertext = lCidade Função Excel VBA


IE.Document.all("UF").Value = lUF
Funções VBA Excel
IE.Document.forms("Geral").submit
Chá de bebê
'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

http://www.guiadoexcel.com.br/preencher-formulario-da-web-via-codigo-vba-excel/ 3/12
17/12/2017 Preencher formulário da web via código VBA Excel
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 “Preencher formulário com dados da WEB”

Abraço

Marcos Rieper

Artigos Relacionados

[Excel] Planilha Lo… [Excel] Solver e VB… [Excel] Contar, So…

Planilha de log de usuários Solver e VBA no Excel – Contar, Somar e Média pela cor
Excel e VBA Automatizar a solução de da célula no Excel
problemas
 Leia mais  Leia mais
 Leia mais

26 Comentários

Guilherme Gonçalinho disse: Responder


23 de Março de 2015 às 22:44

Marcos, boa noite!


Muito interessante o macro desenvolvido.
Não sou bom conhecedor do VBA e estou tentando fazer algo “semelhante”
com uma página da WEB, porém estou precisando de uma ajuda em como
extrair os dados da WEB e trazê-los para o excel.
É uma tabela pequena e se conseguisse trazê-la inteira para a minha planilha
seria bem interessante.
Têm algum jeito de lhe enviar minha planilha para dar uma olhada e se
possível me ajudar?

Obrigado desde já.

http://www.guiadoexcel.com.br/preencher-formulario-da-web-via-codigo-vba-excel/ 4/12
17/12/2017 Preencher formulário da web via código VBA Excel
Guilherme

Marcos Rieper disse: Responder


24 de Março de 2015 às 11:47

Bom dia Guilherme,

Por favor poste sua dúvida em nosso fórum.


http://www.guiadoexcel.com.br/forum
Abraço

Marcos Rieper

Ronei disse: Responder


28 de Março de 2015 às 23:22

Olá Marcos
Primeiramente muito boa a macro desenvolvida, parabéns pelo trabalho.

Não conheço muito de VBA, porem consegui fazer algumas modi cações
utilizando seu código para fazer login em um site e ir até uma página
especí ca que possui uma tabela, nesta tabela gostaria de retirar alguns
dados no mesmo estilo do CEP. Tentei de muitas maneiras, mas não
consegui retirar nenhuma informação dela.
Será que vc pode me dar uma luz?
abaixo link da imagem da tabela do site
http://imageshack.com/a/img908/6909/D22sQv.png
Obs. tentei postar no fórum, mas meu cadastro ainda não foi liberado

Agradeço antecipadamente
Att
Ronei

Marcos Rieper disse: Responder


16 de Abril de 2015 às 17:21

Boa tarde Ronei,


Obrigado pelo seu contato.

O seu cadastro foi aprovado no fórum em 31/03/2015, por favor


nos envie a planilha com a sua dúvida, faremos o possível para
auxiliar.

Abraço
Marcos Rieper

Jordana disse: Responder


9 de julho de 2015 às 12:45

Boa tarde, tem como fazer o contrário? Alterar dados de sistema


con gurando a VBA? Eu fazia isso do hyperion para o mainframe, mas não
sei onde coloquei a planilha

Marcos Rieper disse: Responder


17 de julho de 2015 às 13:34

Boa tarde Jordana,


Você precisa retornar os dados da internet na sua planilha?

http://www.guiadoexcel.com.br/preencher-formulario-da-web-via-codigo-vba-excel/ 5/12
17/12/2017 Preencher formulário da web via código VBA Excel
Neste caso você pode ver neste artigo como realizar a tarefa:
http://guiadoexcel.com.br/obter-dados-externos-da-web-excel-
2007-ou-2010, entre outros exemplos no site.

Pesquise no site pela palavra web.


Abraço
Marcos Rieper

Anderson disse: Responder


20 de julho de 2015 às 10:30

Parabéns pelo artigo, muito bom!


Também sou iniciante com VBA , no entanto consegui fazer funcionar para
um site da CELESC
(http://200.247.127.47:8080/AgenciaWeb/autenticar/loginCliente.do). Estou
desenvolvendo para fazer login , buscar documento e salvar. Ocorre que o
login ocorre em duas páginas, na primeira identi co minha unidade
consumidora, que após um “submit”, abre outra página. E a dúvida é: como
navegar nesta segunda página se tenho a referência apenas da primeira
página?
Grato e abs.

Herbert Pereira disse: Responder


26 de julho de 2015 às 06:35

Bom dia Marcos!


Excelente sua planilha, Parabéns!!!

Estou adptando para fazer uma busca e com di culdade em alterar alguns
campos, peço sua ajuda.

Preciso acessar este site:


http://www.sefaz.ba.gov.br/scripts/cadastro/cadastroBa/consultaBa.asp

Informar o CNPJ

E do resultado, copiar a linha abaixo do “Atividade Econômica Principal:”


E colar na célula ao lado do CNPJ calculado.

Alterando o código, consegui até a parte que preenche o campo CNPJ.

Não consegui ativar a consultar, clicar no botão


Nesta parte, o objeto CGC equivale o campo CNPJ no site:

IE.Document.all(“CGC”).innertext = lCNPJ

Parei nesta parte abaixo, não sei qual parâmetro informar:

IE.Document.forms(“B1”).submit
Muito Obrigado!

Mozer disse: Responder


3 de dezembro de 2015 às 22:07

Boa noite.
Estou com uma duvida se é possível e se sim, como fazer.
Tenho uma planilha com notas de alunos, e tenho que postar as notas no
site da escola, teria alguma maneira de automatizar isto, fazendo ele já
enviar as notas da planilha direto sem precisar eu preencher o formulário do
site.
Desde já
Agradeço.

http://www.guiadoexcel.com.br/preencher-formulario-da-web-via-codigo-vba-excel/ 6/12
17/12/2017 Preencher formulário da web via código VBA Excel

Marcos Rieper disse: Responder


6 de dezembro de 2015 às 14:38

Boa tarde Mozer,


Pode ser possível, só temos que veri car a página em que devem
ser preenchidos estes valores.

Se tiver orçamento, podemos criar uma solução para este


problema. Entre em contato pelo
consultoria@guiadoexcel.com.br.

At.
Marcos Rieper

typebr disse: Responder


10 de agosto de 2016 às 14:56

Olá Marcos,
eu z o download da sua planilha para busca de cep na web, percebi que o
caminho do site dos Correios alterou para
http://www.buscacep.correios.com.br/sistemas/buscacep/resultadoBuscaFaixaCEP.cfm
ajustei o código, porém não está carregando o valor do range para o Excel.
Você tem algum ideia o que está errado?

Marcos Rieper disse: Responder


22 de agosto de 2016 às 17:10

Olá typebr, vou ter que veri car com calma o problema, assim que
possível eu lhe retorno.

Eldimar disse: Responder


18 de setembro de 2016 às 01:46

Olá Typebr, da mesma forma que você também z a alteração do


caminho e não carregou, porém tem mais uma alteração a ser
feita.
For Each i In IE.Document.body.getElementsByTagName(“table”)
If InStr(i.innertext, “Faixa 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

Eldimar disse: Responder


5 de setembro de 2016 às 00:47

Marcos, preciso também dessas faixas de CEP para colocar em minha


planilha, o caminho dos correios foi alterado, mesmo substituindo pelo novo,
o que fez funcionar na pagina dos correios, não registrou a faixa de CEP na
coluna C, poderia me informar o que pode ter acontecido.

Marcos Rieper disse: Responder


8 de setembro de 2016 às 18:18

Olá Edimar,

Vamos ter que rever as planilhas que envolvem serviços dos


correios, a empresa alterou muitos webservices e páginas que
utilizávamos em nossos modelos.

http://www.guiadoexcel.com.br/preencher-formulario-da-web-via-codigo-vba-excel/ 7/12
17/12/2017 Preencher formulário da web via código VBA Excel

Eldimar disse: Responder


18 de setembro de 2016 às 01:49

Olá Marcos, consegui achar o erro precisa fazer uma


outra alteração, além do caminho.
IE.Navigate
“http://www.buscacep.correios.com.br/sistemas/buscacep/buscaFaixaCep.cfm”

For Each i In
IE.Document.body.getElementsByTagName(“table”)
If InStr(i.innertext, “Faixa 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

Marcos Rieper disse: Responder


7 de outubro de 2016 às 13:55

Eldimar, muito obrigado.

Resolveu o problema alterar o endereço,


podem baixar novamente a planilha já
corrigida, graças ao nosso amigo acima =D.
Abraço
Marcos Rieper

luiz felipe disse: Responder


29 de setembro de 2016 às 15:17

Amigos boa tarde, quei com um duvida!


no trecho:

‘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

localidade e uf são nomes do input no site dos correios? se sim, caso eu


queira preencher em outro site eu devo trocar pelo nome do imput que quero
preencher como esta no site em questão?

Marcos Rieper disse: Responder


7 de outubro de 2016 às 15:32

Olá,

Sim, exatamente.

Abraço
Marcos Rieper

Nuno disse: Responder


21 de outubro de 2016 às 06:20

Bom dia,
Estou a tentar reproduzir o código para um site apenas com a inserção de
uma variável.
Estou com os seguintes problemas:
1-O endereço URL onde se encontra o form para preencher é o mesmo que
retorna o resultado, e pelo código HTML do site o resultado que pretendo
para o Excel está dentro de uma DIV .

http://www.guiadoexcel.com.br/preencher-formulario-da-web-via-codigo-vba-excel/ 8/12
17/12/2017 Preencher formulário da web via código VBA Excel
Sub nome_macro()
lReferenciaIE

Dim IE As Object
Dim objElement As Object
Dim objCollection As Object
Dim lmatricula As String
Dim lUltimaLinhaAtiva As Long
Dim lContador As Long
lUltimaLinhaAtiva =
Worksheets(“analise”).Cells(Worksheets(“analise”).Rows.Count,
1).End(xlUp).Row
Set IE = CreateObject(“InternetExplorer.Application”)
IE.Visible = True
For lContador = 2 To lUltimaLinhaAtiva
IE.Navigate “http://www.imt-ip.pt/MatriculasCanceladas/matriculas.asp”
While IE.ReadyState READYSTATE_COMPLETE
Wend
sng = Timer
Do While sng + 1 > Timer
Loop
lmatricula = Range(“A” & lContador).Value
IE.Document.all(“matricula”).innertext = lmatricula
IE.Document.forms(“Pesquisa”).submit
While IE.ReadyState READYSTATE_COMPLETE
Wend
sng = Timer
Do While sng + 3 > Timer
Loop
For Each i In IE.Document.body.getElementsByTagName(“div”)
If InStr(i.innertext, “foi”) > 0 Then
For Each l In i.getElementsByTagName(“u”)
If InStr(l.innertext, lmatricula) Then
Range(“G” & lContador).Value = l.getElementsByTagName(“b”)(1).innertext
End If
Next l
End If
Next i
Next lContador

MsgBox “Concluído!”
End Sub

Antonio Cesar disse: Responder


8 de novembro de 2016 às 17:54

Boa Tarde

Fazendo uma macro para localizar o endereço de um CEP e usei como base
seu código, porem não entendi como eu retira as informações da tabela que
o site retorna, você poderia da uma ajuda?

Marcos Rieper disse: Responder


10 de dezembro de 2016 às 09:55

Olá Antonio,
Este tipo de código varia totalmente de um site para o outro.

Basicamente ele instancia um navegador IE, identi ca os campos


que devem ser preenchidos, preenche, e depois no retorno lê os
campos, também identi cando quais são, e retorna os mesmos
para a planilha.
Abraço
Marcos Rieper

http://www.guiadoexcel.com.br/preencher-formulario-da-web-via-codigo-vba-excel/ 9/12
17/12/2017 Preencher formulário da web via código VBA Excel

Martin Morães disse: Responder


21 de junho de 2017 às 18:33

Buenas Marcos
Parabéns pelo material, muito esclarecedor.

Tchê, tem como fazer em vba preencher um outro formulário em vba?


Desde já agradeço.

Marcos Rieper disse: Responder


22 de julho de 2017 às 13:14

Olá Martin,

Sim, mas para cada formulário é necessário que haja uma


programação especí ca.

Adriana Takemori disse: Responder


3 de julho de 2017 às 16:44

Boa tarde!
Primeiramente, parabéns e muito obrigada por compartilhar!
Estou adaptando para minhas necessidades, mas preciso inicialmente
informar meu usuário e senha antes de acessar a página da qual vou extrair
as informações.
Poderia me ajudar dando alguma dica ou me dizendo se já algo parecido
aqui no guia?
Obrigada!

Marcos Rieper disse: Responder


22 de julho de 2017 às 13:52

Olá Adriana,
Não temos nada assim, porque cada consulta web é diferente.
Necessário desenvolver especí co para cada caso.

Bruno disse: Responder


25 de julho de 2017 às 18:36

Marcos, boa noite!

Muito interessante seu trabalho parabens.


Trabelhei muito tempo com VBA e Macros e agora estou enferrujado e
mesmo olhando seus exemplos to com di culdade de adpatar ve se pode
me dar uma luz (PS: acabei de fazer inscricao no site)
Preciso consultar uma pagina na web para pesquisar aproximadamente
3.000 registros que estão numa planilha excel e retornar (copiar e colar) 2
campos de cada 1 das pesquisas realizadas
Tem algo já mais parecido com isso?

Vai me ajudar muito. Obrigado desde já.

Bruno

Marcos Rieper disse: Responder


8 de setembro de 2017 às 09:49

Bom dia,

http://www.guiadoexcel.com.br/preencher-formulario-da-web-via-codigo-vba-excel/ 10/12
17/12/2017 Preencher formulário da web via código VBA Excel
Sim, basicamente a lógica é a mesma deste artigo que você
comentou, mas caso você tenha a lista diretamente você
consegue copiar diretamente pelas ferramentas de conexão do
Excel.

Bruno Lucchetti disse: Responder


26 de julho de 2017 às 16:36

Boa tarde Marcos eu escrevi aqui ontem e não sei se foi ou não, vou postar
de novo aqui então
Primeiramente parabéns pelo artigo, muito bom!
Trabalhei um tempo com macros e VBA , e estou meio enferrujado pois faz
uns 5-6 que não mexo mais com isso veja se pode me ajudar:
Preciso consultar cerca de 3.000 leis no site da Câmara Municipal de São
Paulo e a cada consulta (pelo numero da lei que esta tabelado em uma
coluna do excel) precisaria retornar e colar 2 campos de cada consulta ao
lado de cada numero na propria tabela.
O site serai http://cm332adm/scripts/wxis.exe/iah/?
IsisScript=iah/iah.xis&lang=P&base=legis
e nâo precisa de login e nem codigo de seguranca/anti-roboe etc
Creio não ser nada muito diferente e nem complicado em relação ao que ja
desenvolveu mas to com di culdade de adpatar, poderia me dar alguma luz
com algo parecido que já tenha feito?

Muito Obrigado e abs.


Bruno L

Marcos Rieper disse: Responder


8 de setembro de 2017 às 09:49

Bom dia,

Não está abrindo o seu link aqui, pode enviar novamente por
favor? Obrigado pelo seu comentário e contribuição.

Bruno disse: Responder


1 de setembro de 2017 às 14:11

Boa tarde Marcos,

Postei aqui faz um tempo o forum está desativado?


Abraço
Bruno

Marcos Rieper disse: Responder


13 de setembro de 2017 às 08:56

Bom dia,
Eu estava com um trabalho acumulado, por isso que não havia
sido postado, desculpe. Obrigado pelo seu comentário e
colaboração.

DEIXE UMA RESPOSTA


O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *

Comentário

http://www.guiadoexcel.com.br/preencher-formulario-da-web-via-codigo-vba-excel/ 11/12
17/12/2017 Preencher formulário da web via código VBA Excel

Nome * E-mail * Site

Publicar comentário

SOBRE NÓS SIGA-NOS

Guia do Excel é o seu canal de conhecimento


em Excel e VBA. Sinta-se á vontade para     
dividir o seu conhecimento enviando
também as suas matérias par ao site. 

http://www.guiadoexcel.com.br/preencher-formulario-da-web-via-codigo-vba-excel/ 12/12