Полный адрес из .Hyperlinks
Добавляю я в ячейку листа Excel - Hyperlinks (гиперссылку):
в переменной strFileName указан полный путь к файлу.
Когда же потом обращаюсь, чтобы считать этот адрес, то получаю не полный путь к файлу, а какой-то относительный (обычно относительно файла xls, а если файл лежт изначально в другой директории и показать его путь относительно файла xls невозможно, то тогда он пишет так "..\Мои документы\1.doc")
Считываю я адрес так:
т.е. через свойство Address. Облазил все доступные свойства и нифига не нашел где он хранит полный путь и куда его девает. Причем когда наводишь курсор на ячейку с гиперссылкой, то он показывает полный путь, типа - "file:///C:\ ну и т.д."
ВОПРОС: кто знает как достать обратно полный адрес из гиперссылки
P.S. пока я не начал мудрить с этими относительными путями...не нравится мне просто такой подход
Столкнулся тут вот с какой проблемой:
Добавляю я в ячейку листа Excel - Hyperlinks (гиперссылку):
в переменной strFileName указан полный путь к файлу.
Когда же потом обращаюсь, чтобы считать этот адрес, то получаю не полный путь к файлу, а какой-то относительный (обычно относительно файла xls, а если файл лежт изначально в другой директории и показать его путь относительно файла xls невозможно, то тогда он пишет так "..\Мои документы\1.doc")
Считываю я адрес так:
т.е. через свойство Address. Облазил все доступные свойства и нифига не нашел где он хранит полный путь и куда его девает. Причем когда наводишь курсор на ячейку с гиперссылкой, то он показывает полный путь, типа - "file:///C:\ ну и т.д."
ВОПРОС: кто знает как достать обратно полный адрес из гиперссылки
P.S. пока я не начал мудрить с этими относительными путями...не нравится мне просто такой подход
А .Value что возвращает?
А .Value что возвращает?
Кстати, у меня код:
Range("A2").Select
ActiveSheet.Hyperlinks.Add Anchor:=Selection, Address:="\\D:\Ìîè äîêóìåíòû" _
, TextToDisplay:="Ìîè äîêóìåíòû"
Range("A3").Select
' Range("A3").Text = Range("A2").Hyperlinks.Item(1).SubAddress
Range("A4").Value = Range("A2").Hyperlinks.Item(1).Address
Range("A5").Value = Range("A2").Hyperlinks.Item(1).Name
Range("A6").Value = Range("A2").Hyperlinks.Item(1).ScreenTip
Range("A7").Value = Range("A2").Value
Range("A8").Value = Range("A2").Value2
вернул всё, как надо (Office 2000):???:
Range("B2").Select
ActiveSheet.Hyperlinks.Add Anchor:=Selection, Address:="CodeCopySheets.xls"
Range("B3").Select
ActiveSheet.Hyperlinks.Add Anchor:=Selection, Address:= _
"C:\Sergey\Codenet\CodeToWord.xls"
End Sub
Sub M2()
MsgBox Range("B2").Hyperlinks(1).Address
MsgBox Range("B3").Hyperlinks(1).Address
End Sub
Одна возвращает полный путь, вторая - относительный.
Серёж, ты удивишься, но у меня все работает:
Range("B2").Select
ActiveSheet.Hyperlinks.Add Anchor:=Selection, Address:="CodeCopySheets.xls"
Range("B3").Select
ActiveSheet.Hyperlinks.Add Anchor:=Selection, Address:= _
"C:\Sergey\Codenet\CodeToWord.xls"
End Sub
Sub M2()
MsgBox Range("B2").Hyperlinks(1).Address
MsgBox Range("B3").Hyperlinks(1).Address
End Sub
Одна возвращает полный путь, вторая - относительный.
что-то я не догоняю...
хмм, надеюсь полный путь возвращает ячейка B3?!?
ща еще у себя поэкспериментирую...
Кстати, у меня код:
Range("A2").Select
ActiveSheet.Hyperlinks.Add Anchor:=Selection, Address:="\\D:\Ìîè äîêóìåíòû" _
, TextToDisplay:="Ìîè äîêóìåíòû"
Range("A3").Select
' Range("A3").Text = Range("A2").Hyperlinks.Item(1).SubAddress
Range("A4").Value = Range("A2").Hyperlinks.Item(1).Address
Range("A5").Value = Range("A2").Hyperlinks.Item(1).Name
Range("A6").Value = Range("A2").Hyperlinks.Item(1).ScreenTip
Range("A7").Value = Range("A2").Value
Range("A8").Value = Range("A2").Value2
вернул всё, как надо (Office 2000):???:
.Value = мне возвращает, то что я забил в TextToDisplay
:(
Серёж, ты удивишься, но у меня все работает:
Range("B2").Select
ActiveSheet.Hyperlinks.Add Anchor:=Selection, Address:="CodeCopySheets.xls"
Range("B3").Select
ActiveSheet.Hyperlinks.Add Anchor:=Selection, Address:= _
"C:\Sergey\Codenet\CodeToWord.xls"
End Sub
Sub M2()
MsgBox Range("B2").Hyperlinks(1).Address
MsgBox Range("B3").Hyperlinks(1).Address
End Sub
Одна возвращает полный путь, вторая - относительный.
Кажется я понял в чем прикол:
Твой пример у меня тоже полный путь возвращает, НО попробуй добавить в метод Add следующее переменную - TextToDisplay:="просто текст" - вот тут чудеса и начинаются.
Т.е. мое подозрение, что Address хорошо работает токо при совпадении TextToDisplay и Address, а вот при их различии начинаются выкрутасы
что-то я не догоняю...
хмм, надеюсь полный путь возвращает ячейка B3?!?
ща еще у себя поэкспериментирую...
И та, и другая возвращают в точности то, что я "зафигачил" им в Address.
(разумеется, всё это на 97-м... :} )
Но вот так ничего не испортилось:
ActiveSheet.Hyperlinks.Add Anchor:=Selection, Address:="CodeCopySheets.xls"
Selection.Value = "La-la"
Range("B3").Select
ActiveSheet.Hyperlinks.Add Anchor:=Selection, Address:= _
"C:\Sergey\Codenet\CodeToWord.xls"
Selection.Value = "La-la"
И та, и другая возвращают в точности то, что я "зафигачил" им в Address.
(разумеется, всё это на 97-м... :} )
А в 97 перемн. TextToDisplay в методе Add есть?
Все я убежал, у отца сеня день рождения, так что продолжим завтра, ок?!
А в 97 перемн. TextToDisplay в методе Add есть?
Все я убежал, у отца сеня день рождения, так что продолжим завтра, ок?!
Значит ла-ла говоришь, надо будет попробовать
Попробовал на 2000-м с TextToDisplay. ВСЁ РАБОТАЕТ!!!
Бред какой-то, добавление гиперссылки через код в самом Excel у меня тоже работает, а вот то что я добавлял из Outlook связываясь с листом Excel? получается вот так...
посмотри файл, там эти хитрые ссылки, чтобы посмотреть адрес надо два раз щелкнуть на соседней ячейке с текстом - "In the Queue" (сама ссылка в столб. - I ). Чуть ниже висит кнопка для добавления гиперссылки через код из самого Excel..... так сказать нижмите и увидите разницу..
Бред какой-то, добавление гиперссылки через код в самом Excel у меня тоже работает, а вот то что я добавлял из Outlook связываясь с листом Excel? получается вот так...
посмотри файл, там эти хитрые ссылки, чтобы посмотреть адрес надо два раз щелкнуть на соседней ячейке с текстом - "In the Queue" (сама ссылка в столб. - I ). Чуть ниже висит кнопка для добавления гиперссылки через код из самого Excel..... так сказать нижмите и увидите разницу..
Ну я-то вижу уже результат работы твоих макросов. Внешне это выглядит, как будто ты добавлял относительную ссылку, а не абсолютную. А почему у тебя там косая черта "не в ту сторону"?
Ну я-то вижу уже результат работы твоих макросов. Внешне это выглядит, как будто ты добавлял относительную ссылку, а не абсолютную. А почему у тебя там косая черта "не в ту сторону"?
Я понимаю, что работу, но как вообще теоретически возможно добавление ссылки на файл, чтобы он хранил полный путь (неизвестно там где у себя, но показывает его при наведении на ячейку), а через свойство адрес возвращал токо относительный путь?
Кстати добавление гиперссылки с совпадающим адресом в свойстве TextToDisplay все равно возвращает в Address относит. путь
Видимо пора начинать бегать с бубном вокруг компьютера... :(
Пока вывернулся так, просто сделал два столбца: в одном имя файла, а в другом гиперссылка на этот файл и в свойстве TextToDisplay забивается полный путь и считывается уже путь тупо через Cells().Value
Я не очень чётко себе представляю, чего бы ты хотел добиться в идеале...
В идеале просто в ячейке высвечивается имя файла, в виде гиперссылки на этот файл на диске.
- это все сделано, проблемы начинаются потом, когда надо считать полный адрес этого файла, чтобы до него добраться и переложить в другую папку, все это разумеется программно
не думал я что тут меня может ожидать подстава...
А почему косая черта не в ту сторону?
Ты не поверишь, сам сижу и удивляюсь... честное слово это не я, в всплывающей подсказке указывается правильный путь и файл нормально вызывается
Ты не поверишь, сам сижу и удивляюсь... честное слово это не я, в всплывающей подсказке указывается правильный путь и файл нормально вызывается
Наверное, в этом и есть корень всех причин. Надо докопаться, откуда это все берётся. Может, нужен сервиспак на аутлюк?
Наверное, в этом и есть корень всех причин. Надо докопаться, откуда это все берётся. Может, нужен сервиспак на аутлюк?
Может, у меня стоит OfficeXp+SP1, может конечно во втором все поправили уже...