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
Que legal, acho que isso vai servir também em minha tabela de pedidos, vamos torcer pra termos ajuda!
Andre
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
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
Existem mil maneiras de preparar Neston. Invente a sua!
http://www.youtube.com/ExpressoExcel
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