Excelmacros获取链接redirect

是否有可能创build一个macros来检查单元格A1:A10的redirect链接?

例如:在单元格A1上,我有链接“www.pplware.com”,但是当我们打开链接www.pplware.com时,我们被redirect到另一个网站“ https://ppware.sapo.pt ”

是否可以写入redirect链接到单元格B1:B10? B1: https : //ppware.com.sapo.pt

只要使用HTTP完成redirect(301永久移动),我们就可以使用WinHttpRequest对象进行testing。 注意:XMLHTTP是不可能的,因为这将不允许禁用跟随redirect。

WinHttpRequest对象有一个属性选项 ,它是一个枚举WinHttpRequestOption枚举 ,其中6. item是WinHttpRequestOption_EnableRedirects 。 这是默认设置为True ,所以WinHttpRequest将立即遵循redirect。 但是我们可以将其设置为False并在redirect之前获取响应头。 从中我们可以得到的Location:这是redirect到的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