VBA с Inte rnet Explorer - PullRequest
       80

VBA с Inte rnet Explorer

0 голосов
/ 15 февраля 2020

Просто нужно лучше понять использование объекта inte rnet explorer в VBA. Поэтому я хочу нажать следующую кнопку с кодом, следующим образом

<a id="DLG_VARIABLE_dlgBase_BTNOK" ct="B" st="" href="javascript:void(0);" class="urBtnEmph" ocl="sapbi_page.sendCommandArray([['TARGET_DIALOG_REF','DLG_VARIABLE',0],['BI_COMMAND_TYPE','OK',0]],event);" onkeydown="ur_Button_keypress(event);" onclick="ur_Button_click(event);" style="text-align:center;overflow:visible;">OK</a>

Мой код выглядит следующим образом -

 Dim IE As InternetExplorer 'Reference to Microsoft Internet Controls
 Set IE = New InternetExplorer
 With IE
 .Visible = True
 .Navigate2 "Somewebsite"

 .Document.getelemetbyclass("urBtnEmph").Click

 End With

End Sub

, но когда я пытаюсь запустить его, он говорит

'Объект не поддерживает это свойство или метод'.

Я очень новичок в этом объекте inte rnet explorer и javascript: (

Редактировать: я изменил строку на '.Document.getelementsbyclass ("urBtnEmph"). Однако нажмите ", но у меня все еще появляется то же предупреждение.

Затем я попробовал это .Document.getElementById (" DLG_VARIABLE_dlgBase_BTNOK ") .Нажмите ", и он покажет" Переменная объекта или переменная блока не установлена ​​". Я добавил код html для этой кнопки

enter image description here

1 Ответ

0 голосов
/ 17 февраля 2020

Проверьте Общие методы и свойства VBA, используемые в веб-автоматизации , вы можете использовать метод getElementsByClassName или getElementById для доступа к элементу веб-страницы.

При использовании метода getElementsByClassName он возвращает несколько элементов с одинаковым именем класса, поэтому, если мы хотим получить специальный элемент, мы можем найти его из списка массивов.

Итак, пожалуйста, измените ваш код, как показано ниже:

Public Sub ClickTest()

    Dim ie As Object

    Set ie = CreateObject("InternetExplorer.Application")
    With ie
        .Visible = True
        .Navigate2 "<website url>"

        While .Busy Or .readyState <> 4: DoEvents: Wend 

        'ie.Document.getElementbyId("DLG_VARIABLE_dlgBase_BTNOK").Click  // it also work well. find element by id 

        ie.Document.getElementsByClassName("urBtnEmph")(0).Click

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