Fala galera.
Esta é minha primeira ajuda que peço aqui no fórum.
Pois bem, estou montando alguns sistemas e vou implementar o sistema de preenchimento automático de endereço com base no CEP.
Existem alguns modelos em diversos repositórios por ai, mas, não encontrei nenhum que faça a busca no site dos correios.
Depois de pesquisar e estudar bastante, consegui fazer a busca no site dos correios e consegui resgatar os dados para utilizar no sistema.
Mas nem tudo são flores.
Não sou nenhum expert em VB, mas consigo me virar bem com tutoriais e exemplos.
O sistema esta fazendo o que precisa, porém em duas etapas, caso contrário gera erro, vamos aos códigos:
Código após atualizar o campo de CEP
Resumindo o código acima, após atualizar o CEP exibimos o navegador e fazemos a busca do CEP informado no campo.
Só que se eu tentar resgatar os dados neste mesmo evento ele simplesmente carrega os dados da página antes de fazer a busca do CEP
Então eu joguei o resgate dos dados em um novo evento de um botão e ai sim, ele funciona
Outro erro que ocorre também é ao tentar, fazer uma nova consulta, ai obtenho o erro:
E só volta a funcionar se fechar e abrir o formulário novamente.
Então, gostaria da ajuda de vocês para resolver estes erros e verificar se posso melhorar o código de alguma forma.
Obrigado.
Esta é minha primeira ajuda que peço aqui no fórum.
Pois bem, estou montando alguns sistemas e vou implementar o sistema de preenchimento automático de endereço com base no CEP.
Existem alguns modelos em diversos repositórios por ai, mas, não encontrei nenhum que faça a busca no site dos correios.
Depois de pesquisar e estudar bastante, consegui fazer a busca no site dos correios e consegui resgatar os dados para utilizar no sistema.
Mas nem tudo são flores.
Não sou nenhum expert em VB, mas consigo me virar bem com tutoriais e exemplos.
O sistema esta fazendo o que precisa, porém em duas etapas, caso contrário gera erro, vamos aos códigos:
Código após atualizar o campo de CEP
- Código:
Dim html
Private Sub cep_AfterUpdate()
Dim elementos
Dim elem
Dim correios As String
correios = "http://m.correios.com.br/movel/buscaCepConfirma.do"
Me.ie.Visible = True
Me.ie.Navigate correios
Me.ie.SetFocus
'Aguardo até que a página esteja totalmente carregada
Do While Me.ie.Busy = True
DoEvents
Loop
Set html = Me.ie.Document
html.all("cepEntrada").Value = campo_cep
For Each elementos In html.getElementsByTagName("input")
If elementos.Type = "submit" Then elementos.Click: Exit For
Next
Set html = Nothing
End Sub
Resumindo o código acima, após atualizar o CEP exibimos o navegador e fazemos a busca do CEP informado no campo.
Só que se eu tentar resgatar os dados neste mesmo evento ele simplesmente carrega os dados da página antes de fazer a busca do CEP
Então eu joguei o resgate dos dados em um novo evento de um botão e ai sim, ele funciona
- Código:
Private Sub Comando2_Click()
Set html = Me.ie.Document
Dim todotexto, inicio, fim, rua
Dim incremento, total, total1, bairro, cidade, estado, cidade_est
todotexto = html.DocumentElement.outerHTML
incremento = 0
todotexto = Right(todotexto, Len(todotexto) - incremento)
inicio = InStr(todotexto, "<SPAN class=respostadestaque>") 'dá a posição da primeira ocorrência de "td" em todo texto
fim = InStr(todotexto, "</SPAN><BR><SPAN class=resposta>")
inicio = inicio + 29
'rua = Mid(todotexto, inicio, fim - inicio)
Texto12 = Mid(todotexto, inicio, fim - inicio)
incremento = fim
todotexto = Right(todotexto, Len(todotexto) - incremento)
inicio = InStr(todotexto, "<SPAN class=respostadestaque>") 'dá a posição da primeira ocorrência de "td" em todo texto
fim = InStr(todotexto, "</SPAN><BR><SPAN class=resposta>")
inicio = inicio + 29
'bairro = Mid(todotexto, inicio, fim - inicio)
Texto19 = Mid(todotexto, inicio, fim - inicio)
incremento = fim
todotexto = Right(todotexto, Len(todotexto) - incremento)
inicio = InStr(todotexto, "<SPAN class=respostadestaque>") 'dá a posição da primeira ocorrência de "td" em todo texto
fim = InStr(todotexto, "</SPAN><BR><SPAN class=resposta>")
inicio = inicio + 29
cidade_est = Mid(todotexto, inicio, fim - inicio)
Texto21 = Left(cidade_est, Len(cidade_est) - 5)
estado = Right(cidade_est, 3)
Set html = Nothing
Me.ie.Visible = False
End Sub
Outro erro que ocorre também é ao tentar, fazer uma nova consulta, ai obtenho o erro:
Erro em tempo de execução '438':
O objeto não aceita esta propriedade ou método
E só volta a funcionar se fechar e abrir o formulário novamente.
Então, gostaria da ajuda de vocês para resolver estes erros e verificar se posso melhorar o código de alguma forma.
Obrigado.