是否可以创建一个宏来检查来自单元格A1的重定向链接:A10?
例如:在单元格A1上,我有链接" www.pplware.com"但是当我们打开链接www.pplware.com时,我们会重定向到另一个网站" https://ppware.sapo.pt"
是否可以将重定向链接写入单元格B1:B10? B1:https://ppware.com.sapo.pt
答案 0 :(得分:0)
只要使用HTTP(301永久移动)完成重定向,我们就可以使用WinHttpRequest object进行测试。注意:XMLHTTP是不可能的,因为这不允许禁用跟随重定向。
WinHttpRequest对象有一个属性Option,它是一个枚举WinHttpRequestOption enumeration,其中6.项为WinHttpRequestOption_EnableRedirects
。这是默认设置的True
,因此WinHttpRequest将立即跟随重定向。但是我们可以设置它False
,因此在遵循重定向之前获取响应头。由此我们可以获得Location:
,即重定向所在的URL
。
示例:
Public Function testRedirect(oCell As Range) As String
testRedirect = "not redirected"
strURL = oCell.Hyperlinks(1).Address
WinHttpRequestOption_EnableRedirects = 6
Set oWinHttp = CreateObject("WinHttp.WinHttpRequest.5.1")
oWinHttp.Option(WinHttpRequestOption_EnableRedirects) = False
oWinHttp.Open "HEAD", strURL, False
oWinHttp.send ""
If oWinHttp.Status = 301 Then
strResponseHeaders = oWinHttp.getAllResponseHeaders()
For Each strResponseHeader In Split(strResponseHeaders, Chr(10))
If Left(strResponseHeader, 9) = "Location:" Then
testRedirect = "redirected to " & strResponseHeader
End If
Next
End If
End Function