Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/google-sheets/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
通过具有默认凭据的代理从Excel发出http get请求_Excel_Vba_Proxy - Fatal编程技术网

通过具有默认凭据的代理从Excel发出http get请求

通过具有默认凭据的代理从Excel发出http get请求,excel,vba,proxy,Excel,Vba,Proxy,我想从网站(某种类型的webrequest)和Excel中获取数据,唯一的问题是我坐在代理后面,不想硬编码用户名和密码 有没有一种方法可以从当前用户处获取默认代理并设置凭据,而无需对其进行硬编码 换言之:我想使用当前登录Windows计算机的用户对代理进行身份验证 以下是相关代码: Set objHTTP=CreateObject(“MSXML2.ServerXMLHTTP.6.0”) URL=”http://stackoverflow.com/" objHTTP.Open“GET”,URL,F

我想从网站(某种类型的webrequest)和Excel中获取数据,唯一的问题是我坐在代理后面,不想硬编码用户名和密码

有没有一种方法可以从当前用户处获取默认代理并设置凭据,而无需对其进行硬编码


换言之:我想使用当前登录Windows计算机的用户对代理进行身份验证

以下是相关代码:

Set objHTTP=CreateObject(“MSXML2.ServerXMLHTTP.6.0”)
URL=”http://stackoverflow.com/"
objHTTP.Open“GET”,URL,False
'如果可能,我希望获得默认代理设置
objHTTP.setProxy 2,“代理:8282”
“我不习惯设定这条线
objHTTP.setProxyCredentials“用户名”、“密码”
objHTTP.setRequestHeader“用户代理”、“Mozilla/4.0(兼容;MSIE 6.0;Windows NT 5.0)”
objHTTP.send(“”)
我在谷歌上搜索过,但我能找到一个明确的答案,或者是一个替代方案


它应该在Windows环境下运行。任何帮助和/或提示都将不胜感激。

我目前找不到更好的解决方案,但这是一个快速且“脏”的解决方案,它可以与“标准”组件一起工作

由于代理是为Internet Explorer设置的,因此对于每个用户

1)添加网络浏览器控件

Private Sub browser_DocumentComplete(ByVal pDisp As Object, URL As Variant)
    Debug.Print browser.Document.body.innerHTML
End Sub

Private Sub Worksheet_Activate()
    browser.Navigate "stackoverflow.com"
End Sub
' Tested on Win7 with Excel 2010

2)设置控件的属性
名称:浏览器,可选更改大小,使其不可见

3)使用浏览器控件将此代码写入工作表中

Private Sub browser_DocumentComplete(ByVal pDisp As Object, URL As Variant)
    Debug.Print browser.Document.body.innerHTML
End Sub

Private Sub Worksheet_Activate()
    browser.Navigate "stackoverflow.com"
End Sub
' Tested on Win7 with Excel 2010

代码的反应有时有点模糊(javascript错误,…),但它使用代理和登录用户

更新1:

对于Internet Explorer没有代理设置的其他情况,可以通过使用注册表项设置代理来关闭此设置(非常糟糕的解决方法)

HKCU\Software\Microsoft\Windows\CurrentVersion\Internet Settings\ProxyEnable
HKCU\Software\Microsoft\Windows\CurrentVersion\Internet Settings\ProxyServer
尽管如此,应用程序必须终止所有正在运行的IE,然后启动浏览器

免责声明:我没有尝试过这一点(这只是我的一个想法),因为对于我的>>需求来说,上述解决方案已经足够了,而且在我看来非常>>激进/危险,可能/应该有更好的方法


“设置当前用户的凭据”确切地说是什么意思?IE代理设置?凭证管理器设置?Sg else?我想使用当前登录Windows计算机的用户对代理进行身份验证。网络是否用于代理设置?我不知道。必须在所有配置中输入代理,而不是自动查找。这是我的环境的一个非常特定的解决方案,因为Internet Explorer代理设置是使用组策略推出的。