none
VBA Interagindo com Internet Explorer RRS feed

  • Pergunta

  • Srs Bom dia,

    Estou adaptando o código abaixo e gostaria de saber se vocês podem me ajudar sobre como faço para indicar a extração da informação da 1ª e da 2ª linha da mesma coluna nesta parte da instrução salvando a informação da segunda linha em uma outra coluna, por exemplo D.  Se puderem me indicar qual o procedimento no caso de mais linhas fico agradecido pela atenção.

    '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
                            Range("C" & lContador).Value = l.getElementsByTagName("td")(1).innertext
                        End If
                    Next l
                End If
            Next i
        Next lContador

    Não estou postando o código que estou desenvolvendo, porque o site em que irei trabalhar precisa de login e senha

    Este é o código completo que funciona para extração de CEP:

                         

    'Inclui referência ao Microsoft Internet Controls
    Sub lReferenciaIE()
        Dim ObRef
        On Error Resume Next

        ThisWorkbook.VBProject.References.AddFromGuid "{EAB22AC0-30C1-11CF-A7EB-0000C05BAE0B}", 1, 1
    End Sub

    Sub lsPesquisarCEPFaixa()
        'Inclui a referência se não houver
        lReferenciaIE

        Dim IE                  As InternetExplorer
        Dim lCidade             As String
        Dim lUF                 As String
        Dim lUltimaLinhaAtiva   As Long
        Dim lContador           As Long

        'Identifica a última célula ativa da lista
        lUltimaLinhaAtiva = Worksheets("Plan1").Cells(Worksheets("Plan1").Rows.Count, 1).End(xlUp).Row

        '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 planilha
        For lContador = 2 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 = Range("B" & lContador).Value
            lUF = Range("A" & lContador).Value

            '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
                            Range("C" & lContador).Value = l.getElementsByTagName("td")(1).innertext
                        End If
                    Next l
                End If
            Next i
        Next lContador

        MsgBox "Concluído!"
    End Sub

    terça-feira, 27 de fevereiro de 2018 14:18