HTML/VBA下拉菜单
我对VBA和HTML例程有点小问题。我必须从链接中选择Sort by:下拉菜单并选择Leagues项目。我不能通过VBA来做这件事 这是我写的代码HTML/VBA下拉菜单,html,excel,vba,drop-down-menu,Html,Excel,Vba,Drop Down Menu,我对VBA和HTML例程有点小问题。我必须从链接中选择Sort by:下拉菜单并选择Leagues项目。我不能通过VBA来做这件事 这是我写的代码 Sub Scarica() Dim IE As New SHDocVw.InternetExplorer Dim HTMLDoc As MSHTML.HTMLDocument Dim HTMLDoc1 As MSHTML.HTMLDocument Dim Dropdowns As MSHTML.IHTMLElement Dim post As MSH
Sub Scarica()
Dim IE As New SHDocVw.InternetExplorer
Dim HTMLDoc As MSHTML.HTMLDocument
Dim HTMLDoc1 As MSHTML.HTMLDocument
Dim Dropdowns As MSHTML.IHTMLElement
Dim post As MSHTML.IHTMLElement
Dim Elem As MSHTML.IHTMLElement
Application.StatusBar = "Download Elenco Campionati odierni in corso..."
Application.ScreenUpdating = False
Application.Calculation = xlManual
IE.Visible = True
IE.navigate "https://www.betexplorer.com/next/soccer/"
Do While IE.readyState <> READYSTATE_COMPLETE
Loop
'==================================================
' THIS IS THE PART THAT I CAN'T WRITE
'==================================================
Set HTMLDoc = IE.document
Set post = HTMLDoc.getElementById("wrap-header__list__item.semilong")
Do While IE.readyState <> READYSTATE_COMPLETE
Loop
'==================================================
'==================================================
这是我的第一条消息,我无法插入网站的HTML代码。您可以通过将父选项的id与相应子选项标记的for the value属性相结合来隔离正确的下拉项进行选择。父select需要一个onchange事件,您需要附加并分派该事件 按id的父div和按值的子选项: 事件处理程序:
@QHarr解释的方式非常完美。或者,您也可以使用现有代码执行类似的操作
IE.Visible = True
IE.navigate "https://www.betexplorer.com/next/soccer/"
Do While IE.readyState <> READYSTATE_COMPLETE
Loop
Set HTMLDoc = IE.document
With HTMLDoc.getElementById("next-filter-sort").all(1).all(0)
.Focus
.Value = "2" '"Leagues"
End With
很抱歉,这两个代码都有效,但是当我尝试推断每个联赛的名称时,它们是按开球时间加载的,而不是按联赛加载的? 我使用的代码是:
With IE
.Visible = True
.navigate "https://www.betexplorer.com/next/soccer/"
Do While .readyState <> READYSTATE_COMPLETE
Loop
.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
Do While .readyState <> READYSTATE_COMPLETE
Loop
Set HTMLDoc = IE.document
End With
i = 9 'Riga di inizio copia dati
j = 0 'Colonna di inizio copia dati
范围A10:A1005.ClearContents的Pulisce la Zona dove saranno Incolati i dati
设置mycoll=HTMLDoc.getElementsByTagNameTABLE
对于mycoll中的每个myItm
For Each 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 + 1
End If
Next trtr
下一个myItm非常感谢您的解决方案更简单。没有你的帮助,我永远不会成功。非常感谢大家,非常欢迎你们。让我知道它是否如你所愿。请你能回答下面的问题吗?嗨,这应该作为一个新问题发布
For Each 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 + 1
End If
Next trtr