Excel VBA - 访问网站,生成报告并在 IE 对话框栏上按保存
Excel VBA - Access Website, generate report & press save on IE dialog bar
我有一个关于某个话题的问题,这个话题已经在其他一些话题和论坛中讨论过了,但我无法让它对我有用。所以我来这里问关于我个人代码的问题。
基本上,我访问一个内部网站并根据一些输入(通过复选框)使用来自 SAP 的数据创建一个报告。
我的问题是在报告生成后出现的,IE 提示我按其对话框中的 "save" 按钮。我没能使那部分自动化。
你能帮我吗?我想将报告存储在 "Downloads" 文件夹中。
您会在下面找到我的代码。
由于合规原因,我无法显示原始 URL.
非常感谢任何帮助。
最佳
西蒙
Dim ie As InternetExplorer
Dim html As HTMLDocument
Dim i As Integer
Set ie = New InternetExplorerMedium
ie.Visible = True
ie.navigate "https://blablablablablabla"
Application.Wait (Now + TimeValue("00:00:03"))
Set html = ie.document
html.getElementById("ctl00_MainContent_RadCboRepFilter1_Arrow").Click
Application.Wait (Now + TimeValue("00:00:01"))
html.getElementsByClassName("rcbList")(0).Children(5).Click
Application.Wait (Now + TimeValue("00:00:01"))
html.getElementById("ctl00_MainContent_RadCboRepFilter2_Arrow").Click
Application.Wait (Now + TimeValue("00:00:01"))
html.getElementsByClassName("rcbList")(0).Children(0).Click
Application.Wait (Now + TimeValue("00:00:01"))
html.getElementById("ctl00_MainContent_RadCboListOppStatus_ctl01").Click
html.getElementById("ctl00_MainContent_RadCboListOppStatus_ctl02").Click
html.getElementById("ctl00_MainContent_RadcboListSalesStage_ctl00").Click
html.getElementById("ctl00_MainContent_RadcboListSalesStage_ctl01").Click
html.getElementById("ctl00_MainContent_RadcboListSalesStage_ctl02").Click
Application.Wait (Now + TimeValue("00:00:01"))
html.getElementById("MainContent_BtnRunReport").Click
End Sub
一般情况下,从IE浏览器下载文件时,会提示用户点击保存按钮。
我们可以使用 Application.SendKeys "%{s}" 命令来单击 VBA 中的保存按钮。
示例代码如下:
Sub Test()
Dim IE As Object
Set IE = CreateObject("InternetExplorer.Application")
With IE
.Visible = True
.Navigate "<the website url>"
While IE.ReadyState <> 4
DoEvents
Wend
'click the button to download the file.
IE.Document.getElementbyId("btnDowloadReport").Click
'wait the download prompt appear
Application.Wait (Now + TimeValue("00:00:03"))
Application.SendKeys "%{s}"
'Waiting for the site to load.
End With
Set IE = Nothing
End Sub
Html 页面资源:
<a id="btnDowloadReport" href="https://research.google.com/pubs/archive/44678.pdf" download>Download</a>
[注意]请检查您的IE浏览器设置,确保下载路径是"Downloads"文件夹。
我有一个关于某个话题的问题,这个话题已经在其他一些话题和论坛中讨论过了,但我无法让它对我有用。所以我来这里问关于我个人代码的问题。
基本上,我访问一个内部网站并根据一些输入(通过复选框)使用来自 SAP 的数据创建一个报告。
我的问题是在报告生成后出现的,IE 提示我按其对话框中的 "save" 按钮。我没能使那部分自动化。
你能帮我吗?我想将报告存储在 "Downloads" 文件夹中。
您会在下面找到我的代码。 由于合规原因,我无法显示原始 URL.
非常感谢任何帮助。
最佳 西蒙
Dim ie As InternetExplorer
Dim html As HTMLDocument
Dim i As Integer
Set ie = New InternetExplorerMedium
ie.Visible = True
ie.navigate "https://blablablablablabla"
Application.Wait (Now + TimeValue("00:00:03"))
Set html = ie.document
html.getElementById("ctl00_MainContent_RadCboRepFilter1_Arrow").Click
Application.Wait (Now + TimeValue("00:00:01"))
html.getElementsByClassName("rcbList")(0).Children(5).Click
Application.Wait (Now + TimeValue("00:00:01"))
html.getElementById("ctl00_MainContent_RadCboRepFilter2_Arrow").Click
Application.Wait (Now + TimeValue("00:00:01"))
html.getElementsByClassName("rcbList")(0).Children(0).Click
Application.Wait (Now + TimeValue("00:00:01"))
html.getElementById("ctl00_MainContent_RadCboListOppStatus_ctl01").Click
html.getElementById("ctl00_MainContent_RadCboListOppStatus_ctl02").Click
html.getElementById("ctl00_MainContent_RadcboListSalesStage_ctl00").Click
html.getElementById("ctl00_MainContent_RadcboListSalesStage_ctl01").Click
html.getElementById("ctl00_MainContent_RadcboListSalesStage_ctl02").Click
Application.Wait (Now + TimeValue("00:00:01"))
html.getElementById("MainContent_BtnRunReport").Click
End Sub
一般情况下,从IE浏览器下载文件时,会提示用户点击保存按钮。 我们可以使用 Application.SendKeys "%{s}" 命令来单击 VBA 中的保存按钮。
示例代码如下:
Sub Test()
Dim IE As Object
Set IE = CreateObject("InternetExplorer.Application")
With IE
.Visible = True
.Navigate "<the website url>"
While IE.ReadyState <> 4
DoEvents
Wend
'click the button to download the file.
IE.Document.getElementbyId("btnDowloadReport").Click
'wait the download prompt appear
Application.Wait (Now + TimeValue("00:00:03"))
Application.SendKeys "%{s}"
'Waiting for the site to load.
End With
Set IE = Nothing
End Sub
Html 页面资源:
<a id="btnDowloadReport" href="https://research.google.com/pubs/archive/44678.pdf" download>Download</a>
[注意]请检查您的IE浏览器设置,确保下载路径是"Downloads"文件夹。