【发布时间】:2018-08-09 00:03:47
【问题描述】:
我的公司使用基于网络的报告系统,我正在尝试将数据自动导出到 Excel。有一个标准下拉菜单,文件 > 导出到 XLS,我想自动点击“导出”按钮下载报告。
我已阅读其他有关单击按钮以展开页面或在表单中输入值等的帖子,但可能是因为按钮位于下拉菜单中,或者因为元素位于 iframe 中以前发布的解决方案都不适合我。
到目前为止:
- 我可以导航到页面
- 我可以得到
menuExportXLS元素 -
Debug.print打印正确的innerText - 我的代码没有抛出任何错误
但我无法成功点击按钮下载文件。
另外,HTML 中有一个 javascript onclick 脚本可以触发下载,但我不知道如何在 VBA 中调用它。我很乐意让这两种方法都运行。
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 的可能重复项。 (如果那个不合适,还有很多其他的,这是一个很常见的问题。)
-
您正在获取列表项,但点击处理程序位于子
<a>元素上。也许试试Obj.getElementsByTagName("a")(0).Click -
InternetExplorerMedium不是 vb.net 对象吗? -
@Tim Williams 我试过这个,不幸的是它没有得到元素。我相当确定这是因为该元素在
iframe内 -
我很确定在一个框架中应该不会有任何影响 - 如果你能得到列表项,你应该能够从中得到链接元素......
标签: vba internet-explorer web screen-scraping