Как сделать так, чтобы мой код веб-очистки VBA не отставал от нового окна? - PullRequest
2 голосов
/ 13 июня 2019

Я открываю новую ссылку в своем коде VBA, и она открывается только в новом окне, поэтому код не может следовать за новым окном.

Я в тупике, это мой код.

<div class="table-r">
  <table class="table-c">
    <tbody>
      <tr class="bg">
        <td class=" np">    <a title="comm" href="logcomm-e.asp?id=3" rel="history">3</a> </td>
        <td class=" np">    <a title="comm" href="logcomm-e.asp?id=2" rel="history">2</a> </td>
        <td class=" np">    <a title="comm" href="logcomm-e.asp?id=1" rel="history">1</a> </td>
      </tr>
    </tbody>
  </table>
</div>

Sub IEScrape()
  Dim IE As Object
  Set IE = New InternetExplorerMedium

    With IE
         .Visible = True
         .Navigate "inhouse web site"

         While IE.readyState <> 4
             DoEvents
         Wend

         .document.querySelector("a[href*='logcomm-e.asp?id=']").Click

         While IE.readyState <> 4
             DoEvents
         Wend

    End With

  Set IE = Nothing
  ActiveWorkbook.Save

End Sub

Я ожидаю, что при запуске элемента get и его печати в ячейку, полученную из новой ссылки href. Я не могу сразу перейти к этой ссылке, потому что новая ссылка появляется каждый день, а href get обновляется. с помощью querySelector он нажимает на последнюю запись. В настоящее время это 3 завтра, 4 и т. Д.

Ответы [ 2 ]

1 голос
/ 13 июня 2019

Получение свойства .href для querySelector и переход к нему должно работать:

With IE
     Dim hrefString as String
     hrefString = .document.querySelector("a[href*='logcomm-e.asp?id=']").href
     .Navigate = hrefString
End With
0 голосов
/ 14 июня 2019

немного быстрее будет использовать селекторы класса и типа (но + + к @ vityata's), чтобы получить href и перейти к нему. QuerySelector возвращает первое совпадение, которое, по его мнению, будет последним в вашем случае

ie.Navigate2 .document.querySelector(".table-c a").href
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...