html - 使用 VBA 导航 IE HTML 文档中的 href
问题描述
我正在尝试使用 VBA 导航 IE 来为我搜索一些信息。但是,在编写代码并运行它之后。在点击href之前我发现一切都很好,但是如果我使用“F8”一一执行代码并且它可以工作。不幸的是,我在这个论坛上没有发现像我这样的情况。有人可以给我一些提示吗?谢谢
Sub GetData()
Dim IE As New SHDocVw.InternetExplorer
Dim HTMLDoc As MSHTML.HTMLDocument
Dim HTMLInput As MSHTML.IHTMLElement
Dim HTMLButton As MSHTML.IHTMLElement
Dim HTMLAllhref As MSHTML.IHTMLElementCollection
studentid = 12345678
Set IE = New InternetExplorerMedium
IE.Visible = True
IE.Navigate "https://xxx.xxx"
Do While IE.ReadyState <> READYSTATE_COMPLETE
Loop
Set HTMLDoc = IE.Document
Set HTMLInput = HTMLDoc.getElementById("abcd")
HTMLInput.Focus
HTMLInput.FireEvent("onchange")
HTMLInput.Value = studentid
Set HTMLButton = HTMLDoc.getElementById("submit")
HTMLButton.Click
上面的部分可以正常工作,但是下面的部分只有在我使用“F8”一一执行的情况下才有效
Set HTMLAllhref = HTMLDoc.GetElementsByTagName ("a")
For Each link in HTMLAllhref
If InStr(link.innerText, studentid) Then
IE.Navigate link.href
Exit For
End If
Next
End Sub
解决方案
1)如果与 F8 一起使用,通常是时间问题,您需要确定需要在哪里等待。
至少确保在每个 之后使用适当的等待.Navigate2
,.Click
并.Submit
允许页面加载:
While IE.Busy Or ie.readyState < 4: DoEvents: Wend
也可能在:
HTMLInput.FireEvent("onchange")
2)推荐的方法是.navigate2
,不是.navigate
。