gpt4 book ai didi

excel - 从 URL HTTPS 下载 xls 文件

转载 作者:行者123 更新时间:2023-12-04 20:30:17 25 4
gpt4 key购买 nike

我正在尝试使用 VBA 从请求密码的 URL 下载股票文件。

Sub SaveFileFromURL()

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

mainUrl = "https://wmsukprd.ab-inbev.com/core/Default.html"
fileUrl = "https://wmsukprd.ab-
inbev.com:30004/SupplyChainAdvantage/WAAdvantageDashboard
/ReportPageExport.ashx/ExportDownload?
id=1503&WH_ID=24&Item_Number=%25&Location_ID=%25&hu_id=%25&lot_number=
%25&serial_number=%25&_ww_export_id=d231eb2c-64ad-4ce7-82ca-d53c14ae1f69"

filePath = "C:\Users\barbeavi\Desktop\Samlesbury\Stock.csv"

myuser = "my login"
mypass = "******"

strAuthenticate = "start-url=%2F&user=" & myuser & "&password=" & mypass &
"&switch=Log+In"

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

WHTTP.Open "POST", mainUrl, False
WHTTP.setRequestHeader "Content-Type", "application/x-www-form-urlencoded"
WHTTP.Send strAuthenticate

'GET direct file url
WHTTP.Open "GET", fileUrl, False
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

我收到消息错误

Run-time error '-2147012866 (80072efe)':
The connection with the server was terminated abnormally



在以下行:
WHTTP.Send strAuthenticate

问题可能来自 HTTP 小号 因为我在一个不安全的页面上尝试了相同的代码,但它在这里工作。

最佳答案

如果您在 Windows 7 或 8 上遇到此问题,则很可能与 VBA 使用 SSL 协议(protocol)发送数据有关,该协议(protocol)被仅接受 TLS 的服务器丢弃。

我一直在面临 Windows 7 客户端上的 TLS 问题,并根据下面总结的 Microsoft 文章进行了一轮修复:

步骤 1. 获取 Microsoft 更新 KB3140245:
下载相关(32位或64位用户Windows版本)
Microsoft Security Protocol Update如果尚未安装,请安装。

步骤 2. 下载 Microsoft Easy Fix:
从以下位置下载 Microsoft “Easy Fix”
Microsoft Support Article , 并执行以将 TLS 1.1+ 设置为默认值。

然而,后来,我又遇到了另一轮类似的问题,这让我意识到微软页面上的修复工具不会设置所有的注册表项(缺少 SChannel 注册表项)。因此,我设法将一些脚本放在一起,通过设置 Internet 选项和 SChannel 来进行完整修复。需要添加 TLS1.1/1.2 的 SChannel 注册表项,以便为 Winhttp 设置默认启用 TLS。

WinHttp key :

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Internet Settings\WinHttp
==> DWORD DefaultSecureProtocols=0x00000A00 (32-bits and 64-bits)

HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\Windows\CurrentVersion\Internet Settings\WinHttp
==> DWORD DefaultSecureProtocols=0x00000A00 (64-bits)

channel 键:
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\TLS 1.1\Client 
==> DWORD DisabledByDefault=0x00000000

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\TLS 1.2\Client
==> DWORD DisabledByDefault=0x00000000

全面修复 : Microsoft 补丁没有修复所有注册表项以更新 WinHTTP 默认值并跳过 SChannel 项。因此,如果两步修复 abpve 没有解决问题,这个 github 项目包含 powershell 脚本,用于下载并应用上面列出的所有必需的注册表修改,并且可能有助于更全面的一次性修复: Winttp-TLS

关于excel - 从 URL HTTPS 下载 xls 文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51984721/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com