VBA与Internet Explorer交互

时间:2018-04-04 16:00:33

标签: excel-vba vba excel

我正在使用Excel VBA代码来适应我的需要,但我无法告诉代码如何点击我放在附件中的示例。您在Internet Explorer中的参考是

<a href="/siconv/ConsultProposal/ProfileQueryProfileQueryProposal.of?id?proposed=1336163&destino=&idConvenio=">

并且我不确定如何将此提示添加到VBA以进行单击。任何可以帮助感谢的人,尼尔顿。

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

Dim IE                  As InternetExplorer
Dim lProposta           As String
Dim lUltimaLinhaAtiva   As Long
Dim lContador           As Long

'Identifica a última célula ativa da lista
lUltimaLinhaAtiva = Worksheets("Plan4").Cells(Worksheets("Plan4").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 Siconv
    IE.Navigate "https://www.convenios.gov.br/siconv/proposta/ConsultarProposta/ConsultarProposta.do"

    '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 da proposta que serão preenchidos na página
    lProposta = Range("A" & lContador).Value

    'Carrega os dados da proposta na página e submete os dados do formulário
    IE.Document.all("numeroProposta").innertext = lProposta
    IE.Document.forms("consultarPropostaPreenchaOsDadosDaConsultaConsultarForm").submit

    'Identifica se a página já foi totalmente carregada
    While IE.ReadyState <> READYSTATE_COMPLETE
    Wend

    Clica no número da proposta e abre nova aba        
    'IE.Document.body.getElementsByTagName ("Número da Proposta")
    'IE.Document.getElementById("a").Click

     '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 Objeto do Convênio.
    'Em seguida busca pela segunda coluna da linha de Situação e armazena esta informação diretamente na coluna B da linha da planilha
    For Each i In IE.Document.body.getElementsByTagName("table")
        If InStr(i.innertext, "Objeto do Convênio") > 0 Then
            For Each l In i.getElementsByTagName("tr")
                If InStr(l.innertext, lProposta) Then
                    Range("B" & lContador).Value = l.getElementsByTagName("td")(1).innertext 
                End If
            Next l
        End If
    Next i
Next lContador

MsgBox "Concluído!"

End Sub

Internet Explorer Print

0 个答案:

没有答案