Очистка веб-страниц с помощью VBA: как учесть несколько значений с одним и тем же идентификатором элемента HTML? - PullRequest
0 голосов
/ 08 мая 2020

У меня есть вопрос относительно некоторого кода VBA, который у меня есть для рабочего элемента. Я пытаюсь удалить данные с веб-страницы, которую использую для отчетов. Я новичок в VBA и программировании в целом, и изменил код, который нашел в Интернете (в основном Daily Dose).

Мне удалось очистить информацию из таблицы с помощью следующего кода, но это не та таблица:

Sub webdata()
Dim appIE As Object
Dim doc As Object
Dim rowdata As Object
Dim clip As DataObject 

Set appIE = CreateObject("internetexplorer.application")
With appIE
.Navigate ""
.Visible= True
End With

Do While appIE.Busy
   DoEvents
Loop

Set ieDoc = appIE.Document
With ieDoc.forms(0)
.UserID.Value = ""
.Password.Value = ""
.submit
End With

Do While appIE.Busy: DoEvents: Loop
Do Until appIE.ReadyState = READY_STATE_COMPLETE: DoEvents: Loop

With appIE
  .Navigate ""
  .Visible = True
  End With

Do While appIE.Busy: DoEvents: Loop
Do Until appIE.ReadyState = READY_STATE_COMPLETE: DoEvents: Loop

Set doc = appIE.Document
Set rowdata = doc.getElementById("datatable")

If Not rowdata Is Nothing Then
Set clip = New DataObject
clip.SetText "" & rowdata.outerHTML & ""
End If

clip.PutInClipboard
Sheet1.Select
Sheet1.Range("A1").Select
Sheet1.PasteSpecial "Unicode Text"

appIE.Quit
Set appIE = Nothing

End Sub

На данной странице есть несколько таблиц, но моя проблема что все они имеют одинаковый идентификатор ("datatable"). Мне нужна четвертая таблица, указанная в коде HTML.

Я попытался отредактировать эти строки кода, чтобы учесть индекс / положение правой таблицы, но все, что я получил, было «Ошибка выполнения -2147352319 (80020101) Ошибка автоматизации»:

Set doc = appIE.Document
Set rowdata = doc.getElementbyID ("datatable")(4)

Я также пробовал добавить следующее:

Set rowdata = doc.getElementbyID ("datatable")(4).innerText

К сожалению, по соображениям безопасности я не могу опубликовать веб-ссылку или код HTML. Буду очень признателен за любую помощь / отзыв! Заранее спасибо.

...