Выберите вариант из раскрывающегося списка Excel vba очистка

Как я могу выбрать элемент из раскрывающегося списка (раскрывающийся список находится в структуре таблицы)

Sub Test()
    Dim ie          As Object
    
    Set ie = CreateObject("InternetExplorer.Application")
    
    With ie
        .Visible = True
        .navigate ("http://www.handelsregisterbekanntmachungen.de/?aktion=suche#Ergebnis")

        Do: DoEvents: Loop Until .readyState = 4
        
        '.document.getElementsByClassName("vt").Value = "1"
    End With
End Sub

При проверке элемента я обнаружил атрибут имени = "vt" .. Спасибо за помощь


person KingTamo    schedule 11.02.2018    source источник


Ответы (2)


Более универсальным является использование селекторов CSS.

Сбор всех параметров из целевого элемента и индексация нужного параметра:

Например, в раскрывающемся списке дней с именем vt вы можете использовать опцию [name=vt]

Первый селектор соответствует всем элементам тега option в целевом родительском элементе, который имеет атрибут name со значением vt.

введите здесь описание изображения

Комбинация селекторов — это комбинатор-потомок, который включает селектор ведущего атрибута для целевого родительского раскрывающегося списка для дня. Поскольку требуется более одного элемента (все параметры), метод querySelectorAll используется для возврата списка узлов, который индексируется, чтобы установить выбранный конкретный параметр:

Set list = .querySelectorAll("[name=vt] option") '<==nodeList
list.item(1).Selected = True 

Последняя строка нацелена на вариант первого дня в раскрывающемся списке.

Пример результатов запроса CSS:


Прямой выбор одного варианта

Опять же, используя раскрывающийся список дней из Datum der Bekanntmachung, вы можете использовать селектор CSS

[name=vt] option[value='2']

Это еще один комбинатор-потомок, объединяющий два селектора атрибутов. Родительский элемент имеет атрибут name со значением vt, а целевой, единственный вариант, дочерний элемент имеет тег option и атрибут value со значением 2. Это нацелено на вариант дня 2 раскрывающегося списка.


VBA:

Option Explicit
Public Sub MakeSelections()
    Dim IE As New InternetExplorer
    With IE
        .Visible = True
        .navigate "http://www.handelsregisterbekanntmachungen.de/?aktion=suche#Ergebnis"

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

        Dim list As Object
        With .document

            Set list = .querySelectorAll("[name=vt] option")
            list.item(1).Selected = True         '<==select first from list
            .querySelector("[name=vt] option[value='2']").Selected = True '<Select second direct
        End With
        Stop '<== Delete me later
        .Quit
    End With
End Sub
person QHarr    schedule 30.09.2018

Я мог бы решить это, перебирая имя тега "выбрать"

    For Each e In ie.document.getElementsByTagName("select")
        'Stuff of code
    Next e

Большое спасибо

person KingTamo    schedule 11.02.2018