Microsoft.XMLHTTP请求在Excel VBA正常,VS Code中触发安全错误
问题:Excel VBA可正常运行的代码在VS Code中触发MSXML3.DLL安全错误
以下VBA代码在Excel模块中可正常执行:
Sub test() Dim restReq, url, apiKey url = "https://some.server.com/?param1=123" apiKey = "123342545" Set restReq = CreateObject("Microsoft.XMLHTTP") restReq.Open "GET", url, False restReq.SetRequestHeader "accept", "application/json" restReq.SetRequestHeader "X-ApiKey", apiKey restReq.send ("") 'MsgBox restReq.getAllResponseHeaders MsgBox restReq.responseText End Sub
但在Visual Studio Code中运行完全相同的代码时,会抛出如下错误:
MSXML3.DLL A security problem occurred.
可能的差异原因
- 运行环境安全权限不同:Excel作为Office套件成员,拥有专属安全策略和权限沙箱,对MSXML组件的网络请求限制更宽松;而VS Code中运行VBA通常依赖第三方插件,执行环境的系统安全约束更严格,跨域或HTTPS请求被拦截。
- MSXML组件版本差异:Excel可能默认调用更高版本的MSXML组件(如MSXML6.DLL),而VS Code中通过
CreateObject("Microsoft.XMLHTTP")可能加载了老旧的MSXML3.DLL,该版本对现代TLS协议(如TLS 1.2及以上)支持不足,导致HTTPS证书验证失败。 - 网络配置不一致:Excel会自动继承系统代理并适配企业安全认证,而VS Code的运行环境可能未正确加载代理配置,或者代理服务器对非Office程序的请求额外拦截,触发MSXML3的安全报错。
- 信任配置不共享:Office信任中心可能已将目标服务器证书加入信任列表,VS Code的运行环境未继承该配置,MSXML3验证服务器证书时无法通过,从而抛出安全问题提示。
内容的提问来源于stack exchange,提问作者Prefect73
相关产品推荐
相关产品推荐

