Как нажать на кнопку загрузки во время изучения PDF в IE11 через Excel VBA - PullRequest
0 голосов
/ 27 сентября 2018

Sub Drop_Down () Dim objIE As Object, ele As Object, opt As Set Set objIE = CreateObject ("InternetExplorer.Application")

objIE.Visible = True
objIE.navigate "https://isgs-oas.isgs.illinois.edu/reports/rwservlet?oil_permit_activity"

Do While objIE.Busy = True Or objIE.readyState <> 4: DoEvents: Loop

Set ele = objIE.document.getElementsByTagName("INPUT")

For Each opt In ele
    If opt.getAttribute("name") = "p_YEAR" Then
        opt.Focus
        opt.Value = "2018"
        Exit For
    End If
Next opt

Set ele = objIE.document.getElementsByTagName("select")

For Each opt In ele
    If opt.getAttribute("name") = "p_MONTH" Then
        opt.Focus
        opt.Value = "January"
        Exit For
    End If
Next opt
objIE.document.forms(0).submit
Do While objIE.Busy: DoEvents: Loop

«Пожалуйста, помогите здесь»Хотите скачать PDF-файл сейчас

End Sub

Ответы [ 2 ]

0 голосов
/ 28 сентября 2018

Я сконструировал URL, просматривая месяцы и годы и преобразовывая их в строки, которые затем соединял с основанием URL.Я догадался, с какого года вы хотите начать, что вы увидите в декларации «За год =».

List of PDFs

Sub DownloadFile()
Dim WinHttpReq As Object
Dim oStream As Object
Dim myURL As String
Dim LocalFilePath As String
Dim month As String
Dim year As Integer
Dim monthNo As Integer

For year = 2010 To 2018
    For monthNo = 1 To 12
        month = MonthName(monthNo)
            myURL = "https://isgs-oas.isgs.illinois.edu/reports/rwservlet?hidden_run_parameters=oil_permit_activity&p_MONTH=" & month & "&p_YEAR=" & CStr(year)
            LocalFilePath = Environ("USERPROFILE") & "\Desktop\rwservlet\oil_permit_activity_" & month & "_" & CStr(year) & ".pdf"

                Set WinHttpReq = CreateObject("Microsoft.XMLHTTP")
                WinHttpReq.Open "GET", myURL, False, "", ""  '("username", "password")
                WinHttpReq.send

                If WinHttpReq.Status = 200 Then
                    Set oStream = CreateObject("ADODB.Stream")
                    oStream.Open
                    oStream.Type = 1
                    oStream.Write WinHttpReq.responseBody
                    oStream.SaveToFile LocalFilePath, 2 ' 1 = no overwrite, 2 = overwrite
                    oStream.Close
                End If
    Next monthNo
Next year
End Sub

приведенный выше код работал для меня, но вы должны убедиться, что папка «rwservlet» существует на вашем рабочем столе, иначе она выдаст ошибку (я не очень хорош в обработке ошибок, но мы все учимся).В противном случае вы можете изменить строку LocalFilePath.

0 голосов
/ 27 сентября 2018

Если вы уже знаете имена параметров запроса, вы можете создать свой URL автоматически.Я использовал инспектор Chrome, чтобы найти URL для примера выше («https://isgs -oas.isgs.illinois.edu / reports / rwservlet? Hidden_run_parameters = oil_permit_activity & p_MONTH = январь & p_YEAR = 2018 »).

*)1005 * Вы можете переделать свой сценарий, чтобы автоматически создать URL из параметров, а затем использовать один из нескольких существующих сценариев «сохранить файл из URL».Вот что я нашел здесь на SE: ​​ Загрузка файла в VBA и его сохранение

Надеюсь, это поможет:)

...