用于https资源的Excel VBA URLDownloadToFile错误
我尝试使用VBA从Excel中的服务器下载文件。 这在使用http时可以正常工作,但不能使用https。
我可以在Internet Explorer中同时访问两个地址(http / https)。 如果我使用URLDownloadToFile与http地址下载文件。
当使用https地址,我得到的返回码-2146697211。 也许这是一个证书问题?
干杯,
弗雷德里克
码:
Private Declare Function URLDownloadToFile Lib“urlmon”_ 别名“URLDownloadToFileA”(ByVal pCaller只要,_ ByVal szURL作为string,ByVal szFileName作为string,_ ByVal dwReserved As Long,ByVal lpfnCB As Long)As Long Dim Ret As Long Sub DownloadCode() Dim strURL As String 昏暗的strPath作为string strURL =“https:/url.de/module.bas” strPath = Environ(“TEMP”)&“\ Module.bas” Ret = URLDownloadToFile(0,strURL,strPath,0,0) 如果Ret = 0那么 “MsgBox”文件成功下载“ 其他 MsgBox“Returncode:”&Ret&“无法在此处下载Code`enter代码。” 万一 结束小组
如果任何其他人有这个问题:我的问题是,服务器期望一个客户端证书。 正常情况下,https调用不是VB的问题。 对于自签名证书,必须从文件系统或Windows证书商店发送证书。
Dim oStream As Object Dim myURL As String myURL = "URL" Dim WinHttpReq As Object Set WinHttpReq = CreateObject("WinHttp.WinHttpRequest.5.1") WinHttpReq.Option(4) = 13056 ' Ignore SSL Errors WinHttpReq.Open "GET", myURL, False ' Grab Cert from Windows Cert Store 'WinHttpReq.SetClientCertificate "CURRENT_USER\Root\CERTI" WinHttpReq.setRequestHeader "Accept", "*/*" WinHttpReq.setRequestHeader "User-Agent", "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0)" WinHttpReq.setRequestHeader "Proxy-Connection", "Keep-Alive" WinHttpReq.Send myURL = WinHttpReq.ResponseBody If WinHttpReq.Status = 200 Then Set oStream = CreateObject("ADODB.Stream") oStream.Open oStream.Type = 1 oStream.Write WinHttpReq.ResponseBody oStream.SaveToFile Environ("TEMP") & "\File", 2 oStream.Close Else MsgBox "Returncode:" & WinHttpReq.Status & " Unable to download Code." End If