如何使用excel vba从Web浏览器下载pdf.php文件

问题描述 投票:1回答:1

您好我正在尝试从Web浏览器下载名为“view.pdf.php文件的文件并将其另存为pdf文件。(在Web浏览器中单击打印图标时获取文件,它会在另一个浏览器中打开.pdf.php文件)

尝试从堆栈溢出的一些样本,但无法以正确的格式下载。

代码尝试:

Declare Function URLDownloadToFile _
Lib "urlmon" Alias "URLDownloadToFileA" _
(ByVal pCaller As Long, ByVal szURL As String, _
ByVal szFileName As String, ByVal dwReserved As Long, ByVal lpfnCB As Long) As Long
Function DownloadFile(URL As String, LocalFileName As String) As Boolean
Dim lngRetVal As Long
lngRetVal = URLDownloadToFile(0, URL, LocalFileName, 0, 0)
If lngRetVal = 0 Then DownloadFile = True
End Function
Sub Test()
DownloadFile "https://app.goscripts.com/vendor/viewreferral.php?Id=XXXXX", "\\test\test.pdf"

End Sub

当试图打开下载的文件时,它显示为“Adobe Acrobat Reader无法打开'test.pdf',因为它不是受支持的文件类型或因为文件已损坏”请帮我修复此错误。

excel vba excel-vba
1个回答
1
投票

找到另一种从Web浏览器保存文件的方法, 码:

Const OLECMDEXECOPT_DODEFAULT = 0
Const OLECMDEXECOPT_PROMPTUSER = 1
Const OLECMDEXECOPT_DONTPROMPTUSER = 2
Const OLECMDEXECOPT_SHOWHELP = 3
Const OLECMDID_SAVEAS = 4
Const PRINT_WAITFORCOMPLETION = 2


Sub Sample()
Dim objIE, sh As Object
Set objIE = CreateObject("InternetExplorer.Application")
objIE.Navigate "https://123.com/vendor/vieworder.pdf.php?OrderId=XXXX"
objIE.Visible = True
Do While objIE.ReadyState <> 4
DoEvents
Loop
objIE.ExecWB OLECMDID_SAVEAS, OLECMDEXECOPT_DODEFAULT
Set sh = CreateObject("WScript.Shell")
sh.AppActivate "Save AS"
Application.Wait (Now + TimeValue("00:00:02"))
sh.SendKeys "done", 1
sh.SendKeys ("{ENTER}")
objIE.Quit
End Sub

感谢您的支持

© www.soinside.com 2019 - 2024. All rights reserved.