Удаление всех гиперссылок из документа Word

KAPUSTA

Поделитесь кто-нибудь макросом, пожалуйста, который может сразу все гиперссылки
из вордового документа удалить а текст их оставить. Ковырятся руками надоело страшно.

voronetskaya

сохрани его как просто текст

KAPUSTA

Форматриование потеряется. Картинки, таблицы

iakobi91

Измени формат ссылок, чтоб они с текстом сливались

KAPUSTA

Наваял такую непонятную штуку

Sub ClearHyperLinks
Dim doc As Word.Document
Dim hl As Word.Hyperlink

Set doc = Documents(1)

For Each hl In doc.Hyperlinks
hl.Delete
Next hl
End Sub
самое интересное - один раз она таки сработала каким-то образом.
Но больше не хочет ни в какую. Может есть знатоки этого замечательного языка,
которые смогут макрос до ума довести. Проблема еще актуальна.

maggi14

а) возможно, макрос еще не завершился. У интерпретируемых языков такое бывает;
б) и что, при этом не потерялся текст?

KAPUSTA

а) возможно, макрос еще не завершился. У интерпретируемых языков такое бывает;
Нет, он как-то по другому ругается, не могу сейчас сказать как... Завтра на работе посмотрю.
б) и что, при этом не потерялся текст?
Текст сохранился. Я так понял - гиперссылка в ворде является независимым объектом и связана
с текстом "территориально". Кроме того текст в том месте где стоит ссылка подсвечивается.

bars71

А обязательно макрос? Select, ctrl-shift-F9 не подойдет?

bars71

Или макросом.
 Sub ClearHyperLinks_
Dim n As Long
For n = 1 To ActiveDocument.Hyperlinks.Count
ActiveDocument.Hyperlinks(1).Delete
Next n
End Sub

bobby

А что, в VBA пределы изменения параметра цикла вычисляются до выполнения цикла?

bars71

Нет.
ActiveDocument.Hyperlinks(1 ).Delete
Как дойдет до нуля -- останавливается.

bobby

Тогда будет удалена только половина ссылок, потому что ActiveDocument.Hyperlinks.Count уменьшается, а n увеличивается

bars71

Ну, насчет половины ссылок, это вряд ли
Я так понимаю его работу:
создается цикл (который отработает n раз, независимо от изменения hyperlinks.Count)
при каждом вызове Delete нумерация объектов "смещается" 2ой станет 1ым и т.д.
В предыдущем посте я действительно нагнал

bobby

Ну да, я и говорю, пределы изменения параметра цикла вычисляются до выполнения цикла.

KAPUSTA

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