Excel VBA - для цикла необходимо пропустить первый элемент в веб-царапинах - PullRequest
0 голосов
/ 17 октября 2018

Я довольно новый / неопытный в VBA, и я (по-видимому) один маленький шаг от завершения проекта, который пинает мою задницу.Для некоторого фона я перебираю веб-сайт и перехожу к соответствующему тегу "tbody" и перебираю включенные теги "tr".В каждом тр я ожидаю две "тд" клетки.Проблема в том, что первый tr имеет тег th с colspan, равным 2, что означает, что в этом tr есть только один дочерний элемент, и код вылетает.То, что я (пока) не знаю, как это сделать, - это пропустить или учесть исключение в первой версии.Вот соответствующий фрагмент кода:

R = 1

For Each ele In IE.Document.getElementsByTagName("tbody")(13).getElementsByTagName("td")


WSW.Range("H" & R).Value = ele.Children(0).textContent
WSW.Range("I" & R).Value = ele.Children(1).textContent

R = R + 1

Next

Не уверен, что я спустился вниз по кроличьей норе, если код можно восстановить, или же необходимо восстановить список для этого раздела кода.,Спасибо за любую помощь.

1 Ответ

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

Индекс getElementsByTagName от нуля до n на основе, но счет (aka .length) от одного до n на основе.Вы используете R в качестве ссылки на индекс, поэтому он выполняет двойную функцию.

dim R as long
R = 1

For R=1 to  IE.Document.getElementsByTagName("tbody")(13).getElementsByTagName("td").length -1

    with IE.Document.getElementsByTagName("tbody")(13).getElementsByTagName("td")(R)
        WSW.Range("H" & R).Value = .Children(0).textContent
        WSW.Range("I" & R).Value = .Children(1).textContent
    end with

Next R
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...