Notifications
Clear all

macro correios importar para excel

3 Posts
2 Usuários
0 Reactions
1,394 Visualizações
(@toniano)
Posts: 0
New Member
Topic starter
 

Bom pessoal estou fazendo uma macro para colher informações em um link interno na minha empresa, porém o script e bem parecido com o site do correios então vou usar o site do correios como referencia para saber o que eu preciso.

A macro que esta nesse site http://guiadoexcel.com.br/preencher-for ... -vba-excel
é perfeita para o que eu preciso porém o site do correios foi atualizado tornando essa macro inviável por um único motivo, ela não retorna o resultado da consulta, eu precisava que ela retornasse essa informação, alguém pode me ajudar?

segue macro, só atualizei o link

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/sistemas/buscacep/buscaFaixaCep.cfm"

'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

 
Postado : 28/06/2016 1:48 am
(@basole)
Posts: 487
Reputable Member
 

Estes sites de busca de cep estão sempre se alterando..

Altere esta linha: If InStr(i.innertext, "Faixa(s) de CEP:") > 0 Then
por esta: If InStr(i.innertext, "Faixa de CEP:") > 0 Then

Outras coisas que reparei...
O formato do nome da cidade deve estar com a 1ª letra Maiuscula ex.: Belo Horizonte
E cidades cujos nomes contem acentuação ex.: São Paulo, mesmo que voce retire o acento na consulta, os ceps nao são encontrados pelo codigo.

 
Postado : 28/06/2016 9:22 am
(@toniano)
Posts: 0
New Member
Topic starter
 

Basole

Cara ajudou bastante, valeu!!

 
Postado : 28/06/2016 9:53 pm