所以,我有这个启用Excel宏的工作表,其中包含大约500个URL的列表。 (我们公司内部网上的所有页面。)
现在我们想要使用URL状态代码
检查有多少网址正常工作
但是,有一些好消息:重定向脚本不能在Excel中运行。如果单击Excel中的错误链接,则不会执行重定向脚本,并且会将HTTP响应报告回Excel。我相信Excel应该能够识别正确的HTTP响应代码(404) - 或者至少是否有效链接。
这让我想到了我的问题:
我已经传递了Winhttp请求对象以发送HTTP POST请求,并将request.status方法应用于获取URL的状态。
我得到了正确的输出,但我发现一些网址工作正常,但它在宏中显示404状态。
如果有人对VBA足够熟悉,建议解决这个问题,我将永远感激不尽!
这是我的VBA脚本。
Sub Macro1()
Dim source As Range, req As Object, url$
Dim rc As Integer
Set req = CreateObject("Msxml2.ServerXMLHTTP.6.0")
Sheets("Sheet1").Select
Set source = Range("A1:A1000")
source.Columns(2).Clear
For i = 1 To source.Rows.Count
url = source.Cells(i, 1)
On Error Resume Next
req.Open "HEAD", url, False
req.SetRequestHeader "Accept", "image/webp,image/*,*/*;q=0.8"
req.SetRequestHeader "Accept-Language", "en-GB,en-US;q=0.8,en;q=0.6"
req.SetRequestHeader "Accept-Encoding", "gzip, deflate"
req.SetRequestHeader "Cache-Control", "no-cache"
req.SetRequestHeader "Content-Type", "text/xml; charset=utf-8"
req.SetRequestHeader "User-Agent", "Mozilla/5.0 (Windows NT 6.3; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/47.0.2526.111 Safari/537.36"
req.Send
source.Cells(i, 2) = req.Status
On Error GoTo 0
Next
MsgBox "Finished!"
End Sub