Новости:

Подпишитесь на рассылку новых сообщений форума через службу рассылок: Subscribe.ru

Главное меню

Гиперссылка

Автор Андрей Письменский, 12.03.2014, 19:40

« назад - далее »

Андрей Письменский

Уважаемые, подскажите, пожалуйста, как занести адрес гиперссылки в текстовую переменную в макросе VBA и выделить из нее имя файла? Например, ячейка A1 содержит гиперссылку на файл C:\МояФотография.jpg. Как занести  текст "МояФотография.jpg" в текстовую переменную?

Заранее благодарен!
NULL

kuklp

Андрей Письменский, Вы принципиально не желаете читать правил форумов?
Кросс:
http://www.excelworld.ru/forum/10-9530-1
Я, как всегда, чертовски адекватен... Email: pilipnikop@yandex.ua WM Z206653985942, R334086032478, U238399322728, E332314026771

Андрей Письменский

#2
Цитата: KuklP от 13.03.2014, 07:33
Андрей Письменский, Вы принципиально не желаете читать правил форумов?
Кросс:
http://www.excelworld.ru/forum/10-9530-1
KuklP, Я не совсем понял... Это ссылка на какое-то правило форума? Или ответ не по существу на мой вопрос?

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

RAN

Цитата: Андрей Письменский от 13.03.2014, 10:20
Конечно можно! Создаешь макрос, вкладываешь цикл в цикл и готово!

Берешь гиперссылку, вытаскиваешь из нее имя файла, помещаешь в переменную - и готово.
Например
a=Split(s,"\",2)(1)

Андрей Письменский

Совет хороший, но чтобы извлечь из гиперссылки имя файла надо саму гиперссылку в текстовую переменную загнать, как я понимаю. А вот как это сделать? Я попытался в приложенном файле, но так не получается. Макрос не отрабатывает...
NULL

exceleved

Function Hlnk(r As Range) As String
Dim x$()
Application.Volatile
x = Split(r.Hyperlinks(1).Address, "\")
If UBound(x) Then
  Hlnk = x(UBound(x))
End If
End Function

Андрей Письменский

Мощно! Спасибо! А можно немного разжевать? А можно это использовать не в функции, а в процедуре?
NULL

exceleved

#7
На самом деле даже проще, гиперссылка в вашем файле без пути (файл лежал в папке с книгой)

Function Hlnk(r As Range) As String
Dim x$()
Application.Volatile
x = Split(r.Hyperlinks(1).Address, "\")
Hlnk = x(UBound(x))
End Function


Жевать тут особо нечего - в функцию передается диапазон r, r.Hyperlinks(1).Address - адрес 1-й гиперссылки из диапазона, функция Split разбивает строку по символу "\" на элементы массива, берется последний элемент массива.
Вставляйте на лист =Hlnk(B2) , протягивайте как любую другую функцию.

Андрей Письменский

Спасибо большое за помощь!
По мотивам сообщения я соорудил простую процедурку, которая выполняет то, что мне нужно:
Sub ОбработкаГиперссылки8()

Dim ТекстСсылки As String

ТекстСсылки = Range("B2").Hyperlinks(1).Address

End Sub

Все мое непонимание было в единичке после Hiperlinks. Я полумал, что в ячейке одно свойство Hiperlink и можно сразу к нему обращаться и был не прав. Еще раз спасибо!
NULL

Андрей Письменский

Тема получила свое развитие. Пытаюсь заменить имеющуюся в ячейке гиперссылку на соответствующую формулу. Свормулировал для примера отдельный файл с макросом, но на конечном этапе макросы выдают ошибку:
NULL