我正在尝试使用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
答案 0 :(得分:1)
1)如果与F8配合使用,通常是一个计时问题,则需要确定需要在哪里发生等待。
至少应确保在每个.Navigate2
,.Click
和.Submit
之后使用适当的等待时间以允许页面加载:
While IE.Busy Or ie.readyState < 4: DoEvents: Wend
可能也在之后:
HTMLInput.FireEvent("onchange")
2)推荐的方法是.navigate2
,而不是.navigate
。