Форум программистов, компьютерный форум, киберфорум
VBA
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
Рейтинг 4.87/107: Рейтинг темы: голосов - 107, средняя оценка - 4.87
23 / 23 / 4
Регистрация: 08.04.2013
Сообщений: 150

Проверка гиперссылок в Excel на корректность

19.12.2013, 16:47. Показов 22984. Ответов 11

Студворк — интернет-сервис помощи студентам
Здравствуйте.
Столкнулся с необходимостью проверки гиперссылок на корректность.
Возможно ли сделать так, чтоб макрос автоматически проверял рабочая гиперссылка или нет?
Меня интересуют не ссылки на файлы на компьютере или сервере(там все понятно), меня интересуют http ссылки.
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
19.12.2013, 16:47
Ответы с готовыми решениями:

Проверка гиперссылок в Excel
Друзья, добрый день. Есть файл Excel. В нём около 24000 строк. Есть столбик в нем стоят гиперссылки. Но некоторые гиперссылки не...

VBA - MS Access проверка на корректность введенных данных
Доброго времени суток. В бд есть таблицы: Заказы, Клиенты, Туры. Из них создана ленточная форма с полями: код заказа, код клиента, код...

Перенос гиперссылок в Excel
Здравствуйте. Помогите, пожалуйста, решить задачу. Необходимо чтоб при переносе значения ячейки(текст с гиперссылкой) в ячейку на...

11
6082 / 1327 / 195
Регистрация: 12.12.2012
Сообщений: 1,023
19.12.2013, 22:43
Kirill R, да, думаю, это возможно.
У меня получился такой вариант проверки с помощью функции:

Visual Basic
1
2
3
4
5
6
7
8
9
10
11
'Ôóíêöèÿ âîçâðàùàåò True, åñëè ãèïåðññûëêà êîððåêòíà (âåäåò íà
'ñóùåñòâóþùóþ ñòðàíèöó â èíòåðíåòå), è False - â ïðîòèâíîì ñëó÷àå.
Function TestHyperlink(ByVal h As Hyperlink) As Boolean
    On Error Resume Next
    With CreateObject("MSXML2.XMLHTTP")
        .Open "GET", h.Address, False
        .send
        TestHyperlink = .statusText = "OK"
    End With
    On Error GoTo 0
End Function
С уважением,
Aksima
2
23 / 23 / 4
Регистрация: 08.04.2013
Сообщений: 150
19.12.2013, 23:14  [ТС]
Благодарю, завтра на работе попробую
0
23 / 23 / 4
Регистрация: 08.04.2013
Сообщений: 150
23.12.2013, 08:33  [ТС]
Aksima, спасибо, данный вариант работает. А не могли бы Вы вкратце пояснить принцип работы?

Добавлено через 8 минут
ах, нет, протестировал на нескольких заведомо ложных вариантах, всегда true выдает...
0
6082 / 1327 / 195
Регистрация: 12.12.2012
Сообщений: 1,023
23.12.2013, 10:44
Цитата Сообщение от Kirill R Посмотреть сообщение
не могли бы Вы вкратце пояснить принцип работы?
Вот программа с пояснениями:

Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
Function TestHyperlink(ByVal h As Hyperlink) As Boolean
    On Error Resume Next 'Включаем обработку ошибок.
    With CreateObject("MSXML2.XMLHTTP")
    'Формируем запрос к веб-странице по методу "GET".
        .Open "GET", h.Address, False
    'Отправляем запрос.
        .send
    'Функция возвращает результат сравнения строки
    'статуса запроса с ключевой фразой "OK".
        TestHyperlink = .statusText = "OK"
    End With
    On Error GoTo 0 'Выключаем обработку ошибок.
End Function
 
Sub Main()
    Dim c As Range
    For Each c In Range("A1:A4")
        c.Offset(, 1) = TestHyperlink(c.Hyperlinks(1))
    Next c
End Sub
Цитата Сообщение от Kirill R Посмотреть сообщение
ах, нет, протестировал на нескольких заведомо ложных вариантах, всегда true выдает...
Может, что-то не так сделали? У меня все работает:
Миниатюры
Проверка гиперссылок в Excel на корректность  
1
23 / 23 / 4
Регистрация: 08.04.2013
Сообщений: 150
23.12.2013, 13:06  [ТС]
Aksima, да, все, спасибо, я уже разобрался в чем дело. заодно и разобрался в Вашем скрипте
Я применяю данный скрипт к корпоративному порталу, поэтому некоторые ложные срабатывания связаны с особенностями работы sharepoint.
0
Helicoid
01.02.2014, 18:56
Товарищи помогите пожалуйста. Мне нужно сделать все то же самое только все ссылки на файлы в компьютере. Вариант предложенный Aksima идеальный.
23 / 23 / 4
Регистрация: 08.04.2013
Сообщений: 150
06.02.2014, 11:44  [ТС]
Helicoid, функция FileExist проверяет наличие файла по указанному пути.
1
 Аватар для KoGG
5730 / 1633 / 419
Регистрация: 23.12.2010
Сообщений: 2,454
Записей в блоге: 1
07.02.2014, 13:48
Для Helicoid
Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
Sub TestExcellink()
    Dim El, aLinks, LinkFilePathName
    aLinks = ActiveWorkbook.LinkSources(Type:=xlLinkTypeExcelLinks)
    If Not IsEmpty(aLinks) Then
        For Each El In aLinks
            LinkFilePathName = Dir(El)
            If LinkFilePathName = "" Then
                Debug.Print El & " файл отсутствует"
                ' При необходимости можно разорвать связь на отсутствующий файл
                ' ActiveWorkbook.BreakLink name:=El, Type:=xlLinkTypeExcelLinks
            Else
                Debug.Print El & " ОК"
            End If
        Next El
    End If
End Sub
Debug.Print печатает в окно Immediate.
Переход в окно редактора VBA: Alt+F11 , далее вызов окна Immediate: Ctrl + G
1
0 / 0 / 0
Регистрация: 20.02.2019
Сообщений: 5
22.03.2019, 08:59
Цитата Сообщение от Аксима Посмотреть сообщение
Может, что-то не так сделали? У меня все работает:
Уважаемый Аксима, этот способ отлично работает для проверки страниц с портала. Но у меня возникли сложности с проверкой конкретно документов с портала. Именно *.pdf и *.xls. У меня имеется достаточно большое количество различных таких файлов. Мне нужно проверить есть ли файл по ссылке или нет (например УП ИВТ есть, УП ПИ отсутствует и т.д.), подскажите как такое можно реализовать?
Изображения
 
0
23 / 23 / 4
Регистрация: 08.04.2013
Сообщений: 150
26.03.2019, 16:23  [ТС]
Kamidzu_san13, я этот способ использовал для проверки всех ссылок на портале, вне зависимости от того, указывают они на страницы, либо на файлы. С pdf и xsl все прекрасно работало. В чем у Вас сложности возникли?
0
0 / 0 / 0
Регистрация: 20.02.2019
Сообщений: 5
27.03.2019, 15:44
Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
Function TestHyperlink(ByVal h As Hyperlink) As Boolean
    On Error Resume Next 
    With CreateObject("MSXML2.XMLHTTP")
            .Open "GET", h.Address, False
           .send
           TestHyperlink = .statusText = "OK"
    End With
    On Error GoTo 0 
End Function
 
Sub Main()
    Dim c As Range
    For Each c In Range("F2:F5")
        c.Offset(, 1) = TestHyperlink(c.Hyperlinks(1))
    Next c
End Sub
Вот в ячейках F у меня гиперссылки созданные автоматически в зависимости от имени файла.
И когда запускаю этот макрос по всем пунктам ложь. Хотя там все рабочие.
Может библиотеку какую не подключил? Просто не понимаю уже. Месяца два пробовал и так и эдак, кучу всего перечитал. Пробовал и с относительными и с полноценными...Все бестолку. Уже просто руки опускаются не понимаю в чем беда

Добавлено через 1 минуту
Пробовал ещё и этой функцией... тоже не помогло
Visual Basic
1
2
3
4
5
6
7
8
9
Function TryURLstatus(ByVal URL$) As Long
 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
 TryURLstatus = Val(XMLHTTP.Status)
 Set XMLHTTP = Nothing
End Function
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
27.03.2019, 15:44

Проверка на корректность
Программа на консоли, для высчитывания логического выражения, подскажите, пожалуйста, как сделать обработку выражения на некорректный ввод,...

Проверка на корректность
Мне необходимо перевести из string в double я собираюсь воспользоваться ф-цией Convert но мне необходимо чтобы в случае неверного ввода(там...

Проверка даты на корректность
Привет всем! Не могу найти ошибку в регулярном выражении, надо чтобы проходили такие даты 2012-07-27 01:52:57 ...

Проверка на корректность ввода
Люди добрые, помогите мне, неумехе несчастному... короче, есть прога на си: #include<stdio.h> #include<stdlib.h> int...

Проверка программы на корректность
Сделал программу нужно проверить на корректность просто не уверен что во всех случаях будет нормально работать(сомневаюсь в нахождение...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
12
Ответ Создать тему
Новые блоги и статьи
После бана на Пикабу не работает авторизация аккаунта с Яндекса.
Hrethgir 09.07.2026
В частности https:/ / auto. ru/ logbook/ zapret-na-vozhdenie-posle-65-let_1cf28789-07b4-4c75-a2f7-4cd4edf9deeb тут хотел оставить комментарий такой Зрите в корень - монополизация на разработку программ. . .
GitDOS: Когда я решил скрестить MS-DOS, GitHub и Claude
MaGz GoLd 08.07.2026
Привет, Киберфорум! Хочу поделиться своим проектом, который, надеюсь, вас заинтересует. GitDOS — это веб-приложение, которое позволяет запускать DOS в браузере с тремя крутыми фичами: диски живут в. . .
Учебный мини "цифровой двойник" = (Сервер = Java + Flask_питон )+(3D = Гугловскаая 4T nvideo + google colab) +( WMS = Odoo на Docker)
anaschu 07.07.2026
Увидел в требованиях к вакансии создателя имитационных моделей связку (REst + Api + WMS + Anylogic + питон + 3D Nvideo), и решил посмотреть, что это такое. Из этого всего я работал более менее. . .
Море в объективе
kumehtar 06.07.2026
Хотел написать много проникновенных слов, но передумал. Оно само - говорит. Кто слышит тот слышит.
Doom для терминала без стрельбы и монстров. 3D Raycasting на ascii.
dcc0 05.07.2026
Попросил нейронную сеть deepai. org написать рейкастинг 3D с библиотекой ncurses для Linux. Чтобы можно было ходить на стрелочки. Чтобы стены были отрисованы символами. Справилась. Первый вариант. . .
Установка статуса документа по условию
Maks 05.07.2026
Алгоритм из решения ниже реализован на нетиповом документе "НарядПутевка" разработанного в КА2. Задача: в табличной части "Материалы" документа при записи автоматически устанавливать статус. . .
Сезонность и суточность закисления почв
anaschu 04.07.2026
200 часов это все равно моловато. Есть ситуации, но нестандартные, когда смена происходит за 5 лет. Но обычно это 50 лет и более. Наверное, закисление почвы происходит сезонно в средней. . .
В чем ценность человеческого опыта в глобальном смысле?
kumehtar 03.07.2026
Возможно, ценность человека не в том, что он однажды достигает мудрости, а в том, что он становится носителем карты пути. Он знает не только истину, но и последовательность внутренних изменений,. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru