Код Гэри идеален, но я бы предпочел использовать публичную функцию в модуле и использовать ее в ячейке как функцию. Преимущество состоит в том, что вы можете использовать его в ячейке по вашему выбору или в любой другой более сложной функции.
В приведенном ниже коде я изменил код Гэри, чтобы он возвращал логическое значение, и затем вы можете использовать этот вывод в = IF (CHECKHYPERLINK (A1); "OK"; "FAILED"). В качестве альтернативы вы можете вернуть целое число и вернуть сам статус (например: = IF (CHECKHYPERLINK (A1) = 200; "OK"; "FAILED"))
А1: http://www.whatever.com
A2: = IF (CHECKHYPERLINK (A1); «OK»; «FAILED»)
Чтобы использовать этот код, пожалуйста, следуйте инструкциям Гэри и дополнительно добавьте модуль в рабочую книгу (щелкните правой кнопкой мыши на VBAProject -> Insert -> Module) и вставьте код в модуль.
Option Explicit
Public Function CheckHyperlink(ByVal strUrl As String) As Boolean
Dim oHttp As New MSXML2.XMLHTTP30
On Error GoTo ErrorHandler
oHttp.Open "HEAD", strUrl, False
oHttp.send
If Not oHttp.Status = 200 Then CheckHyperlink = False Else CheckHyperlink = True
Exit Function
ErrorHandler:
CheckHyperlink = False
End Function
Также имейте в виду, что, если страница не работает, время ожидания может быть большим.