Excel VBA - доступ к веб-сайту, создание отчета и сохранение в диалоговом окне IE - PullRequest
0 голосов
/ 23 апреля 2020

У меня есть вопрос относительно топи c, который уже обсуждался в некоторых других темах и на форумах, но мне не удается заставить его работать на меня. Поэтому я пришел сюда, чтобы задать вопросы, касающиеся моего индивидуального кода.

По сути, я обращаюсь к сайту intr anet и на основе некоторых входных данных (через флажки) создается отчет с данными из 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

1 Ответ

0 голосов
/ 23 апреля 2020

Как правило, при загрузке файла из браузера 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, убедитесь, что Путь к загрузке - папка «Загрузки».

...