Загрузка файла с помощью Inte rnet explorer 11 автоматически с использованием vba - PullRequest
0 голосов
/ 01 февраля 2020

Я пытаюсь загрузить файл, используя InternetExplorer.Application, но всегда открывается окно с просьбой сохранить или открыть файл. Есть ли способ обойти это и запустить и сохранить в фоновом режиме? Вот блок кода, который я пробовал.

Set ie = CreateObject("InternetExplorer.Application")
ie.Navigate "https://pastebin.com/raw/terAweb"
State = 0
Do Until State = 4
DoEvents
State = ie.readyState
Loop
Dim file: file= ie.Document.Body.innerHTML

Ответы [ 2 ]

0 голосов
/ 03 февраля 2020

Пожалуйста, обратитесь к следующему примеру кода, после использования метода getElementbyId, чтобы найти кнопку загрузки, он отобразит приглашение на загрузку, мы могли бы с помощью команды Application.SendKeys "%{s}" нажать кнопку Сохранить.

Sub downloadfile()

        Dim IE As Object, Data As Object
        Dim ticket As String

        Set IE = CreateObject("InternetExplorer.Application")

        With IE
            .Visible = True
            .navigate ("https://dillion132.github.io/default.html")

            While IE.ReadyState <> 4
                DoEvents
            Wend

            'Trigger the download 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.
        'loadingSite
        End With
        Set IE = Nothing
    End Sub

Содержание веб-страницы:

<a id="btnDowloadReport" href="https://research.google.com/pubs/archive/44678.pdf" download>Download</a>
0 голосов
/ 01 февраля 2020

Использование URL Monikers API вместо попытки установить связь с приложением InternetExplorer может быть проще. Это было специально сделано для Pastebin? Потому что на самом деле это не работает, насколько я знаю. Но я думаю, вы можете использовать другой ?

Option Explicit

Private Declare PtrSafe Function URLDownloadToFileA Lib "URLMON" _
 (ByVal pcaller As Long, _
  ByVal szurl As String, _
  ByVal szFileName As String, _
  ByVal dwReserved As Long, _
  ByVal lpfnCB As Long) As LongPtr

Sub Example()
Dim Download$

    On Error GoTo ErrorHandler

    Download = URLDownloadToFileA(0, "myURL", "C:\Users\Name\Downloads\test.txt", 0, 0)

    Exit Sub

ErrorHandler:

    MsgBox Err.Number & " " & Err.Description

End Sub
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...