Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/excel/25.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Excel 从https URL下载图像_Excel_Vba_Image_Ms Access_Winhttprequest - Fatal编程技术网

Excel 从https URL下载图像

Excel 从https URL下载图像,excel,vba,image,ms-access,winhttprequest,Excel,Vba,Image,Ms Access,Winhttprequest,我正在尝试使用MSExcel或MSAccess中的VBA使用用户名和密码从HTTPS网站下载图像 使用Windows照片查看器打开时,图像显示以下消息: Windows照片查看器无法打开图片,因为文件似乎已损坏、损坏或太大 看起来这张图片根本没有下载 Option Explicit Sub SaveFileFromURL() Dim FileData() As Byte Dim FileNum As Long Dim WHTTP As Object Dim mainUrl As String

我正在尝试使用MSExcel或MSAccess中的VBA使用用户名和密码从HTTPS网站下载图像

使用Windows照片查看器打开时,图像显示以下消息:

Windows照片查看器无法打开图片,因为文件似乎已损坏、损坏或太大

看起来这张图片根本没有下载

Option Explicit

Sub SaveFileFromURL()

Dim FileData() As Byte
Dim FileNum As Long
Dim WHTTP As Object
Dim mainUrl As String, fileUrl As String, filePath As String, myuser As String, mypass As String
Dim strAuthenticate As String

mainUrl = "https://secure.brandbank.com/login.aspx?"
fileUrl = "https://productlibrary.brandbank.com/image/gallerylarge/3520198"

' OR fileUrl = "https://productlibrary.brandbank.com/LabelImage/ViewLabel?pvid=3520198"

filePath = "D:\DOWNLOADS\SYS\test.jpg"

' dummy UN, PW    
myuser = "admin"
mypass = "Password"

'strAuthenticate = "start-url=%2F&user=" & myuser & "&password=" & mypass & "&switch=Log+In"
'strAuthenticate = "txtemail=myuser&txtpassword=mypass&cookieCheck=true"

Set WHTTP = CreateObject("WinHTTP.WinHTTPrequest.5.1")

'I figured out that you have to POST authentication string to the main website address not to the direct file address
WHTTP.Option(6) = False      'WinHttpRequestOption_EnableRedirects
WHTTP.Open "POST", mainUrl, False 'WHTTP.Open "POST", fileUrl, False
'WHTTP.SetRequestHeader "Content-Type", "application/x-www-form-urlencoded"
WHTTP.SetRequestHeader "Content-Type", "multipart/form-data"
'WHTTP.Send strAuthenticate

'Then you have to GET direct file url
WHTTP.Open "GET", fileUrl, False, myuser, mypass
WHTTP.Send

FileData = WHTTP.ResponseBody
Set WHTTP = Nothing

'Save the file
FileNum = FreeFile
Open filePath For Binary Access Write As #FileNum
    Put #FileNum, 1, FileData
Close #FileNum

MsgBox "File has been saved!", vbInformation, "Success"

End Sub

这段代码使用HTTP访问。如何修改它以从此HTTPS站点下载图像?

我在那里看不到任何Excel或Excel VBA详细信息。可能有一些访问VBA那里,但我不使用访问,所以可能是错误的。请删除Excel标记。Hi@MarkFitzgerald此VBA代码位于Excel文件中,因此标记无效。但是,我认为它也应该在Access中工作,因为它不是特定于Access的。如果您仍然希望我删除标记,请告诉我。好的,您可以在Excel或Access VBA中使用它,因此Excel VBA或Access VBA标记可能比应用程序标记更好?@MarkFitzgerald done。