Excel VBA - 访问网站,生成报表&在IE对话框中按保存。

问题描述 投票:0回答:1

我有一个问题,关于这个主题,已经在其他一些帖子和论坛上讨论过了,但我没有办法让它为我工作。所以我来到这里是想问一下关于我个人代码的问题。

基本上,我访问了一个内部网站,并根据一些输入(通过复选框)创建了一个带有SAP数据的报告。

我的问题出现在报表生成后,IE提示我按对话框中的 "保存 "按钮。我无法实现这部分的自动化。

你能帮助我吗?我想将报告存储在 "下载 "文件夹中。

你会发现我的代码在下面.由于合规的原因,我不能显示原始的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
excel vba internet-explorer web-scraping save-as
1个回答
0
投票

一般情况下,当从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 "文件夹。

© www.soinside.com 2019 - 2024. All rights reserved.