ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

搜索
EH技术汇-专业的职场技能充电站 妙哉!函数段子手趣味讲函数 Excel服务器-会Excel,做管理系统 效率神器,一键搞定繁琐工作
HR薪酬管理数字化实战 Excel 2021函数公式学习大典 Excel数据透视表实战秘技 打造核心竞争力的职场宝典
让更多数据处理,一键完成 数据工作者的案头书 免费直播课集锦 ExcelHome出品 - VBA代码宝免费下载
用ChatGPT与VBA一键搞定Excel WPS表格从入门到精通 Excel VBA经典代码实践指南
查看: 1363|回复: 8

[求助] WIN7系统excelVBA抓取网页数据send命令出错提示“无法建立连接”

[复制链接]

TA的精华主题

TA的得分主题

发表于 2023-3-27 21:46 | 显示全部楼层 |阅读模式
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
代码如下:
temp = "https://portal.ccsa.cn/rp/paas/pm/projectReportDrill/getProjBasicDrillVOById.do?projCode=" & Cells(3, 3)
   
    ' Login
    Set postReq = CreateObject("Msxml2.ServerXMLHTTP.6.0")
    'Set postReq = CreateObject("Msxml2.XMLHTTP.6.0")
    postReq.Open "GET", temp, False
    postReq.setRequestHeader "Cookie", cookies
    postReq.setRequestHeader "Content-type", "application/json;charset=UTF-8" 'send appropriate Headers
    postReq.send  ' send login info

执行到send命令时提示“无法建立连接”

我在家里win10系统下就可以运行并获取数据,在公司win7电脑里就提示错误,哪位知道是怎么回事?

TA的精华主题

TA的得分主题

发表于 2023-3-28 06:55 | 显示全部楼层
IE重新安装试一下

TA的精华主题

TA的得分主题

发表于 2023-3-28 12:31 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册

TA的精华主题

TA的得分主题

 楼主| 发表于 2023-3-28 17:56 | 显示全部楼层
image.png
win10、win11里运行1楼的代码都没问题,就是在我这台win7的电脑上就提示“无法与服务器建立连接”。这个跟ie11有关系吗?我的这个网站用ie11打不开,用chrome可以打开。360浏览器极速模式可以打开,兼容模式打不开。代码是需要先在chrome里登录,手动获取到cookie后复制到excel里,excel vba再使用cookie登录进去抓取数据。

TA的精华主题

TA的得分主题

 楼主| 发表于 2023-3-28 17:57 | 显示全部楼层
本帖最后由 zhystudio 于 2023-3-28 18:10 编辑

我用的Msxml2.ServerXMLHTTP.6.0,没找到有遇到过这个问题的答案

TA的精华主题

TA的得分主题

发表于 2023-3-29 19:15 | 显示全部楼层
zhystudio 发表于 2023-3-28 17:56
win10、win11里运行1楼的代码都没问题,就是在我这台win7的电脑上就提示“无法与服务器建立连接”。这个 ...

用别的对象 WinHttpRequest,或者 启用更高版本的 TLS 协议
222.png

TA的精华主题

TA的得分主题

 楼主| 发表于 2023-3-29 22:22 | 显示全部楼层
perfect131 发表于 2023-3-29 19:15
用别的对象 WinHttpRequest,或者 启用更高版本的 TLS 协议

测试了一下,
在win10下
Set postReq = CreateObject("WinHttp.WinHttpRequest.5.1")
postReq.Option(9) = 2048   'TLS1.2
正常运行

但是改为
Set postReq = CreateObject("WinHttp.WinHttpRequest.5.1")
postReq.Option(9) = 512   'TLS1.1
就不行了,提示无法与服务器建立连接。

在win7里
postReq.Option(9) = 512   'TLS1.1   可以执行下去,但是后面会提示无法与服务器建立连接。
改为 postReq.Option(9) = 2048   'TLS1.2  后运行该条程序会直接提示“运行时错误 5,无效的过程调用或参数”

问题应该就是在TLS1.2这里,但是win7里创建WinHttp.WinHttpRequest.5.1对象后,不让用TLS1.2

TA的精华主题

TA的得分主题

 楼主| 发表于 2023-3-29 22:23 | 显示全部楼层

TA的精华主题

TA的得分主题

 楼主| 发表于 2023-3-29 23:53 | 显示全部楼层
解决了:
1、需要安装1个win7的补丁;
2、修改注册表,设置默认的安全协议使用TSL1.2

让windows7支持
补丁地址:http://www.catalog.update.microsoft.com/search.aspx?q=kb3140245
下载自己的版本对应的,安装之后重启,然后要设置注册表,以 win7x64 为例:

Windows Registry Editor Version 5.00
[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Internet Settings\WinHttp]
“DefaultSecureProtocols”=dword:00000a00
[HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\Windows\CurrentVersion\Internet Settings\WinHttp]
“DefaultSecureProtocols”=dword:00000a00
[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Internet Settings]
“SecureProtocols”=dword:00000a80
[HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Internet Settings]
“SecureProtocols”=dword:00000a80
如果自己添加不来,微软也提供了工具:http://download.microsoft.com/do ... oftEasyFix51044.msi

运行完成后重启即可。

评分

1

查看全部评分

您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

手机版|关于我们|联系我们|ExcelHome

GMT+8, 2024-11-22 12:38 , Processed in 0.046876 second(s), 11 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

沪公网安备 31011702000001号 沪ICP备11019229号-2

本论坛言论纯属发表者个人意见,任何违反国家相关法律的言论,本站将协助国家相关部门追究发言者责任!     本站特聘法律顾问:李志群律师

快速回复 返回顶部 返回列表