VBA - извлечение текста из веб-страницы и сохранение в ячейку - PullRequest
0 голосов
/ 16 ноября 2018

Я хотел бы получить некоторую помощь, поскольку я боролся больше недели, пытаясь найти ответ. У меня есть следующий HTML-код и мне нужно извлечь общее количество строк и сохранить его в поле Excel.

<div class="vcr_controls">
<input>
<span class="sr-only">Showing rows 1 to 100 of 166</span>
<span class="list_row_number_input">to "
<span id="random id_last_row">100</span>
of "
<span id="random id_total_rows">166</span>
</span>
</div>

VBA, который я написал, выглядит следующим образом:

Sub Test()
'/SET VARIABLES/
Dim loginPath as String
Dim totalRows as String
Dim IE as Object
LoginPath ="https:/domain.com/login"
Set IE = CreateObject("InternetExplorer.application")
IE.Visible = True
IE.Navigate loginPath
Do Until IE.ReadyState = 4
Loop
IE.Document.getElementByID("user_name").Value = "User"
IE.Document.getElementByID(user_password).Value = "Password"
'/SET VARIABLE AND REDIRECT
Dim cellURL as String
cellURL = Worksheet("Sheet1").Cells(2, "S").Value
loginPath = cellURL
IE.Navigate loginPath
Do Until IE.ReadyState = 4
Loop
'/NEED HELP HERE
Dim xobj
Set xobj = IE.Document.getElementById("vcr_controls").getElementsByClassName("list_row_input").Item(0)
Set xobj = xobj.getElementsByTagName("span").Item(1)
'/I CANNOT FIGURE OUT HOW TO EXTRACT THE TOTAL ROWS AND THEN SAVE THE NUMBER TO .Cells(2, "T")

Поскольку тег span total_rows имеет случайное сгенерированное буквенно-цифровое число, я не могу просто выбрать его по имени класса. Вся первая часть для входа в систему работает просто отлично.

1 Ответ

0 голосов
/ 17 ноября 2018

Попробуйте следующий CSS-селектор с querySelector, который возвращает один узел.

ie.document.querySelector("span[id*='total_rows']").innerText

querySelectorAll возвращает объект nodeList, который не имеет свойства .innerText.Вам нужно будет индексировать в nodeList и затем использовать .innerText в извлеченном элементе узла.Я не был уверен, является ли id частью строкового значения идентификатора, если это так, вы можете расширить его до:

ie.document.querySelector("span[id*='id_total_rows']").innerText

Я был слишком многословен с селектором;возможно, вы можете сойти с рук просто:

ie.document.querySelector("[id$='total_rows']").innerText
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...