Автозамена гиперссылок в Excel?

Весь MS Office, программирование на Visual Basic for Applications и MS VB

Модератор: Naeel Maqsudov

e-aleks
Сообщения: 8
Зарегистрирован: 22 дек 2004, 11:06

23 дек 2004, 11:52

Спасибо большое.
Все прекрасно работает.
Аватара пользователя
Naeel Maqsudov
Сообщения: 2551
Зарегистрирован: 20 фев 2004, 19:17
Откуда: Moscow, Russia
Контактная информация:

23 дек 2004, 14:22

Тут еще выяснилась интересная штука, если ячейку с гиперссылкой скопировать, то
ActiveSheet.Hyperlinks.Count не изменяется. Т.е. в документе остается одна гиперссылка которая отображается в двух ячейках. (Естественно при исправление этой ссылки через ActiveSheet.Hyperlinks(i).Address=... влияет на обе ячейки)

Причем, прикол в том, что
ПерваяЯчейка.Hyperlinks.Count = 1 и ВтораяЯчейка.Hyperlinks.Count =1
Т.е. в каждой ячейке есть по ссылке, но общее количество прежнее

Теперь если отредактировоать гиперссылку во второй ячейке, то

ActiveSheet.Hyperlinks.Count увеличится; ПерваяЯчейка.Hyperlinks.Count = 1; а вот ВтораяЯчейка.Hyperlinks.Count = 2

Причем
ВтораяЯчейка.Hyperlinks(1) это старая гиперссылка, и изменение ни на что не влияет, а ВтораяЯчейка.Hyperlinks(2) это новая ссылка, которую и надо править.

Вот такая свистопляска с гиперссылками...

PS
Это проверено пока в EXCEL97

e-aleks, спасибо за вопрос. Очень познавательно :)
Аватара пользователя
Naeel Maqsudov
Сообщения: 2551
Зарегистрирован: 20 фев 2004, 19:17
Откуда: Moscow, Russia
Контактная информация:

23 дек 2004, 14:26

Теперь если отредактировоать гиперссылку во второй ячейке, то

ActiveSheet.Hyperlinks.Count увеличится; ПерваяЯчейка.Hyperlinks.Count = 1; а вот ВтораяЯчейка.Hyperlinks.Count = 2
При дальнейших правках ВтораяЯчейка.Hyperlinks.Count остается равным 2....

Мистика....
Аватара пользователя
Игорь Акопян
Сообщения: 1419
Зарегистрирован: 13 окт 2004, 17:11
Откуда: СПБ
Контактная информация:

23 дек 2004, 16:39

Специально проверил в 2000.
При копировании ActiveSheet.Hyperlinks.Count увеличивается.
Selection.Hyperlinks.Count показывает реальное кол-во гиперссылок в выделенном диапазоне, как при создании, так и после копирования
Изображение
e-aleks
Сообщения: 8
Зарегистрирован: 22 дек 2004, 11:06

21 янв 2005, 15:50

А можно добавить в код пару строчек, чтобы в ячейке рядом отображалось еще название страницы.
Заранее спасибо.
Аватара пользователя
Naeel Maqsudov
Сообщения: 2551
Зарегистрирован: 20 фев 2004, 19:17
Откуда: Moscow, Russia
Контактная информация:

01 фев 2005, 22:02

Элементарно. Достаточно одной строки.

Код: Выделить всё

Sub qwe() 
Dim lnk As Hyperlink 
  For Each lnk In ActiveSheet.Hyperlinks 
    lnk.Range.Next.Value = lnk.Address 
    lnk.Range.Next.Next.Value = lnk.Range.WorkSheet.Name
  Next 
End Sub 

... некрасиво получилось... часто втречается lnk надо with использовать...
e-aleks
Сообщения: 8
Зарегистрирован: 22 дек 2004, 11:06

02 фев 2005, 07:15

Спасибо, большое.
Ответить