Страницы: 1
RSS
Странности при извлечении ссылки из ячейки
 
добрый день. столкнулся с такой проблемой: в ячейке есть гиперссылка, извлекаю из нее значение с помощью Get Hyper Link, но извлекается, судя по всему, какое то старое значение, т.к. то что установлено сейчас абсолютно другое, а откуда берется значение что извлекается вообще непонятно. оно где то хранится? как извлечь все таки значение что есть на самом деле в данный момент. пример прилагаю.
 
Все потому, что в ячейке содержится две гиперссылки: одна - о которой вы говорите (вызывается через activecell.hyperlinks(1)), а другая - которая вам нужна (вызывается через activecell.hyperlinks(2)).
Изменено: Все_просто - 25.02.2015 10:56:30
С уважением,
Федор/Все_просто
 
не знал что хранится несколько. спасибо!
Скажите, а как в формуле изменить код так чтобы он брал конкретно назначенный гиперлинк в данный момент, активный гиперлинк? ведь при клике же открывается конкретная ссылка, вот та которая открывается ту и надо достать, а гадать какая там она, 2-я или 1-я или 3-я это нереально.
 
Цитата
Все_просто написал:
Все потому, что в ячейке содержится две гиперссылки: одна - о которой вы говорите (вызывается через activecell.hyperlinks(1)), а другая - которая вам нужна (вызывается через activecell.hyperlinks(2)).
подскажите, а как извлекать ссылку установленную конкретно в данный момент, чтобы не гадать 1-я или 2-я?
приложу код еще раз отдельно
Код
Function Get_Hyperlink_Address(ByVal rCell As Range) As String
    If rCell.Hyperlinks.Count = 0 Then
        If Mid$(rCell.Formula, 2, 9) = "HYPERLINK" Then
            Get_Hyperlink_Address = Mid$(rCell.Formula, 13, InStr(13, rCell.Formula, Chr(34)) - 13)
        Else
            Get_Hyperlink_Address = " ÿ÷åéêå íåò ãèïåðññûëêè!"
        End If
    Else
        Get_Hyperlink_Address = rCell.Hyperlinks(1).Address
    End If
End Function
Изменено: myrecs - 02.03.2015 13:02:14
 
открываю файл с пропуском "обновления связей", там формула в ячейке
Код
='D:\PLEX2\PLEX.xlam'!Get_Hyperlink_Address(A1)
, естественно не правильная т.к. D:\PLEX2\PLEX.xlam у меня нет и соответственно в ячейке ответ старый не обновленный.
У вас возможно тоже самое.
оставьте в ячейке только
Код
=Get_Hyperlink_Address(A1)
и будет вам счастье.
П.С. когда копируете код на форум переключайтесь на русскую раскладку (иероглифов не будет тогда).
Изменено: V - 02.03.2015 14:13:33
 
Как вариант:
Код
Get_Hyperlink_Address = rCell.Hyperlinks(rCell.Hyperlinks.Count).Address
Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы...
 
спасибо огромное. это наверное самый разумный способ.
 
тут возникла другая проблема. ссылка извлекается неполностью. полагаю, что если в ссылке есть знак "#" то извлекается все до него.
пример прикладываю.
 
Знак # указывает на то, что ссылка ведет на определенное место в документе, которое обозначается в коде как SubAddress. Т.е. по сути можно просто его добавить:
Код
Function Get_Hyperlink_Address3(ByVal rCell As Range) As String    If rCell.Hyperlinks.Count = 0 Then
        If Mid$(rCell.Formula, 2, 9) = "HYPERLINK" Then
            Get_Hyperlink_Address3 = Mid$(rCell.Formula, 13, InStr(13, rCell.Formula, Chr(34)) - 13)
        Else
            Get_Hyperlink_Address3 = "В ячейке нет гиперссылки!"
        End If
    Else
        Get_Hyperlink_Address3 = rCell.Hyperlinks(rCell.Hyperlinks.Count).Address & rCell.Hyperlinks(rCell.Hyperlinks.Count).SubAddress
    End If
End Function
Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы...
 
не знал про такую разбивку:). думал оно извлекает просто весь контейнер. спасибо
Страницы: 1
Наверх