Boa tarde, sou novo em access e desenvolvo com video aulas e estou aprendendo bem.
Estou tentando implantar um sistema que busca cep pelo correio mais esta dando erro conforme abaixo no modulo temos a seguinte codificação...
Option Compare Database
Option Explicit
#If VBA7 Then
Private Declare PtrSafe Sub sapiSleep Lib "kernel32" Alias "Sleep" (ByVal dwMilliseconds As Long) 'Para rodar em 64Bits
#Else
Private Declare PtrSafe Sub sapiSleep Lib "kernel32" Alias "Sleep" (ByVal dwMilliseconds As Long) 'Para rodar em 32Bits
#End If
Function aguardar(ByRef ObjIe As Object, tempo As Integer)
With ObjIe
Do Until Not .Busy And .ReadyState = READYSTATE_COMPLETE
Debug.Print tempo
Debug.Print .Busy
Debug.Print .ReadyState
DoEvents
Loop
End With
Call sSleep(100)
End Function
'***************** Code Start *******************
' This code was originally written by Dev Ashish.
' It is not to be altered or distributed,
' except as part of an application.
' You are free to use it in any application,
' provided the copyright notice is left unchanged.
'
' Code Courtesy of
' Dev Ashish
'
Sub sSleep(lngMilliSec As Long)
If lngMilliSec > 0 Then
Call sapiSleep(lngMilliSec)
End If
End Sub
Sub sTestSleep()
Const cTIME = 1000 'in MilliSeconds
Call sSleep(cTIME)
MsgBox "Before this Msgbox, I was asleep for " _
& cTIME & " Milliseconds."
End Sub
'***************** Code End *********************
Peguei o modelo com Rafael neste forum...e temos a segunte codificação no formulario...
'Sistema para buscar CEP direto no site dos correios online.
'Desenvolvido por Rafael Teixeira Coelho - rtcoelho no fórum maximoaccess
'Versão 1.0
Private Sub cep_AfterUpdate()
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
'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://maximoaccess.forumeiros.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 & " 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, "
Estou tentando implantar um sistema que busca cep pelo correio mais esta dando erro conforme abaixo no modulo temos a seguinte codificação...
Option Compare Database
Option Explicit
#If VBA7 Then
Private Declare PtrSafe Sub sapiSleep Lib "kernel32" Alias "Sleep" (ByVal dwMilliseconds As Long) 'Para rodar em 64Bits
#Else
Private Declare PtrSafe Sub sapiSleep Lib "kernel32" Alias "Sleep" (ByVal dwMilliseconds As Long) 'Para rodar em 32Bits
#End If
Function aguardar(ByRef ObjIe As Object, tempo As Integer)
With ObjIe
Do Until Not .Busy And .ReadyState = READYSTATE_COMPLETE
Debug.Print tempo
Debug.Print .Busy
Debug.Print .ReadyState
DoEvents
Loop
End With
Call sSleep(100)
End Function
'***************** Code Start *******************
' This code was originally written by Dev Ashish.
' It is not to be altered or distributed,
' except as part of an application.
' You are free to use it in any application,
' provided the copyright notice is left unchanged.
'
' Code Courtesy of
' Dev Ashish
'
Sub sSleep(lngMilliSec As Long)
If lngMilliSec > 0 Then
Call sapiSleep(lngMilliSec)
End If
End Sub
Sub sTestSleep()
Const cTIME = 1000 'in MilliSeconds
Call sSleep(cTIME)
MsgBox "Before this Msgbox, I was asleep for " _
& cTIME & " Milliseconds."
End Sub
'***************** Code End *********************
Peguei o modelo com Rafael neste forum...e temos a segunte codificação no formulario...
'Sistema para buscar CEP direto no site dos correios online.
'Desenvolvido por Rafael Teixeira Coelho - rtcoelho no fórum maximoaccess
'Versão 1.0
Private Sub cep_AfterUpdate()
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
'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://maximoaccess.forumeiros.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 & " 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, "
") = 0 Then
'Pegamos a posição da primeira ocorrência de resposta em todo texto que traz o endereço
inicio = InStr(todotexto, "")
'Pegamos a posição final da primeira ocorrência de resposta em todo texto que traz o endereço
fim = InStr(todotexto, "
")
'Somamos a quantidade de caracteres exedentes da primeira ocorrencia que é = 29
inicio = inicio + 29
'Fazemos o recorte do html conforme as posições informadas para obter o endereço e inserir no formulário
endereco = 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, "")
'Pegamos a posição final da segunda ocorrência de resposta em todo texto que traz o bairro
fim = InStr(todotexto, "
")
'Somamos a quantidade de caracteres exedentes da segunda ocorrencia que é = 29
inicio = inicio + 29
'Fazemos o recorte do html conforme as posições informadas para obter o bairro e inserir no formulário
bairro = 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, "")
'Pegamos a posição final da terceira ocorrência de resposta em todo texto que traz a cidade e o estado
fim = InStr(todotexto, "
")
'Somamos a quantidade de caracteres exedentes da terceira ocorrencia que é = 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 = 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 = 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 = ""
End If
'Limpamos
Set html = Nothing
'Movemos o foco para o campo CEP
cep.SetFocus
'Ocultamos o objeto do IE
Me.ie.Visible = False
End Sub
Poderia me ajudar a implantar no meu sistema?
em anexo mandei o sistema como esta sendo desenvolvido.
'Pegamos a posição da primeira ocorrência de resposta em todo texto que traz o endereço
inicio = InStr(todotexto, "")
'Pegamos a posição final da primeira ocorrência de resposta em todo texto que traz o endereço
fim = InStr(todotexto, "
")
'Somamos a quantidade de caracteres exedentes da primeira ocorrencia que é = 29
inicio = inicio + 29
'Fazemos o recorte do html conforme as posições informadas para obter o endereço e inserir no formulário
endereco = 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, "")
'Pegamos a posição final da segunda ocorrência de resposta em todo texto que traz o bairro
fim = InStr(todotexto, "
")
'Somamos a quantidade de caracteres exedentes da segunda ocorrencia que é = 29
inicio = inicio + 29
'Fazemos o recorte do html conforme as posições informadas para obter o bairro e inserir no formulário
bairro = 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, "")
'Pegamos a posição final da terceira ocorrência de resposta em todo texto que traz a cidade e o estado
fim = InStr(todotexto, "
")
'Somamos a quantidade de caracteres exedentes da terceira ocorrencia que é = 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 = 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 = 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 = ""
End If
'Limpamos
Set html = Nothing
'Movemos o foco para o campo CEP
cep.SetFocus
'Ocultamos o objeto do IE
Me.ie.Visible = False
End Sub
Poderia me ajudar a implantar no meu sistema?
em anexo mandei o sistema como esta sendo desenvolvido.