Excel VBA Internet Explorer Нажмите, чтобы щелкнуть раскрывающееся меню - PullRequest
0 голосов
/ 20 июня 2019

Я пытаюсь щелкнуть раскрывающееся меню типа в Internet Explorer, используя код Excel VBA.

Вот код HTML:

<div class="treeNodeStyle" id="trMenu_14" nowrap="" style="visibility: visible;">
<div class="treeNodeWrapperStyle" nowrap="">
<a class="treeInlineStyle" onclick="FolderExpand('trMenu','14');return false;" href="">
<img align="top" class="treeInlineStyle" src="/visimages/tree/plus.gif" border="0">
</a> 
<div class="treeSelectorStyle" onclick="selectNode('trMenu','14',false)" ondblclick="dblselectNode('trMenu','14')">
<img align="absmiddle" class="treeInlineStyleImg" src="/visimages/tree/folder.gif" border="0">
<div title="Finance" class="treeNodeTextStyle" nowrap="true"> Finance</div>

Вот код VBA, который я пытаюсь использовать.Пытаясь понять, должен ли я ссылаться на идентификатор или класс.

Dim btn as Object

For Each btn In IE.Document.getElementsByClassName("treeNodeStyle")
    If btn.innerText = "Finance" Then
        btn.Click
        Exit For
    End If
Next btn

Я не могу заставить код найти какой-либо элемент в HTML.

Ответы [ 2 ]

0 голосов
/ 20 июня 2019

Из вашего HTML-кода это выглядит так: Finance div находится внутри родительского div, имя класса которого равно treeSelectorStyle , и имеет событие onclick.

может попытаться щелкнуть по родительскому элементу div, используя его имя класса, может помочь решить проблему.

Пример кода:

Sub demo()

    Dim URL As String
    Dim IE As Object
    Set IE = CreateObject("InternetExplorer.Application")
    IE.Visible = True
    URL = "C:\Users\Administrator\Desktop\152.html"   'chnage the URL here...
    IE.Navigate URL

    Do While IE.ReadyState = 4: DoEvents: Loop
    Do Until IE.ReadyState = 4: DoEvents: Loop

    IE.document.getelementsbyclassname("treeSelectorStyle").Item(0).Click
    Set IE = Nothing
End Sub

Здесь на основе примера кода я нажимаю элемент (0), но вынеобходимо изменить порядковый номер элемента, который имеет treeSelectorStyle класс, чтобы щелкнуть правильный элемент.

0 голосов
/ 20 июня 2019

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

Для этого я использую селектор атрибута = значение css с оператором * содержитнацелить атрибут onclick на часть его значения

ie.document.querySelector("[onclick*=FolderExpand]").click

Если событие требует срабатывания, тогда

ie.document.querySelector("[onclick*=FolderExpand]").FireEvent "onclick"

Аналогичные принципы могут применяться для нацеливания на другие элементы, которые имеют onclick илиondblclick атрибуты.

Для элемента финансов можно указать его атрибут заголовка

ie.document.querySelector("[title=Finance]")

Однако я не уверен, что это цель для клика.

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