Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Microsoft Office и VBA программирование > Microsoft Office Word
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 15.10.2009, 21:02   #1
БуреВестник
Пользователь
 
Регистрация: 19.09.2009
Сообщений: 69
По умолчанию Удаление всех гиперссылок

Кто может объяснить, почему такая конструкция
Код:
Sub HyperlinkDelete()
Dim oHyperlink As Hyperlink
For Each oHyperlink In ActiveDocument.Hyperlinks
    oHyperlink.Delete
Next
End Sub
не удаляет все гиперссылки?
А надо использовать вот такую
Код:
Sub RemoveHyperlinks()
While ActiveDocument.Hyperlinks.Count > 0
ActiveDocument.Hyperlinks(1).Delete
Wend
Application.Options.AutoFormatAsYouTypeReplaceHyperlinks = False
End Sub
БуреВестник вне форума Ответить с цитированием
Старый 15.10.2009, 21:16   #2
Sasha_Smirnov
Особый статус
Участник клуба
 
Аватар для Sasha_Smirnov
 
Регистрация: 24.11.2008
Сообщений: 1,535
По умолчанию

Ну это из-за того, что первый цикл находит
Код:
In ActiveDocument.Hyperlinks
сначала семейство гиперссылок документа пронумерованным от 1 до их количества, а после первого прохода — первой становится гиперссылка, стоявшая в документе второй.

В общем, тут собака и зарыта. Конкретно по шагам не распишу, уж увольте!

Можно ведь и вручную: всё выделить — и разорвать связи (шифт-контрол-F9).

Последний раз редактировалось Sasha_Smirnov; 15.10.2009 в 21:44.
Sasha_Smirnov вне форума Ответить с цитированием
Старый 15.10.2009, 22:51   #3
JTG
я получил эту роль
Старожил
 
Аватар для JTG
 
Регистрация: 25.05.2007
Сообщений: 3,694
По умолчанию

Я с конца документа удалял
Код:
For current = ActiveDocument.Hyperlinks.Count To 1 Step -1
    ActiveDocument.Hyperlinks(current).Delete
Next current
пыщь
JTG вне форума Ответить с цитированием
Старый 16.10.2009, 08:10   #4
БуреВестник
Пользователь
 
Регистрация: 19.09.2009
Сообщений: 69
По умолчанию

Sasha_Smirnov
Код:
Можно ведь и вручную: всё выделить — и разорвать связи (шифт-контрол-F9).
Если такое сделать, то будут удалены и поля.
БуреВестник вне форума Ответить с цитированием
Старый 16.10.2009, 09:30   #5
viter.alex
Балуюсь кодами
Участник клуба
 
Аватар для viter.alex
 
Регистрация: 09.01.2009
Сообщений: 1,837
По умолчанию

Все дело в том, что элемент удаляется из коллекции и после каждого удаления коллекция перестраивается. Это известная фишка, попробуйте также удалить, например, InlineShape. Получится то же самое, часть удалится, а часть останется.
Как правильно отметил JTG, удалять нужно начиная с конца коллекции, или, если не хочется вводить доп. переменную, можно так:
Код:
  Dim oHyp As Hyperlink
  Do
    For Each oHyp In ActiveDocument.Hyperlinks
      oHyp.Delete
    Next
  Loop While ActiveDocument.Hyperlinks.Count <> 0
Цитата:
Сообщение от JTG Посмотреть сообщение
Я с конца документа удалял
Не с конца документа, а с конца коллекции. Элементы в коллекцию добавляются по мере добавления гиперссылок в документ.

Добавлено позже
Виноват, действительно они выстраиваются по порядку вне зависимости от порядка добавления в документ
Лучше день потерять — потом за пять минут долететь!©

Последний раз редактировалось viter.alex; 16.10.2009 в 13:27. Причина: Был не прав
viter.alex вне форума Ответить с цитированием
Старый 16.10.2009, 09:47   #6
БуреВестник
Пользователь
 
Регистрация: 19.09.2009
Сообщений: 69
По умолчанию

viter.alex
а вот таблицы удаляются почему-то.
БуреВестник вне форума Ответить с цитированием
Старый 16.10.2009, 10:05   #7
viter.alex
Балуюсь кодами
Участник клуба
 
Аватар для viter.alex
 
Регистрация: 09.01.2009
Сообщений: 1,837
По умолчанию

Цитата:
Сообщение от БуреВестник Посмотреть сообщение
viter.alex
а вот таблицы удаляются почему-то.
Это уже вопрос к программистам Microsoft, как они там организовали коллекции
Лучше день потерять — потом за пять минут долететь!©
viter.alex вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Подсветка работающих гиперссылок stream71 Microsoft Office Excel 14 24.05.2018 06:09
prox server и получение всех гиперссылок с сайта xaero93 Работа с сетью в Delphi 1 15.10.2009 08:19
объединение гиперссылок petrov_ja Microsoft Office Excel 4 03.04.2009 20:22
Удаление всех прописных букв из ячейки samlay Microsoft Office Excel 4 07.11.2007 20:03
удаление гиперссылок Gambler Microsoft Office Word 0 30.10.2006 23:23