2014-09-28 1 views
1

Я искал это некоторое время, но не могу найти правильное решение.HyperLink с динамическим файловым адресом с использованием значения ячейки

Я хочу иметь гиперссылку, которая возвращает его (часть его) адреса из определенной ячейки. То есть при вставке гиперссылки я хочу, чтобы она ссылалась на значение ячейки, а не на абсолютную строку, поэтому гиперссылки могут быть легко изменены.

Круги является суб сделано:

Sub CreateHyper(ARow As Integer, AColumn As Integer, ASheet As Integer, TargetAdress As String,  HName As String) 
Sheets(1).Hyperlinks.Add Anchor:=Sheets(ASheet).Cells(ARow, AColumn), _ 
Address:="'" & Sheets("DATA").Range("A2").Value & "'" & TargetAdress, TextToDisplay:=HName 
End Sub 

Значение ячейки А2 зависит от того, где первенствует хранится может быть C: \ или X: \ alot_of_folders \ ... \

TargetAdress не к ячейке, а к файлу на диске. ... \ File.pdf

Я думаю, что все другие переменные являются самообучающимися.

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

следующие работы, но цель не изменится, если A2 изменяется, так как это будет статичным, как сделать «Sheets (» DATA «). Range (» A2"). Ссылочное значение?

Sub CreateHyper(ARow As Integer, AColumn As Integer, ASheet As Integer, TargetAdress As String,  HName As String) 
Sheets(1).Hyperlinks.Add Anchor:=Sheets(ASheet).Cells(ARow, AColumn), _ 
Address:=Sheets("DATA").Range("A2").Value & TargetAdress, TextToDisplay:=HName 
End Sub 

Любые предложения?

+0

Итак, что не работает с тем, что вы пробовали? – bowlturner

+0

Обычно TargetAdress включает весь путь (так что это работает), но теперь я хочу ссылку на ячейку в адресе, это бит ссылки, с которым я не могу справиться. А2 включает в себя = C: \ folder1 \ гиперссылок будет: C: \ folder1 \ folder2 \ file.pdf Если я обновить A2 в: C: \ folder3 \ Как гиперссылка теперь обновляется в C: \ folder3 \ folder2 \ file.pdf Если вы удалите бит «», он будет работать, но он будет статичным и не изменит адрес назначения, если A2 изменится. – Damien

ответ

0

AFAIK, создавая гиперссылку с Hyperlinks.Add никогда не будет динамичным, так как адрес будет то, что было содержание этой ячейки в то время была создана ссылка. Если что ячейки изменяется, то ссылка не будет обновляться. Вам нужно будет повторить запуск этого суб, чтобы использовать новый контент ячейки в качестве ссылки.

Вместо того чтобы помещать гиперссылку в ячейку таким образом, рассмотрите возможность использования функции рабочего листа Hyperlink, которая и динамически выдает адрес ссылки из ячейки.

Sub CreateHyper(ARow As Integer, AColumn As Integer, ASheet As Integer, TargetAddress As String, HName As String) 
Dim TargetCell As Range 
Set TargetCell = ThisWorkbook.Sheets(ASheet).Cells(ARow, AColumn) 
TargetCell.Formula = "=hyperlink('Data'!A2&""" & TargetAddress & """,""" & HName & """)" 
End Sub 

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

Смежные вопросы