Olá pessoal,
Utilizo o Sistema para buscar CEP direto no site dos correios online há algum tempo, desenvolvi alguns BD no Access utilizando este código, porém o site dos correios utilizados neste sistema "http://m.correios.com.br/movel/buscaCepConfirma.do" não esta mais disponível e não consigo mais fazer a busca do CEP
Alguém conseguiu descobrir alguma solução??
Segue o código:
Utilizo o Sistema para buscar CEP direto no site dos correios online há algum tempo, desenvolvi alguns BD no Access utilizando este código, porém o site dos correios utilizados neste sistema "http://m.correios.com.br/movel/buscaCepConfirma.do" não esta mais disponível e não consigo mais fazer a busca do CEP
Alguém conseguiu descobrir alguma solução??
Segue o código:
- Código:
Private Sub cep_com_AfterUpdate()
'Sistema para buscar CEP direto no site dos correios online.
'Versão 1.0
Dim todotexto, inicio, fim, incremento, cidade_est
'Exibe o objeto do IE
Me.ie.Visible = True
'Navega até o site dos Correios mobile
Me.ie.Navigate "http://m.correios.com.br/movel/buscaCepConfirma.do"
'Move o foco para o objeto
Me.ie.SetFocus
'Aguardo até que a página esteja totalmente carregada
Call aguardar(ie, 1)
'Seta variavel html com a classe mais comum do objeto
Set html = Me.ie.Document
'Localiza no site dos correios o campo do CEP e injeta
html.all("cepEntrada").Value = cep_com
'Depois do CEP injetado fazemos a busca
html.getElementsByTagName("input")(3).Click
'Executa função que aguarda que a página esteja totalmente carregada
Call aguardar(ie, 1)
'Como o site dos correios usa ajax para fazer a consulta, se não gerarmos um evento antes de pegar os dados, teremos um erro
'Mais detalhes em: http://www.maximoaccess.com/post?t=13087
'Então, já que terei que fazer este evento, resolvi fazer uma confirmação do CEP digitado
pergunta = MsgBox("O CEP informado " & cep_com & " está correto?", vbYesNo)
'Caso a resposta seja sim, vamos pegar no site dos correios o que nos interessa
If pergunta = 6 Then
'Pegamos o html da página
todotexto = html.DocumentElement.outerHTML
'Vamos usar um incremento para nos auxiliar na busca dos dados
incremento = 0
'Lemos o html da página e pegamos o endereço
todotexto = Right(todotexto, Len(todotexto) - incremento)
'Aqui verificamos se ocorreu algum erro no código por cep inválido
If InStr(todotexto, "<DIV class=erro>") = 0 Then
'Pegamos a posição da primeira ocorrência de resposta em todo texto que traz o endereço
inicio = InStr(todotexto, "<SPAN class=respostadestaque>")
'Pegamos a posição final da primeira ocorrência de resposta em todo texto que traz o endereço
fim = InStr(todotexto, "</SPAN><BR><SPAN class=resposta>")
'Somamos a quantidade de caracteres exedentes da primeira ocorrencia que é <SPAN class=respostadestaque> = 29
inicio = inicio + 29
'Fazemos o recorte do html conforme as posições informadas para obter o endereço e inserir no formulário
rua_com = Mid(todotexto, inicio, fim - inicio)
'Definimos nova posição de incremento para auxiliar na busca dos dados
incremento = fim
'Lemos o html da página e pegamos o bairro
todotexto = Right(todotexto, Len(todotexto) - incremento)
'Pegamos a posição da segunda ocorrência de resposta em todo texto que traz o bairro
inicio = InStr(todotexto, "<SPAN class=respostadestaque>")
'Pegamos a posição final da segunda ocorrência de resposta em todo texto que traz o bairro
fim = InStr(todotexto, "</SPAN><BR><SPAN class=resposta>")
'Somamos a quantidade de caracteres exedentes da segunda ocorrencia que é <SPAN class=respostadestaque> = 29
inicio = inicio + 29
'Fazemos o recorte do html conforme as posições informadas para obter o bairro e inserir no formulário
bairro_com = Mid(todotexto, inicio, fim - inicio)
'Definimos nova posição de incremento para auxiliar na busca dos dados
incremento = fim
'Lemos o html da página e pegamos a cidade e o estado que estão juntos
todotexto = Right(todotexto, Len(todotexto) - incremento)
'Pegamos a posição da terceira ocorrência de resposta em todo texto que traz a cidade e o estado
inicio = InStr(todotexto, "<SPAN class=respostadestaque>")
'Pegamos a posição final da terceira ocorrência de resposta em todo texto que traz a cidade e o estado
fim = InStr(todotexto, "</SPAN><BR><SPAN class=resposta>")
'Somamos a quantidade de caracteres exedentes da terceira ocorrencia que é <SPAN class=respostadestaque> = 29
inicio = inicio + 29
'Em uma variavel, fazemos o recorte do html conforme as posições informadas para obter a cidade e o estado
cidade_est = Mid(todotexto, inicio, fim - inicio)
'Fazemos o recorte do html para separar a cidade que está junto com o estado e inserir no formulário
cidade_com = Left(cidade_est, Len(cidade_est) - 5)
'Fazemos o recorte do html para separar a cidade que está junto com o estado e inserir no formulário
estado_com = Right(cidade_est, 3)
Else
'Se o CEP estiver errado, informamos
MsgBox "CEP inválido, verifique e tente novamente."
End If
Else
'Se clicar em não na confirmação do cep, limpamos o form do cep
cep_com = ""
End If
'Limpamos
Set html = Nothing
'Movemos o foco para o campo CEP
cep_com.SetFocus
'Ocultamos o objeto do IE
Me.ie.Visible = False
End Sub
Última edição por maiconmusico em 27/12/2017, 13:27, editado 2 vez(es)