VBA getElementById с динамическим идентификатором

Я искал весь этот форум, msdn и специализированные учебные пособия, и я не могу найти ответ для VBA: как я могу заставить getElementById работать в модуле доступа VBA, где идентификатор для поиска является динамическим?

Давайте посмотрим html-код:

<DIV id=rowToolTipContainer>
<DIV class=contactsCard id=resultsTooltip1122286Contents style="DISPLAY: none">
<TABLE class="shadow-box tooltip">
<TBODY>

И как я пытаюсь его найти:

Dim ResultDIV As HTMLDivElement   
Set ResultDIV = HTMLDoc.getElementById("resultsTooltip*")

Позвольте мне сказать, что возвращаемый html имеет другой идентификатор (числа меняются) в зависимости от каждого результата, поэтому идентификатор для каждого DIV всегда:

id=resultsTooltipxxxxxxxContents где xxxxxxx всегда разные числа

Любая помощь будет высоко оценен.


person indi    schedule 15.06.2012    source источник


Ответы (2)


Попробуйте что-то вроде этого:

Dim ContainerDiv As HTMLDivElement, ResultDIV As HTMLDivElement

Set ContainerDiv = HTMLDoc.getElementById("rowToolTipContainer")
For Each ResultDIV In ContainerDiv.GetElementsByTagName("div")
    If ResultDIV.ID Like "resultsTooltip*Contents" Then

        '' What do you want to do here?

        Exit For
    End If
Next
person Pradeep Kumar    schedule 15.06.2012
comment
Хорошо, это то, что я думал, что вы предлагаете. Я вернусь к вам, как только протестирую его. Большое спасибо, Прадип. - person indi; 15.06.2012

  1. Определите ближайший родительский тег, который всегда содержит идентификатор (вручную, просматривая свой HTML-код).
  2. Перечислите всех потомков <div> этого тега, проверяя их свойство ID с помощью Like.
person GSerg    schedule 15.06.2012
comment
Спасибо за ваш ответ, но не уверен, понимаю ли я вас: идентификатор содержится только внутри упомянутого DIV ... Я думаю, ваша идея состоит в том, чтобы получить родительский тег, а затем перечислить теги потомка div, как вы упомянули, верно? - person indi; 15.06.2012
comment
Прошло 8 лет с тех пор, как об этом спросили, и сейчас я борюсь с этим, что, если у контейнера тоже есть динамические числа, например: PRMT_SV_CONTAINER_******************NS< /я>?? и что еще хуже, класс (буквально двойные кавычки ничего не значат!!!, тогда div тоже динамический = PRMT_SV_******************NS и мне нужно щелкнуть только: ‹значение параметра = ТЕКСТ, ВКЛЮЧЕННЫЙ ПЕРЕД ‹/параметром› XD, мне просто нужен способ щелкнуть параметр 0 внутри этого контейнера... - person Gabo Walker; 11.10.2020
comment
@GaboWalker Затем угрожайте тегом <body> как родительским div и применяйте ту же логику, чтобы найти PRMT_SV_CONTAINER_ с Like. Найдя его, применяем к нему ту же логику, чтобы найти внутри него PRMT_SV_******************NS с Like... - person GSerg; 11.10.2020
comment
привет, GSerg, большое спасибо, однако я просто не могу заставить его работать, я создал новый вопрос, чтобы попытаться решить мою проблему, если у вас есть минутка и вы хотите взглянуть, вот он: stackoverflow.com/questions/64309608/ - person Gabo Walker; 12.10.2020