VBA interagindo com Internet Explorer

Anônima
2018-02-27T01:20:36+00:00

Srs Boa Noite,

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.  Coloquei um print da tela com a informação das linhas e outras do HTML da página desta mesma tela. Agradeço a 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

Microsoft 365 e Office | Excel | Para uso doméstico | Windows

Pergunta bloqueada. Essa pergunta foi migrada da Comunidade de Suporte da Microsoft. É possível votar se é útil, mas não é possível adicionar comentários ou respostas ou seguir a pergunta.

0 comentários Sem comentários

Resposta aceita pelo autor da pergunta

Anônima
2018-02-27T12:56:48+00:00

Olá, Nilton2016. Tudo bem?

Obrigado por entrar em contato com a Comunidade da Microsoft. 

Imagino que este problema esteja lhe chateando.

Peço a gentileza de acessar o link abaixo que vai direcioná-lo ao MSDN é um fórum especialmente destinados para desenvolvedores e profissionais em TI e voltado também para essa questão.

https://social.msdn.microsoft.com/forums/pt-br/home?forum=vbapt&filter=alltypes&sort=lastpostdesc

Espero ter ajudado.

Se essa informação foi útil, marque-a como resposta e clique em "Resolvi meu problema", outras pessoas podem estar com a mesma dificuldade, e assim poderá ajudá-las.

Aguardo novidades, abraços!

Vinicius Cuer

Moderador da Comunidade

Agora possuímos vídeos de auxilio, com eles fica tudo mais fácil!

Instalação limpa:           http://aka.ms/W10CleanInstallPT

Criar mídia:                     http://aka.ms/W10CreateMediaPT

Atualização (Inplace):   http://aka.ms/W10InplaceUpgradePT

Esta resposta foi útil?

0 comentários Sem comentários

0 respostas adicionais

Classificar por: Mais útil