2012-05-14 3 views
3

WinHTTP를 사용하여 Excel VBA 매크로에서 GET 요청을 수행하고 있습니다. 그러나 프록시가있는 네트워크의 시스템에서 요청을 시도하면 작동하지 않습니다. 수동으로 구성하면 작동하지만, 현재 개발중인 도구를 사용할 사람들이 프록시 서버를 알지 못한다고 생각합니다.WinHTTP 및 Excel로 프록시 구성

프록시 서버를 자동 구성하거나 Windows에서 프록시 구성을 가져 오는 방법이 있습니까? 다음은 샘플 코드를 다음과

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 

이 경우를 나는 찾을 수있는 사용자를 강제하고 싶지 않아 "proxyserver를을 : 8080"주소 - 제가 원하는 것은 자동으로 채울 수있는 방법이다.

고마워요.

답변

1

다음 링크에서 아래 vbScript를 받았습니다. "8080 proxyserver를"당신은 프록시 서버를 얻기 위해 사용하기위한 코드에 변수로 전달 할 수 있습니다 당신이 VBScript를 알고 있다면

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

- 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 
+0

안녕하세요! 이것은 방법으로 보이지만 쿼리를 실행하려고 할 때마다 Win32_Proxy가 잘못된 클래스라고합니다. MSDN에서 찾은 다른 클래스를 사용해 보았습니다. 그래서이 클래스에만 해당되는 문제라고 생각합니다. –

+0

흥미 롭습니다. 이것은 나를 위해 일했다. 문제를 발견하면 알려주십시오. 도움이된다면, 나는 XP에있다. –

+0

Win32_Proxy 더 이상 사용할 수 없습니다 win-xp – anand

2

, 나는이 정확하게 문제를 해결하기 위해 VBA-Web 프로젝트를 사용하여 언급하는 this answer를 가리 키도록하고 싶습니다.

코드는 다음과 같이 보일 것입니다 :

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) 
+0

실제로 매우 우아한 솔루션 –