Notifications
Clear all

Macro para buscar CEP online

5 Posts
3 Usuários
0 Reactions
2,417 Visualizações
(@bullmarcus)
Posts: 0
New Member
Topic starter
 

Boa noite,
Alguém teria uma macro que busca CEP online, e joga no formulário ? Eu usava essa macro abaixo funcionava muito bem, mas de uma hora para outra parou de funcionar.

Private Sub btn_busca_cep_Click()
If txt_busca_cep = "" Then
MsgBox ("O campo CEP não pode estar em branco... Digite um CEP válido!")
Exit Sub
End If

Call pega_tabela
End Sub

' Site dos correios

Sub pega_tabela()

Set ie = CreateObject("InternetExplorer.Application")
With ie
.Width = 800
.Height = 600
.Resizable = False
.AddressBar = False
.Top = 60
.Left = 560
.Visible = False
.Navigate " http://www.buscacep.correios.com.br/"
Do Until .ReadyState = 4: DoEvents: Loop
Set myTextField = .Document.all.item("relaxation")
myTextField.Value = Form_Cadastro.txt_busca_cep
ie.Document.Forms(0).Submit

Do Until .ReadyState = 4: DoEvents: Loop
Do While .Busy: DoEvents: Loop
Set doc = ie.Document

Do While ie.LocationURL <> " http://www.buscacep.correios.com.br/servicos/dnec/consultaEnderecoAction.do"
Loop

If ie.LocationURL = " http://www.buscacep.correios.com.br/servicos/dnec/consultaEnderecoAction.do" Then
Do While .Busy Or .ReadyState <> READYSTATE_COMPLETE:
Loop
End If

puxa_dados doc, 3 ' 3 é referente a terceira tabela da página....

.Quit

End With

'Puxa os dados para o Formulario

Sub puxa_dados(d, n)

' d é o documento
' n é a tabela de onde os dados vão ser importados

Dim elemento As Object ' elemento do documento html
Dim tabela As Object ' é a tabela
Dim linha As Object ' é a linha da tabela
Dim celula As Object ' é a celula da tabela.
Dim i As Long
Dim J As Long
Dim dados(5) As String
Dim x As Integer

x = 1

On Error GoTo erro:
For Each elemento In d.all

If elemento.nodename = "TABLE" Then
J = J + 1
End If

If J = n Then
Set tabela = elemento

'tabno = tabno + 1
nextrow = nextrow + 1
Set Rng = Range("A" & nextrow)

For Each linha In tabela.Rows

For Each celula In linha.Cells

dados(x) = celula.innertext
'***Se quiser lançar na planilha use o código comentado abaixo
'plan1.select
'Rng.Value = celula.innertext
'Set Rng = Rng.Offset(, 1)
'I = I + 1
x = x + 1
Next celula

'nextrow = nextrow + 1
'Set Rng = Rng.Offset(1, -I)
'I = 0

Next linha

Exit For

End If

Next elemento

trata_end = Split(dados(1), "-")

Form_Cadastro.txt_Endereço = trata_end(0)
Form_Cadastro.txt_Bairro = dados(2)
Form_Cadastro.txt_cidade = dados(3)
Form_Cadastro.txt_uf = dados(4)
Form_Cadastro.txt_busca_cep = dados(5)

Form_Cadastro.txt_numero.SetFocus
Exit Sub

erro:
MsgBox "CEP não encontrado, favor digitar novamente."

End Sub

Obrigado

 
Postado : 05/01/2016 3:59 pm
(@fazerbem)
Posts: 0
New Member
 

Que legal, acho que isso vai servir também em minha tabela de pedidos, vamos torcer pra termos ajuda!

Andre

 
Postado : 05/01/2016 5:24 pm
(@fazerbem)
Posts: 0
New Member
 

http://www.buscacep.correios.com.br/ser ... oAction.do

Acho que o problema ta no endereco usado, se funcionava antes, ?

Acessei o endreco e não existe

 
Postado : 05/01/2016 5:35 pm
(@fernandofernandes)
Posts: 43750
Illustrious Member
 

Baixe os exemplos enviados pelo colega Wagner Morel no tópico abaixo :

Preencher o cep ou o endereço automaticamente
viewtopic.php?f=10&t=18330&start=10

Se utilizar a pesquisa por cep online encontrara outros modelos.

[]s

 
Postado : 05/01/2016 5:46 pm
(@bullmarcus)
Posts: 0
New Member
Topic starter
 

Eu troquei o endereço para :" http://www.buscacep.correios.com.br/sistemas/buscacep/buscaCepEndereco.cfm" e tornei .Visible = True ai ele abre so que ao fechar essa janela aparece essa mensagem: vide imagem

 
Postado : 05/01/2016 8:06 pm