Домашняя страница Undo Do New Save Карта сайта Обратная связь Поиск по форуму
МИР MS EXCEL - Гость.xls

Вход

Регистрация

Напомнить пароль

 

= Мир MS Excel/проверить работоспособность ссылок - Мир MS Excel

Старая форма входа
  • Страница 1 из 1
  • 1
Модератор форума: китин, _Boroda_  
проверить работоспособность ссылок
ram Дата: Четверг, 07.08.2014, 13:38 | Сообщение № 1
Группа: Пользователи
Ранг: Прохожий
Сообщений: 2
Репутация: 0 ±
Замечаний: 0% ±

Excel 2010
Здравствуйте! Подскажите, как проверить каие ссылки рабочие, какие нет?
дана таблица каждому наименованию соответсвует ссылка, но некоторые ссылки "битые", как бы их вычислить не открывая все 5000 ссылок.

пример файла прилагаю.
спасибо!
К сообщению приложен файл: 1111.xlsx (10.8 Kb)
 
Ответить
СообщениеЗдравствуйте! Подскажите, как проверить каие ссылки рабочие, какие нет?
дана таблица каждому наименованию соответсвует ссылка, но некоторые ссылки "битые", как бы их вычислить не открывая все 5000 ссылок.

пример файла прилагаю.
спасибо!

Автор - ram
Дата добавления - 07.08.2014 в 13:38
Формуляр Дата: Четверг, 07.08.2014, 14:48 | Сообщение № 2
Группа: Друзья
Ранг: Ветеран
Сообщений: 832
Репутация: 255 ±
Замечаний: 0% ±

Excel 2003, 2013
Решение макросом.
Не открывая ссылку, всё равно не проверить.
[vba]
Код
Sub CheckUpHyperlinks(target As Range)
'Проверка гиперссылок в заданном диапазоне
'ставит ОК справа от рабочих ссылок
Dim one As Range
        On Error Resume Next    
        For Each one In target.Cells
            one.Hyperlinks(1).Follow
            If Err.Number = 0 Then one.Cells(1, 2) = "OK"
        Next one
        On Error GoTo 0
End Sub
[/vba]

PS: Открытые ссылки не закрываются и накапливаются в браузере. Доброкачественные ссылки могут не открыться из-за переполнения.
Поэтому 5000, видимо, нужно проверять кусками, каждый раз закрывая браузер.
К сообщению приложен файл: 1111.xls (47.5 Kb)


Excel 2003 EN, 2013 EN

Сообщение отредактировал Формуляр - Четверг, 07.08.2014, 15:08
 
Ответить
СообщениеРешение макросом.
Не открывая ссылку, всё равно не проверить.
[vba]
Код
Sub CheckUpHyperlinks(target As Range)
'Проверка гиперссылок в заданном диапазоне
'ставит ОК справа от рабочих ссылок
Dim one As Range
        On Error Resume Next    
        For Each one In target.Cells
            one.Hyperlinks(1).Follow
            If Err.Number = 0 Then one.Cells(1, 2) = "OK"
        Next one
        On Error GoTo 0
End Sub
[/vba]

PS: Открытые ссылки не закрываются и накапливаются в браузере. Доброкачественные ссылки могут не открыться из-за переполнения.
Поэтому 5000, видимо, нужно проверять кусками, каждый раз закрывая браузер.

Автор - Формуляр
Дата добавления - 07.08.2014 в 14:48
krosav4ig Дата: Четверг, 07.08.2014, 18:22 | Сообщение № 3
Группа: Друзья
Ранг: Старожил
Сообщений: 2347
Репутация: 997 ±
Замечаний: 0% ±

Excel 2007,2010,2013
[vba]
Код
Private Function GetURLstatus(ByVal URL$) As Long
    ' функция проверяет наличие доступа к ресурсу URL$ (файлу или каталогу)
    ' возвращает код ответа сервера (число), либо 0, если ссылка ошибочная
    ' (200 - ресурес доступен, 404 - не найден, 403 - нет доступа, и т.д.)
    ' http://excelvba.ru/code/GetURLstatus
    On Error Resume Next: URL$ = Replace(URL$, "\", "/")
     Set xmlhttp = CreateObject("Microsoft.XMLHTTP")
     xmlhttp.Open "GET", URL, "False"
     xmlhttp.setRequestHeader "If-Modified-Since", "Sat, 1 Jan 2000 00:00:00 GMT"
     xmlhttp.send
     GetURLstatus = Val(xmlhttp.Status)
     Set xmlhttp = Nothing
End Function

Sub check()
     With Application: .ScreenUpdating = 0: .EnableEvents = 0: End With
     Dim rng As Range
     Dim cell As Range
     Set rng = Selection
     For Each cell In rng.Cells
         Select Case GetURLstatus(cell.Hyperlinks(1).Address)
             Case 200: cell.Offset(0, 1) = "OK"
             Case Else: cell.Offset(0, 1) = GetURLstatus(cell.Hyperlinks(1).Address)
         End Select
     Next
     With Application: .ScreenUpdating = 1: .EnableEvents = 1: End With
End Sub
[/vba]
К сообщению приложен файл: 11111.xls (49.0 Kb)


email:krosav4ig26@gmail.com WMR R207627035142 WMZ Z821145374535 ЯД 410012026478460
 
Ответить
Сообщение[vba]
Код
Private Function GetURLstatus(ByVal URL$) As Long
    ' функция проверяет наличие доступа к ресурсу URL$ (файлу или каталогу)
    ' возвращает код ответа сервера (число), либо 0, если ссылка ошибочная
    ' (200 - ресурес доступен, 404 - не найден, 403 - нет доступа, и т.д.)
    ' http://excelvba.ru/code/GetURLstatus
    On Error Resume Next: URL$ = Replace(URL$, "\", "/")
     Set xmlhttp = CreateObject("Microsoft.XMLHTTP")
     xmlhttp.Open "GET", URL, "False"
     xmlhttp.setRequestHeader "If-Modified-Since", "Sat, 1 Jan 2000 00:00:00 GMT"
     xmlhttp.send
     GetURLstatus = Val(xmlhttp.Status)
     Set xmlhttp = Nothing
End Function

Sub check()
     With Application: .ScreenUpdating = 0: .EnableEvents = 0: End With
     Dim rng As Range
     Dim cell As Range
     Set rng = Selection
     For Each cell In rng.Cells
         Select Case GetURLstatus(cell.Hyperlinks(1).Address)
             Case 200: cell.Offset(0, 1) = "OK"
             Case Else: cell.Offset(0, 1) = GetURLstatus(cell.Hyperlinks(1).Address)
         End Select
     Next
     With Application: .ScreenUpdating = 1: .EnableEvents = 1: End With
End Sub
[/vba]

Автор - krosav4ig
Дата добавления - 07.08.2014 в 18:22
Rama Дата: Четверг, 02.11.2017, 14:25 | Сообщение № 4
Группа: Пользователи
Ранг: Участник
Сообщений: 59
Репутация: 0 ±
Замечаний: 20% ±

2010
del


Сообщение отредактировал Rama - Четверг, 02.11.2017, 14:42
 
Ответить
Сообщениеdel

Автор - Rama
Дата добавления - 02.11.2017 в 14:25
  • Страница 1 из 1
  • 1
Поиск:

Яндекс.Метрика Яндекс цитирования
© 2010-2024 · Дизайн: MichaelCH · Хостинг от uCoz · При использовании материалов сайта, ссылка на www.excelworld.ru обязательна!