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