小编use*_*971的帖子

VBA WinHTTP从密码保护的https网站下载文件

我正在尝试使用WinHTTP从https密码保护的站点保存文件.这是代码:

Sub SaveFileFromURL()

Dim FileNum As Long
Dim FileData() As Byte
Dim WHTTP As Object

fileUrl = "https://www.website.com/dir1/dir2/file.xls"
filePath = "C:\myfile.xls"

myuser = "username"
mypass = "password"

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

WHTTP.Open "GET", fileUrl, False
WHTTP.SetCredentials myuser, mypass, HTTPREQUEST_SETCREDENTIALS_FOR_SERVER
WHTTP.Send

FileData = WHTTP.ResponseBody
Set WHTTP = Nothing

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
Run Code Online (Sandbox Code Playgroud)

问题在于身份验证.该文件正在保存,但是当我在Excel中打开它时,它只是html登录页面而不是实际文件.如果我复制直接文件URL并将其粘贴到浏览器地址栏中并且我没有登录到网页,效果是一样的.我看到了登录页面.然后,如果我输入我的登录名和密码,下载窗口将显示允许我保存文件.

所以我认为SetCredentials部分代码不能正常工作,如果我调试.打印WHTTP.ResponseBody它是html代码而不是实际文件数据.

有没有办法将用户标识和密码传递给WinHTTP,以便我能够正确保存文件?

这是页面地址:

https://sst.msde.state.md.us/
Run Code Online (Sandbox Code Playgroud)

=======================编辑:========================

所以我今天玩了一点,我想我正在向前迈进.这就是我得到的.我像这样修改了代码: …

excel internet-explorer vba download winhttp

4
推荐指数
1
解决办法
3万
查看次数

标签 统计

download ×1

excel ×1

internet-explorer ×1

vba ×1

winhttp ×1