【问题标题】:VBA Clicking on an Item with Internet ExporerVBA 使用 Internet Explorer 单击项目
【发布时间】:2018-08-09 00:03:47
【问题描述】:

我的公司使用基于网络的报告系统,我正在尝试将数据自动导出到 Excel。有一个标准下拉菜单,文件 > 导出到 XLS,我想自动点击“导出”按钮下载报告。

我已阅读其他有关单击按钮以展开页面或在表单中输入值等的帖子,但可能是因为按钮位于下拉菜单中,或者因为元素位于 iframe 中以前发布的解决方案都不适合我。

到目前为止:

  • 我可以导航到页面
  • 我可以得到menuExportXLS元素
  • Debug.print 打印正确的 innerText
  • 我的代码没有抛出任何错误

但我无法成功点击按钮下载文件。

另外,HTML 中有一个 javascript onclick 脚本可以触发下载,但我不知道如何在 VBA 中调用它。我很乐意让这两种方法都运行。

Sample of HTML

Sub ExportXLSTest()

Dim appIE As InternetExplorerMedium
Dim Obj As Object

Set appIE = New InternetExplorerMedium
sURL = "https://Site"

With appIE
    .Navigate sURL
    .Visible = True
End With

Do While appIE.Busy Or appIE.ReadyState <> 4
    DoEvents
Loop

Application.Wait (Now + TimeValue("0:00:05"))

Set Obj = appIE.document.getElementsByTagName("iframe")(0).contentDocument.getElementById("menuExportXLS")
Debug.Print Obj.innerText
Obj.Click

Set appIE = Nothing

End Sub

【问题讨论】:

  • excel vba IE clicking a button 的可能重复项。 (如果那个不合适,还有很多其他的,这是一个很常见的问题。)
  • 您正在获取列表项,但点击处理程序位于子 &lt;a&gt; 元素上。也许试试Obj.getElementsByTagName("a")(0).Click
  • InternetExplorerMedium 不是 vb.net 对象吗?
  • @Tim Williams 我试过这个,不幸的是它没有得到元素。我相当确定这是因为该元素在 iframe
  • 我很确定在一个框架中应该不会有任何影响 - 如果你能得到列表项,你应该能够从中得到链接元素......

标签: vba internet-explorer web screen-scraping


【解决方案1】:

您可以使用 CSS 选择器来定位元素;

appIE.document.getElementsByTagName("iframe")(0).contentDocument.querySelector("[onclick*='exportXLS']").Click

这是一个属性 = 值选择器,它以内容文档中具有包含值 exportXLSonclick 属性的第一个元素为目标。

【讨论】:

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