用于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