Нажмите кнопку Excel VBA в Internet Explorer с помощью getElementsByClassName - PullRequest
0 голосов
/ 10 января 2019

Мне нужно очистить внутренний сайт компании, чтобы извлечь некоторые скрытые данные. Чтобы сделать это, мне нужно нажать несколько кнопок для доступа к каждой записи. У меня проблемы с тем, чтобы VBA нажал одну из кнопок на рассматриваемой странице.

Это кнопка, которую я пытаюсь нажать:

<button type="button" tabindex="0" class="StandardButton OptionsButton" value="Options ▼" id="DDMenuaB823456B43A2C4C1AABF2" onclick="lastMenuEntered='823456B43A2C4C1AABF2';enterMenu(this,'823456B43A2C4C1AABF2','','1110111');this.focus();" onblur="{setTimeout(function() {leaveMenu(this,'823456B43A2C4C1AABF2');},200)}"> <span style="color:#0069A5;text-justify:distribute-all-lines;" class="fa fa-lg fa-cog"></span><span class="OptionsText">Options ▼</span></button>

Я пытаюсь получить к нему доступ через class = "StandardButton OptionsButton", но безуспешно.

Я работал над этим пару дней (новичок в VBA). Я попытался выполнить следующие действия: Нажатие кнопки в Internet Explorer с использованием VBA (getElementsByClassName) , а также различные другие решения, но безуспешно.

Dim rowsonpage As Integer 'integer variable we'll use as a counter
Dim optbtn As HTMLInputButtonElement    
For rowsonpage = 1 To 20 'loop 20 rows per page
   'click options
    Set optbtn = objIE.document.getElementsByClassName("StandardButton OptionsButton")(1)
    optbtn.Click
        For Each btn In optbtn
            btn.Click
            Exit For
        Next
Next rowsonpage

Я получаю ошибку времени выполнения 91 с этим кодом.

Я тоже пробовал с этим (и многими другими перестановками):

For Each aInput In objIE.document.getElementsByClassName("StandardButton OptionsButton")
If aInput.getAttribute("value") = "Options" Then
    aInput.Click
    Exit For
End If
Next aInput

Который не выдает никаких ошибок, но не нажимает кнопку.

Любая помощь с благодарностью.

Редактировать : Я забыл упомянуть, что мне нужно будет перебирать 20 из этих элементов на странице, иногда около 700 страниц - каждый с различным атрибутом id, но с одинаковыми именами классов - следовательно, желая выбирать по классу, а не по id. Есть еще идеи? Спасибо за комментарии.

1 Ответ

0 голосов
/ 10 января 2019

Попробуйте это

IE.document.getElementById("DDMenuaB823456B43A2C4C1AABF2").click()

Или

IE.document.getElementById("DDMenuaB823456B43A2C4C1AABF2").FireEvent("onclick")

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