我已经编写了一些代码来检索url,但是我收到了#Value错误。这段代码有什么不对,
Public Function Rurl(ByVal URL As String)
Dim http As Object
Set http = CreateObject("WinHttp.WinHttpRequest.5.1")
http.Option(WinHttpRequestOption_UserAgentString) = "Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.0)"
http.Option(WinHttpRequestOption_EnableRedirects) = True
If Not InStr(URL, "://") > 0 Then URL = "http://" & URL
http.Open "GET", URL
http.Send
Rurl = http.GetResponseHeader("Location")
Set http = Nothing
End function
答案 0 :(得分:1)
你不会说出你收到错误的地方,所以我会在这条线上假设它:
Rurl = http.GetResponseHeader("Location")
要问问自己:如果提供的网址没有重定向,您的代码会做什么?
答案是,您的代码会在上面的代码行中出现错误,您在代码中的任何位置都无法处理,很可能会导致您发现#VALUE!
错误。
我建议添加一些错误检查,以确保您的功能适用于所有情况。所以,试一试:
Public Function Rurl(ByVal URL As String)
On Error GoTo ErrorHandler
Dim http As Object
Set http = CreateObject("WinHttp.WinHttpRequest.5.1")
http.Option(WinHttpRequestOption_UserAgentString) = "Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.0)"
http.Option(WinHttpRequestOption_EnableRedirects) = True
If Not InStr(URL, "://") > 0 Then URL = "http://" & URL
http.Open "GET", URL
http.Send
Rurl = http.GetResponseHeader("Location")
Set http = Nothing
Exit Function
ErrorHandler:
Rurl = "" ' or you can say something like: "No redirection".
Resume Next
End Function
如果函数中的任何地方发生错误,错误处理程序会将函数的返回值设置为合理的,清理并退出函数。如果没有错误发生,一切都应该像以前一样工作。我们只是添加了一些代码来处理潜在的错误。