我正在从特定的网站下载Excel文件,但是IE11促使我单击“保存”按钮,并且希望它使用VBA自动运行。
我尝试了Application.SendKeys("%s")
方法,但是由于我不是VBA专家,所以无法使用。
Sub dailyreport()
Dim IE As Object
Dim doc As HTMLDocument
Dim Element As HTMLLinkElement
Set IE = New InternetExplorer
IE.Visible = True
IE.navigate ("https://mywebsite.com")
Do While IE.Busy
Application.Wait DateAdd("S", 1, Now)
Loop
Set doc = IE.document
doc.getElementById("login").Value = "username"
doc.getElementById("password").Value = "password"
doc.getElementById("loginButton").Click
' Navigate to report page Do While IE.Busy Application.Wait DateAdd ("S", 1, Now) Loop IE.navigate ("https://mywebsite.com/report") 'Since the hyperlink doesn' t have any link I 'm searching the link with href value (Export View)
Do While IE.Busy
Application.Wait DateAdd("S", 30, Now)
Loop
For Each Element In doc.Links
If InStr(Element.innerText, "Export View") Then
Call Element.Click
Exit For
End If
Next Element
End Sub
单击“导出视图”超链接后,它开始下载,但最终IE要求我单击“打开”或“保存”按钮。
“您要保存或打开”
所以我想使用VBA单击“保存”按钮。
答案 0 :(得分:0)
请参考以下代码,在单击下载提示“保存”按钮之前,我们可以等待提示出现,然后使用Application.SendKeys "%{s}"
命令单击“保存”按钮:
Sub Test()
Dim IE As Object
Dim startDateText As Object, endDateText 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
网页内容:
<a id="btnDowloadReport" href="https://research.google.com/pubs/archive/44678.pdf" download>Download</a>
答案 1 :(得分:0)
子测试()
将IE视作对象
将文档另存为HTMLDocument
将startDateText设为对象,将endDateText设为对象
将元素作为HTMLLinkElement
设置IE =新的InternetExplorer
IE.Visible = True
IE.navigate(“ dailyreports.com”)
在IE.Busy上执行
Application.Wait DateAdd(“ S”,1,Now)
循环
设置doc = IE.document
doc.getElementById(“ login”)。Value =“ xxxx”
doc.getElementById(“ password”)。Value =“ yyyy”
doc.getElementById(“ loginButton”)。单击
在IE.Busy上执行
Application.Wait DateAdd(“ S”,1,Now)
循环
IE.navigate(“ subreport.com”)
在IE.Busy上执行
Application.Wait DateAdd(“ S”,41,现在)
循环
对于文档链接中的每个元素
如果InStr(Element.innerText,“导出视图”)然后
调用元素。点击
退出
如果结束
下一个元素
在IE.Busy上执行
Application.Wait DateAdd(“ S”,180,现在)
循环
Application.Wait(立即+ TimeValue(“ 00:00:08”))
Application.SendKeys“%{s}”
结束子
这是我的带有应用程序sendkeys的代码,它不起作用