Как получить адрес гиперссылки из ячейки
Функция, приведенная ниже, позволяет извлечь из ячейки, в которой записана гиперссылка, адрес этой гиперссылки. Гиперссылка может быть записана как с помощью функции ГИПЕРССЫЛКА, так и созданная через контекстное меню. Подробнее про гиперссылки можно прочитать в этой статье: Что такое гиперссылка?
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)?. Вкратце: скопировать текст кода выше, перейти в редактор VBA(
АдресГиперссылки.xls (66,5 KiB, 12 956 скачиваний)
А функция ниже позволяет вытащить из ячейки с гиперссылкой подсказку:
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 ссылки статистикаКомментарии, не имеющие отношения к комментируемой статье, могут быть удалены без уведомления и объяснения причин. Если есть вопрос по личной проблеме - добро пожаловать на Форум
Здравствуйте. помогите, пожалуйста. Сделала и всё получилось. Но при копировании на другую книгу или страницу, все ссылки исчезают. как сделать так, чтобы адреса ссылок переписывались в другой столбец как текст, а не формула?
помогите. как сделать, чтобы адрес гиперссылки заносился в соседнюю ячейку, а на ячейке с гиперссылкой сама гиперссылка удалялась? В документе нужно, чтобы гиперссылок не было, только чистый текст. спасибо.
Здравствуйте. Если гиперссылка на ячейку в этой же книге, то ничего не отображается. Почему?
Марина, потому что для таких ссылок иной путь:
rCell.Hyperlinks(1).SubAddress
А как сделать так что если в ячейке пусто то чтобы и ячейка куда должна выводиться гиперссылка была пустой?
Попробуйте посмотреть на код и мыслить логически. На данный момент, если нет гиперссылки, то функция вернет "В ячейке нет гиперссылки!". Теперь осталось лишь найти этот текст в теле кода и заменить этот текст на пусто:
это
Get_Hyperlink_Address = "В ячейке нет гиперссылки!"
на
Get_Hyperlink_Address = ""
Мне кажется не так сложно догадаться об этом...
Плюс пустая ячейка не означает, что в ней нет гиперссылки.
Спасибо большое автору, у меня ограменный прайс-лист был в котором из каждого наименование нужно было достать гипер ссылку в отдельную колонку! Супер, то что нужно ))
Не получается достать гиперссылку из картинок, в чем может быть проблема? и делалось ли такое вообще?
Потому что это функция листа, которая не принимает в качестве аргумента объект. Она работает только с ячейками.
А вообще сделать можно, но подход уже другой.
Вообще мне нужно скачать картинки из этих гиперссылок, как я понял для скачивания картинок нужны сами ссылки или можно не даставая из гиперссылок скачать? Сможете это сделать за плату?
А если вот такая =ГИПЕРССЫЛКА("http://www.gardenbulbs.ru/images/Bushes_CL/thumbnails/"&Q10&".jpg";"фото1")
которая имя файла берет из ячейки, как получить полную ссылку. Спасибо заранее.
Здравствуйте. помогите, пожалуйста. Уже дошло до слез - вроде все ясно написано, у кого-то получилось, у меня - нет ((( Пробовала и через функцию - пишет нет аргумента...
Ну и как же помочь? единственное, что можно подсказать по слезному описанию - Вы просто не указываете ссылку на ячейку для функции. Скачайте пример, приложенный к статье и посмотрите как там записано.
Заработало!!! Прочитала Ваш ответ на форуме ))) Положила "Спасибо", мелочь, а приятно)))
Теперь бы понять как эти "противные" заложили ссылки...? Когда нажимаешь на их прайсе уходишь то на разные товары, а ссылка остается одна...? Буду думать.
Если Вы с таким встречались и знаете как это обойти, то какова "цена вопроса" ?
Победила!!! Может кому пригодиться - нужно менять каждый раз №ячейки - D3, D5 и т.д. А можно это как-то автоматизировать или это уже "наглость" )))
У Вас в ссылках отличается эта часть: "prod14059". Т.е. разные продукты, но окончание ссылок одинаковое. Так что верно со ссылками. А что до менять D5, D6 и т.д. - то ничего менять не надо. Указали в ровности так, как я написал на форуме:=Get_Hyperlink_Address(D3) Далее просто копируете ячейку с этой формулой, выделяете остальные ячейки диапазона и вставляете скопированное. Ссылки сами поменяются.