使用WinHTTP和Excelconfiguration代理

我正在使用WinHTTP在Excel VBAmacros中执行GET请求。 但是,如果我尝试使用代理服务器在networking中执行请求,则不起作用。 如果我手动configuration它,它可以工作,但我不认为将使用我正在开发的工具的人会知道他们的代理服务器。

有没有办法自动configuration代理服务器,或从Windows获取代理configuration? 这里有一个示例代码:

Dim result As String Dim URL As String Dim winHttpReq As Object Set winHttpReq = CreateObject("WinHttp.WinHttpRequest.5.1") URL = "http://google.com/" winHttpReq.Open "GET", URL, False winHttpReq.setRequestHeader "User-Agent", "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0)" winHttpReq.setProxy 2, "proxyserver:8080", "" winHttpReq.send result = winHttpReq.responseText 

在这种情况下,我不想强​​制用户find“proxyserver:8080”地址 – 我想要的是自动填充的方法。

非常感谢。

我从下面的链接中获得了下面的vbScript。 您可以使用获取代理服务器并将其作为variables传递给“proxyserver:8080”的代码:

http://www.activexperts.com/activmonitor/windowsmanagement/scripts/networking/client/retrieving/

如果您知道vbScript – 这与VBA非常相似,我认为这应该会有很大帮助。 如果您在VBA中需要帮助,请告诉我。

 On Error Resume Next strComputer = "." Set objWMIService = GetObject("winmgmts:" _ & "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2") Set colItems = objWMIService.ExecQuery("Select * from Win32_Proxy") For Each objItem in colItems Wscript.Echo "Proxy Port Number: " & objItem.ProxyPortNumber Wscript.Echo "Proxy Server: " & objItem.ProxyServer Wscript.Echo "Server Name: " & objItem.ServerName Wscript.Echo Next 

如果有人在这个页面上绊倒寻找对这个问题的答案,我想指出这个答案 ,其中提到使用VBA-Web项目来解决这个确切的问题。

你的代码会看起来像这样:

 Dim client As New WebClient With client .BaseUrl = "https://www.google.com" .EnableAutoProxy = True End With Dim request As New WebRequest With request .Method = WebMethod.HttpGet .AddHeader "User-Agent", "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0)" .Format = WebFormat.PlainText End With Dim response As WebResponse Set response = client.Execute(request)