Olá pessoal, estou tentando desenvolver um BD que navegue na internet e informe dois campos no site e após a pesquisa preencha a tabela com o resultado. O problema é que não sei como fazer um loop para que pule para a próxima linha da tabela para preencher com os próximos dados a serem consultados. Segue a BD em anexo. Fico agradecido por quem puder ajudar.
Segue o código que estou trabalhando:
Segue o código que estou trabalhando:
- Código:
Sub lsPesquisarCEPFaixa()
'Declara Variáveis Internet
Dim IE As InternetExplorer
Dim lCidade As String
Dim lUF As String
Dim lUltimaLinhaAtiva As Long
Dim lContador As Long
'Declara Variáveis Access
Dim dbsAccessToWebPage As DAO.Database
Dim rsUF As DAO.Recordset
Dim rsCID As DAO.Recordset
Dim rsSQL As DAO.Recordset
Dim strSQL As String
'Identifica a última linha populada da Tabela
lUltimaLinhaAtiva = CurrentDb.OpenRecordset("Tabela1").RecordCount
'MsgBox lUltimaLinhaAtiva
'Cria um objeto Internet Explorer
Set IE = New InternetExplorer
'Torna o objeto visível
IE.Visible = True
'Faz um loop por todas as linhas da Tabela
For lContador = 1 To lUltimaLinhaAtiva
'Navega ao site dos correios
IE.Navigate "http://www.buscacep.correios.com.br/sistemas/buscacep/buscaFaixaCep.cfm"
'Identifica se a página já foi totalmente carregada
While IE.ReadyState <> READYSTATE_COMPLETE
Wend
'Como a página possui JavaScript que cria os objetos que são preenchidos após a carga completa, é necessário
'aguardar um tempo, coloquei 3 segundos, alterar conforme a necessidade.
'Caso não tenha javascript na criação dos objetos da página comentar esta parte do código, pois será bem
'mais rápida a execução.
sng = Timer
Do While sng + 3 > Timer
Loop
'Carrega os dados de cidade e UF que serão preenchidos na página
Set dbsAccessToWebPage = CurrentDb
Set rsUF = dbsAccessToWebPage.OpenRecordset("Tabela1")
Set rsCID = dbsAccessToWebPage.OpenRecordset("Tabela1")
lUF = rsUF!ESTADO
lCidade = rsCID!LOCALIZADO
'Carrega os dados de cidade e UF na página e submente os dados do formulário
IE.Document.all("UF").Value = lUF
IE.Document.all("Localidade").innertext = lCidade
IE.Document.Forms("Geral").submit
'Identifica se a página já foi totalmente carregada
While IE.ReadyState <> READYSTATE_COMPLETE
Wend
'Como a página possui JavaScript que cria os objetos que são preenchidos após a carga completa, é necessário
'aguardar um tempo, coloquei 3 segundos, alterar conforme a necessidade.
'Caso não tenha javascript na criação dos objetos da página comentar esta parte do código, pois será bem
'mais rápida a execução.
sng = Timer
Do While sng + 3 > Timer
Loop
'Faz um loop pelos objetos do tipo table na página e procura pelo campo Faixa(s) de CEP: preenchido.
'Em seguida busca pela segunda coluna da linha de faixa de CEP e armazena esta informação diretamente na coluna C da linha
'da planilha
For Each i In IE.Document.body.getElementsByTagName("table")
If InStr(i.innertext, "Faixa de CEP") > 0 Then
For Each l In i.getElementsByTagName("tr")
If InStr(l.innertext, lCidade) Then
[table][tr][td][/td][/tr][/table]CurrentDb.Execute "UPDATE Tabela1 SET FAIXA_CEP = '" & l.getElementsByTagName("td")(1).innertext & "' WHERE LINHA = " & lContador
End If
Next l
End If
Next i
Next lContador
MsgBox "Concluído!"
End Sub
- Anexos
- Pesquisa Faixa de Cep.zip
- Você não tem permissão para fazer download dos arquivos anexados.
- (42 Kb) Baixado 14 vez(es)