Изберете опция от падащия списък excel vba scraping

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

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].

Първият селектор съвпада с всички елементи на маркера за опции в целевия родителски елемент, който има атрибут name със стойност vt.

въведете описание на изображението тук

Комбинацията на селектора е наследствен комбинатор, който включва водещ селектор на атрибути за насочване към родителския падащ списък за деня. Тъй като са необходими повече от един елемент (всички опции), методът querySelectorAll се използва за връщане на nodeList, който е индексиран, за да зададе определена опция за избрана:

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

Последният ред е насочен към опцията за ден 1 от падащото меню.

Примерни резултати от 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

Бих могъл да разреша това, като премина през името на етикета "select"

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

Благодаря много

person KingTamo    schedule 11.02.2018