这个VBAfunction是否可以在任何一台电脑上运行?

我正在使用此VBAfunction从网站检索数据。 该function对我来说工作正常。 但我不确定这是否适合客户,他们可能会受到他们公司的互联网接入限制。 我怎样才能确定它会在每台电脑上工作? 我应该添加一个代理吗? 我该怎么做?

'func1 and func2 are strings used to compose the URL Function cmd(func1 As String, func2 As String) Dim objHTTP Dim aux Dim url As String 'Set objHTTP = CreateObject("MSXML2.ServerXMLHTTP") Set objHTTP = CreateObject("WinHttp.WinHttpRequest.5.1") url = "https://www.comdinheiro.com.br/Clientes/ServerToExcel/S2E_TESTANDO001.php?func1=" & func1 & "&func2=" & func2 objHTTP.Open "GET", url, False objHTTP.SetRequestHeader "User-Agent", "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0)" 'objHTTP.SetProxy 2, "proxyserver:8080", "" objHTTP.SetProxy HTTPREQUEST_PROXYSETTING_PROXY, "ProxyServerName" objHTTP.Send ("") aux = objHTTP.responseText cmd = Trim(aux) End Function 

关于代理。 如果你的代码应该通过代理服务器在PC上运行,那么用户通过代理服务器连接到互联网的用户就可以从对话框中启动

授权对话框
要么
在这里输入图像说明

那么你可以在objHTTP.Open第四和第五个参数中添加用户和密码。 打开方法文章中描述的Open :

 objHTTP.Open "GET", url, False, user, password 

请注意,您不得在代码中存储任何密码,以提交凭证,以便在代码开始时提示用户input一次。

还分析VBA Err.Number错误,如-2146697211(800C0005)“系统找不到指定的资源”,-2147024891(80070005)“访问被拒绝”等, objHTTP.Status来自状态属性文章将帮助你找出故障的原因,并处理它,如果有的话:

 ' ... previous code implementing .open method On Error Resume Next objHTTP.Send ("") EN = Err.Number On Error Goto 0 ' check if EN is not equal 0 (-2146697211, -2147024891, ..) ST = objHTTP.Status ' check if ST is not equal 200 

首先,你应该知道你的代码,如果互联网访问是通过代理,需要authentication与否。 为了让你的代码能够正常工作,你可以创build两个函数返回创build的HttpRequest对象:第一个用于非代理上网,第二个用于代理授权。

registry项也可能有所帮助:HKEY_CURRENT_USER \ Software \ Microsoft \ Windows \ CurrentVersion \ Internet Settings \ ProxyEnable HKEY_CURRENT_USER \ Software \ Microsoft \ Windows \ CurrentVersion \ Internet Settings \ ProxyServer

一般来说,正如@Degustaf写的,你必须在不同的PC上testing你的代码,以确保你的代理检查和授权algorithm正常工作。