Есть ли способ получить доступ к первому элементу в столбце на сайте, используя VBA? - PullRequest
0 голосов
/ 28 июня 2019

Вот скриншот столбца на странице сайта.

image

На странице сайта он расположен таким образом:

enter image description here

Как видите, во всех строках есть кнопка «Завершено», которую вы можете нажать, а затем несколько строк.Эти строки относятся к экспорту.Таким образом, столбец не является статичным и постоянно меняется.

Однако каждый раз, когда я запускаю макрос, я хочу получить доступ к первой строке столбца.

Вот пример кода HTML-кода первой кнопки «Завершено» на снимке экрана выше: enter image description here

У меня есть много людей с таким же классомназвание.Посмотрите на выделенные строки в качестве примера на рисунке ниже: enter image description here

Я действительно понятия не имею, как написать код VBA, чтобы всегда получать доступ к первому байту 'Completed' в этомколонка.

PS: в коде HTML, в теге "a", onclick = "....." постоянно меняется.Поэтому я не могу использовать это в качестве аргумента для доступа к нужному полю и нажатия на нужную кнопку.

Пожалуйста, если кто-нибудь может помочь мне разобраться, как это сделать, я был бы действительно счастлив.

Спасибо:)

Ответы [ 2 ]

0 голосов
/ 01 июля 2019

Если вы хотите нажать кнопку «Завершено» в первом столбце, вы можете использовать код ниже:

Set doc = objIE.Document
doc.getElementsByTagName("tr")(0).getElementsByTagName("td")(0).getElementsByTagName("a")(0).Click

Код получает первое <tr>, затем получает первое <td>, затем получает <a>.

0 голосов
/ 28 июня 2019
Теги

<tr> - это строки, теги <td> - это ячейки внутри этих строк. Вы не предоставили достаточно кода для отображения всей таблицы, но, вообще говоря, для доступа к первой строке таблицы вам нужно будет обратиться к объекту коллекции и использовать нужный индексный номер.

.getElementsByTagName("tr")(0)

Это будет относиться к первой строке таблицы. То же самое с получением первого столбца в первом ряду вашей таблицы:

.getElementsByTagName("tr")(0).getElementsByTagName("td")(0)

После того как вы отследили конкретную ячейку, теперь вы хотите нажать на ссылку. Вы можете использовать тот же метод, что и выше.

.getElementsByTagName("tr")(0).getElementsByTagName("td")(0).getElementsByTagName("a")(0).Click

И последнее замечание: первая строка таблицы может быть заголовком, поэтому вам может понадобиться 2-я строка (1).


Спасибо за обновление с большим количеством HTML-кода. Я собираюсь немного переключить передачи и использовать querySelector(), чтобы захватить главный стол.

doc.querySelector("#divPage > table.advancedSearch_table > tbody"). _
            getElementsByTagName("tr")(3).getElementsByTagName("td")(3).Children(0).Click

Посмотрите, работает ли это для вас.

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