VBA - Как вызвать кнопку Сохранить для открытого PDF в IE11 (без Sendkeys) - PullRequest
0 голосов
/ 28 марта 2019

Я новичок в программировании, и это мой первый вопрос. Заранее спасибо за вашу поддержку.

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

Поскольку у меня нет URL, я не смог использовать опцию URLDownloadToFile. Эта опция также повреждает PDF-файлы, и она не работает для меня. Я не смог использовать XMLHTTP, поскольку он также требует URL.

Если у вас нет других предложений, я думаю, что кнопка «Сохранить», появляющаяся на рамке PDF, открытого в IE, могла бы стать решением. Я не хотел использовать ключи отправки, так как это будет процесс, запущенный, пока компьютер заблокирован. Я уже знаю, как управлять окном «Сохранить как». Я не знаю, как вызвать кнопку Сохранить. Может кто-нибудь показать мне, как это сделать?

! [IE PDF Screen] [Это кнопка, которую я хочу вызвать] 1

1 Ответ

0 голосов
/ 28 марта 2019

Проверьте код веб-сайта, который загружает PDF, есть большая вероятность, что URL-адрес PDF может быть где-то там, если это так, вы можете использовать VBA, чтобы войти на этот сайт и получить URL-адрес из кода,после получения URL вы можете попробовать использовать библиотеку URLmon, которая позволяет загружать файлы / веб-сайты на основе URL.Ниже приведен код для загрузки, вы упомянули, что вы новичок в программировании, вам нужно будет найти код, чтобы открыть веб-сайт, перейти к нему и найти URL-адрес в HTML-коде.(Опять же, прежде чем приступить к созданию этого кода, сначала вручную проверьте HTML-код, чтобы убедиться, что URL-адрес pdf находится где-то там).

Option Explicit 
Private Declare 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 Long 

Public Sub DownloadPDF()
    getFile "http://www.website.com/path/file.pdf", "C:\Downloads\filename.pfd"
    if getFile = True Then MsgBox "Download success"
End Sub

Function getFile(URL As String, LocalFilename As String) As Boolean 
    Dim downloadCheck As Long
    'We need a long variable because the library returns a number if the file downloaded or if it failed.
    downloadCheck = URLDownloadToFileA(0, URL, LocalFilename, 0, 0)
    'Check if the number is 0, if so, the file downloaded fine.
    If downloadCheck = 0 Then getFile = True 
End Function
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...