首页 > 解决方案 > 使用 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

标签: htmlexcelvbainternet-explorerweb-scraping

解决方案


1)如果与 F8 一起使用,通常是时间问题,您需要确定需要在哪里等待。

至少确保在每个 之后使用适当的等待.Navigate2.Click.Submit允许页面加载:

While IE.Busy Or ie.readyState < 4: DoEvents: Wend

也可能在:

HTMLInput.FireEvent("onchange")

2)推荐的方法是.navigate2,不是.navigate


推荐阅读