Skip to content Skip to sidebar Skip to footer

Html / Vba Dropdown Menu

I have a little problem with a VBA and HTML routine. I have to select from the link https://www.betexplorer.com/next/soccer/ the 'Sort by:' drop-down menu and select the 'Leagues'

Solution 1:

You can isolate the correct dropdown item for selection by combining the id of the parent select with the attribute = value for the value attribute of the appropriate child option tag. The parent select is expecting an onchange event which you need to attach and dispatch.

Parent div by id and child option by value:

enter image description here

Event handler:

enter image description here

Option Explicit
Public Sub test()
    Dim ie As InternetExplorer, evt AsObject

    Set ie = New InternetExplorer

    With ie
        .Visible = True
        .Navigate2 "https://www.betexplorer.com/next/soccer/"While .Busy Or .readyState <> 4: DoEvents: Wend

        .document.querySelector("#nr-all [value='2']").Selected = True

        Set evt = .document.createEvent("HTMLEvents")
        evt.initEvent "change", True, False
        .document.querySelector("#nr-all select").dispatchEvent evt
        Stop                                     '< delete me later
        .Quit
    End With
End Sub

Solution 2:

The way @QHarr explained is just perfect. Or you can also do something like this with your existing code.

IE.Visible = True
IE.navigate "https://www.betexplorer.com/next/soccer/"DoWhile IE.readyState <> READYSTATE_COMPLETE
LoopSet HTMLDoc = IE.document
With HTMLDoc.getElementById("next-filter-sort").all(1).all(0)
    .Focus
    .Value = "2"'"Leagues"EndWith

Solution 3:

Sorry both codes work, but how come when I try to extrapolate the name of each league, those are loaded by the "Kick off times" and not by Leagues? he code that I used is:

With IE
    .Visible = True
    .navigate "https://www.betexplorer.com/next/soccer/"DoWhile .readyState <> READYSTATE_COMPLETE
    Loop

    .document.querySelector("#nr-all [value='2']").Selected = TrueSet evt = .document.createEvent("HTMLEvents")
    evt.initEvent "change", True, False
    .document.querySelector("#nr-all select").dispatchEvent evt

    DoWhile .readyState <> READYSTATE_COMPLETE
    LoopSet HTMLDoc = IE.document

EndWith



i = 9'Riga di inizio copia dati
j = 0'Colonna di inizio copia dati

Range("A10:A1005").ClearContents 'Pulisce la Zona dove saranno incollati i dati

Set mycoll = HTMLDoc.getElementsByTagName("TABLE") For Each myItm In mycoll

ForEach trtr In myItm.Rows
        If trtr.classname = "js-tournament" Then
            inizio = InStr(trtr.innerHTML, "href=") +6
            fine = InStr(trtr.innerHTML, "><i") -1
            fedhtml =Trim(Mid(trtr.innerHTML, inizio, fine - inizio))
            campionato = Split(Replace(fedhtml, "/soccer/", ""), "/")
            campionato =Trim(campionato(1))
                Cells(i +1, j +1) = trtr.innerText
                Cells(i +1, j +1).Select
                Selection.RowHeight =15
                i = i +1End If
    Next trtr

Next myItm

Post a Comment for "Html / Vba Dropdown Menu"