Access和Internet Controls之间的交互性

时间:2018-06-11 16:31:31

标签: vba ms-access

下午好,经过对谷歌的一些研究,尝试创建一个网页和访问之间的交互代码,我对这段代码的意图是将一些信息插入到互联网页面的对象/搜索字段中,然后存储在我的表格同一页面的其他信息,你能给我这个代码吗?

1)这是我希望通过信息丰富的访问表 enter image description here

2)在执行

的给定错误时
  

“不兼容的类型”

3)我对VBA知之甚少,说我不知道​​从acess( ESTADO和LOCALIDADE )中删除信息的方式是否正确,并且还有用于存储表格的数据捕获( FAIXA_CEP )。

以下是我的代码:

Sub lsPesquisarCEPFaixa()

'Add reference to Access (internet Controls)
Access.References.AddFromGuid "{EAB22AC0-30C1-11CF-A7EB-0000C05BAE0B}", 1, 1

'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 dbs As DAO.Database
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

            lCidade = CurrentDb.OpenRecordset("SELECT LOCALIDADE FROM Tabela1 WHERE LINHA = " & lContador)

            lUF = CurrentDb.OpenRecordset("SELECT ESTADO FROM Tabela1 WHERE LINHA = " & lContador)

            'Carrega os dados de cidade e UF na página e submente os dados do formulário
            IE.Document.all("Localidade").innertext = lCidade
            IE.Document.all("UF").Value = lUF
            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
                    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**

0 个答案:

没有答案