【问题标题】:VBA / Internet Explorer: Capture Resulting URL From OnClick EventVBA / Internet Explorer:从 OnClick 事件中捕获结果 URL
【发布时间】:2020-01-20 18:23:30
【问题描述】:

我正在使用 VBA 中的 Internet Explorer 对象自动收集一些数据,但在尝试获取由 href onclick 事件产生的 url 时遇到了困难。

下面的代码正在“点击”该链接,这会将我带到“另存为”对话框。相反,我只想获取由 onclick 事件生成的结果 url。我无法从 <a> 标记中提取它,因为 href 属性指向 javascript:void(0)。

我知道 IE 本身知道生成的 url,因为如果我手动下载生成的文件,我可以从“下载”窗口中检查它,但是有没有办法以编程方式访问和捕获(在字符串中)到 IE 的 url正在被触发的 onclick 事件引导?没有真正让 IE 尝试下载文件本身?

Set Link = IE.document.getElementsByTagName("a")

For Each l In Link
    If l.innertext = "Excel" Then
       l.FireEvent ("onclick")
    Exit For
    End If
Next l

【问题讨论】:

  • 也许可以,但如果没有相关的 HTML 就很难说。
  • 网址是公开的吗?
  • 不确定,OnClick事件的逻辑和代码是什么。仅凭您上面的描述很难猜到。您的 VBA 代码对重现问题没有帮助。如果您从该站点发布可以在我们这边重现问题的 HTML 和 JS 代码,那就更好了。我们可以用它进行测试,看看它在正常情况下是如何工作的,我们可以检查是否可以自动化您的要求。如果您想自动化保存文件对话框,则此链接可能对您有所帮助。 faidootdoot.blogspot.com/2015/04/…

标签: javascript excel vba internet-explorer browser-automation


【解决方案1】:

也许对你有帮助?

Sub tst()

    Dim ie As New SHDocVw.InternetExplorer
    Dim ieDOC As HTMLDocument
    Dim ieONC As IHTMLElement
    Dim ieONCs As IHTMLElementCollection

    ie.navigate "[your url]"
    ie.Visible = True
    Do: DoEvents: Loop Until ie.readyState = READYSTATE_COMPLETE
    Do: DoEvents: Loop While ie.Busy = True

    Set ieDOC = ie.document
    Set ieONCs = ieDOC.getElementsByClassName("[class]")

    For Each ieONC In ieONCs

        Debug.Print ieONC.onclick

    Next

End Sub

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-11-02
    相关资源
    最近更新 更多