Страницы: 1
RSS
Сохранить отчёт из https://bo.nalog.ru/ VBA
 
Добрый день!

Прошу помощи, нужно скачать pdf файл с сайта по ссылке.

Вроде кучу тем на эту тему, но уже десятки кодов испробовал и толку ноль....
Не помогает и URLDownloadToFile и GetHTTPResponse пробовал вытащить....
Находил код открытия через интернетЭкспловер и эмуляция "Сохранить", но нет...

Вот ссылка: https://bo.nalog.ru/download/bfo/pdf/11175198?period=2020

Спасайте, уже закипел....
Всё что мы есть - это результат наших мыслей ©Будда
 
Павел Баскаков, добрый день!
В этой теме про скачивание с этого сайта pdf файла, правда там скачивается информация по организации по ИНН. Мне в свое время этот макрос (который из второго сообщения в теме) помог при скачивании с этого сайта, может и Вы подчерпнете что-то.
upd. А ну хотя сайт-то другой :) но, думаю, принцип скачивания pdf такой же будет.
Изменено: whateverlover - 15.10.2022 15:21:01
 
Цитата
написал:
Павел Баскаков, добрый день!
В  этой  теме про скачивание с этого сайта pdf файла, правда там скачивается информация по организации по ИНН. Мне в свое время этот макрос (который из второго сообщения в теме) помог при скачивании с этого сайта, может и Вы подчерпнете что-то.
upd. А ну хотя сайт-то другой  но, думаю, принцип скачивания pdf такой же будет.
Спасибо за ссылку!

Там чуть чуть другой принцип - по нажатию на кнопку происходит скачивание.
У меня же именно открывается в браузере как документ - и вот потом надо скачать.
Думал ерунда- легко будет, но нет)))
Всё что мы есть - это результат наших мыслей ©Будда
 
Доверьтесь профессионалу - вызовите curl:
Код
curl -o C:\temp\myfile.pdf  https://bo.nalog.ru/download/bfo/pdf/11175198?period=2020
Владимир
 
sokol92, Интересный подход!
В VBA я так понимаю через shell запускается.
Пробую просто через командную строку запустить выдаёт
curl: (35) schannel: next InitializeSecurityContext failed: Unknown error (0x80092012) - Функция отзыва не смогла произвести проверку отзыва для сертификата.

Что то не так делаю?
Всё что мы есть - это результат наших мыслей ©Будда
 
Цитата
написал:
Доверьтесь профессионалу - вызовите  curl :
Код
    [URL=#]?[/URL]       1      curl -o C:\temp\myfile.pdf   https://bo.nalog.ru/download/bfo/pdf/11175198?period=2020    
 
Всё, нашёл что было не так.
Чуть чуть допилил напильником и заработало!
Нужно отключить сертификат.
Спасибо за отличный способ, а то голову сломал уже)  
Код
curl -o C:\temp\myfile.pdf  https://bo.nalog.ru/download/bfo/pdf/11175198?period=2021 --ssl-no-revoke
Изменено: Павел Баскаков - 15.10.2022 23:11:35
Всё что мы есть - это результат наших мыслей ©Будда
 
Вариант:
Код
Function Url2File(sUrlFile As String, sPathName As String, Optional sLogin As String, Optional sPassword As String) As Boolean
'ZVI:2022-10-16 https://www.planetaexcel.ru/forum/index.php?PAGE_NAME=read&TID=152767
  Dim FN As Integer
  On Error GoTo exit_
  If Dir(sPathName) <> "" Then Kill sPathName
  With CreateObject("MSXML2.XMLHTTP")
    .Open "GET", sUrlFile, False, sLogin, sPassword
    .send
    If .Status <> 200 Then Exit Function
    FN = FreeFile
    Open sPathName For Binary Access Write As #FN
    Put #FN, , .responseBody
exit_:
    If FN Then Close #FN
    Url2File = .Status = 200
  End With
End Function

Sub PdfFromUrl()
  
  Dim sUrl As String, sFileName As String
  Dim sId As String, sPeriod As String
  
  ' Build sUrl
  sId = "11175198"
  sPeriod = "2020"
  sUrl = "https://bo.nalog.ru/download/bfo/pdf/" & sId & "?period=" & sPeriod
  
  ' Build FileName:  11175198-2020.pdf 
  sFileName = ThisWorkbook.Path & "\" & sId & "-" & sPeriod & ".pdf"
  
  ' Download & Show result
  If Url2File(sUrl, sFileName) Then
    MsgBox "Downloaded file:" & vbLf & sFileName, vbInformation, "Success"
  Else
    MsgBox "Can't download from" & vbLf & sUrl, vbCritical, "Error"
  End If
  
End Sub
Изменено: ZVI - 16.10.2022 10:50:31
 
ZVI, Спасибо!

Тоже работает!
Всё что мы есть - это результат наших мыслей ©Будда
Страницы: 1
Читают тему
Наверх