Как нажать кнопку сохранения в IE11 после загрузки файла Excel с сайта - PullRequest
0 голосов
/ 20 октября 2019

Я загружаю файл 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 голосов
/ 31 октября 2019

Sub test ()

Dim IE As Object

Dim doc As HTMLDocument

Dim startDateText As Object, endDateText As Object

Dim Element AsHTMLLinkElement

Установить IE = новый InternetExplorer

IE.Visible = True

IE.navigate ("dailyreports.com")

Делать пока IE.Busy

Application.Wait DateAdd ("S", 1, Now)

Loop

Set doc = IE.document

doc.getElementById ("login)") .Value =" xxxx "

doc.getElementById (" пароль "). Value =" yyyy "

doc.getElementById (" loginButton "). Нажмите

Делать пока IE.Busy

Application.Wait DateAdd ("S", 1, сейчас)

Loop

IE.navigate ("subreport.com")

Делать пока IE.Busy

Application.Wait DateAdd ("S", 41, сейчас)

Цикл

Для каждого элемента в документе. Ссылки

Если InStr (Element.innerText, «Export View»), то

Вызовите Element.Click

Выход для

End If

Следующий элемент

Делать пока IE.Busy

Application.Wait DateAdd ("S", 180, сейчас)

Loop

Application.Wait (Now + TimeValue ("00:00:08"))

Application.SendKeys "% {s}"

End Sub

Это мой код с приложением sendkeys, и он не работает

0 голосов
/ 21 октября 2019

Пожалуйста, обратитесь к следующему коду, прежде чем нажать кнопку «Сохранить» в приглашении на загрузку, мы могли бы дождаться появления приглашения, затем с помощью команды 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>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...