从网站下载Excel文件后如何在IE11中单击保存按钮

时间:2019-10-20 15:36:39

标签: vba internet-explorer web-scraping download

我正在从特定的网站下载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单击“保存”按钮。

2 个答案:

答案 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的代码,它不起作用