Как получить адрес гиперссылки из ячейки
Функция, приведенная ниже позволяет извлечь из ячейки, в которой записана гиперссылка, адрес этой гиперссылки. Гиперссылка может быть как записана с помощью функции ГИПЕРССЫЛКА, так и созданная через контекстное меню. Подробнее про гиперссылки можно прочитать в этой статье: Что такое гиперссылка?
Function Get_Hyperlink_Address(ByVal rCell As Range) As String Dim s As String If rCell.Hyperlinks.Count = 0 Then s = rCell.Formula If Mid$(s, 2, 9) = "HYPERLINK" Then 'такой подход сработает только в случае, если в ячейке записана ссылка текстом 'но не сработает, если гиперссылка создана из ссылок на ячейки ' Get_Hyperlink_Address = Mid$(s, 13, InStr(13, s, Chr(34)) - 13) 'поэтому используем более сложный, но универсальный вариант If s Like "=HYPERLINK*" Then 'получаем данные первого аргумента и убираем знак = s = Split(s, ",")(0) s = Mid$(s, 2, Len(s) - 1) 'на всякий случай добавляем скобку в конец формулы 'хоть Evaluate должен сработать и без неё If Right$(s, 1) <> ")" Then s = s & ")" End If Get_Hyperlink_Address = Evaluate(s) End If Else Get_Hyperlink_Address = "" End If Else s = rCell.Hyperlinks(1).SubAddress If s <> "" Then s = "#" & rCell.Hyperlinks(1).SubAddress Get_Hyperlink_Address = rCell.Hyperlinks(rCell.Hyperlinks.Count).Address & s End If End Function |
Если впервые сталкиваетесь с подобными функциями настоятельно рекомендую прочитать про то, что это за функции: Что такое функция пользователя(UDF)?.
Доступна функция будет из Мастера функций, категория Определенные пользователем
АдресГиперссылки.xls (66,5 KiB, 12 717 скачиваний)
Решил дополнить статью примером функции, которая позволяет вытащить из ячейки с гиперссылкой подсказку:

Function Get_Hyperlink_Title(ByVal rCell As Range) As String Dim s As String If rCell.Hyperlinks.Count = 0 Then If Mid$(rCell.Formula, 2, 9) = "HYPERLINK" Then Get_Hyperlink_Title = rCell.Text Else Get_Hyperlink_Title = "" End If Else Get_Hyperlink_Title = rCell.Hyperlinks(1).ScreenTip End If End Function |
Так же см.:
Что такое функция пользователя(UDF)?
Что такое гиперссылка?
Текст в гиперссылки
Как массово изменить гиперссылки?
Статья помогла? Поделись ссылкой с друзьями!

Поиск по меткам
Access apple watch Multex Power Query и Power BI VBA управление кодами Бесплатные надстройки Дата и время Записки ИП Надстройки Печать Политика Конфиденциальности Почта Программы Работа с приложениями Разработка приложений Росстат Тренинги и вебинары Финансовые Форматирование Функции Excel акции MulTEx ссылки статистикаКомментарии, не имеющие отношения к комментируемой статье, могут быть удалены без уведомления и объяснения причин. Если есть вопрос по личной проблеме - добро пожаловать на Форум
Спасибо, все коректно работает на Excel 2016
А как выполнить обратную задачу? Есть ячейка с текстом, а нужно сделать ее гиперссылкой, чтобы адрес гиперссылки был значением этой ячейки.
Олег, и Вам здрасьте. А в статье в самом начале есть ссылка на статью Что такое гиперссылка. Там можно прочитать, как с помощью функции ГИПЕРССЫЛКА сделать текст активной ссылкой.
Спасибо, Дмитрий. Статья про гиперссылку помогла правильно написать свой макрос.