getElementById
возвращает один узел, поэтому вы не будете индексировать его, как делаете. Не существует метода getElementsById
, поэтому он должен завершиться с ошибкой.
Вы можете использовать класс и экранировать специальные символы и индексировать в возвращаемую коллекцию
MsgBox HTMLDoc.querySelectorAll(".Bdbw\(0px\)\!")(1).innerText
Или передать составной класс getElementsByClassName
:
MsgBox HTMLDoc.getElementsByClassName("Bdbw(0px)! H(36px)")(1).innerText
Атрибут (не идентификатор) data-reactid
может варьироваться между страницей и выводом (как это происходит в этом случае - для строки в выводе идентификатор равен 113. В этом случае он может быть более безопасным использовать таблицы и индексы строк
MsgBox HTMLDoc.getElementsByTagName("table")(2).getElementsByTagName("tr")(9).innerText
Если вы хотите столбец за столбцом для этой строки:
Dim td As Object, tds As Object
Set tds = HTMLDoc.getElementsByTagName("table")(2).getElementsByTagName("tr")(9).getElementsByTagName("td")
For Each td In tds
Debug.Print td.innerText
Next
или
Dim td As Object, tds As Object
Set tds = HTMLDoc.getElementsByClassName("Bdbw(0px)! H(36px)")(1).getElementsByTagName("td")
For Each td In tds
Debug.Print td.innerText
Next
Как я уже сказал, data-реактид может сгибаться, но если вы хотите знать, как применить для этого селектор атрибута, см .:
MsgBox HTMLDoc.querySelector("tr[data-reactid='113']").innerText