Как заменить ссылку текстом в Microsoft Word

Меня попросили написать статью по поводу известной проблемы с паразитными названиями перекрёстных ссылок в тексте документа MS Word, а именно, когда вы вставляете в текст документа перекрёстную ссылку (меню ссылки/перекрёстная ссылка) Word позволяет вставить либо название типа "Рисунок . " либо название полностью, что приводит к текстам типа ". на рисунке (Рисунок 10) мы видим. " или ещё более нелепым конструкциям, тогда как согласно ГОСТ, необходимо оставлять только номер ". на рисунке 10 мы видим. ". Эту проблему просто решить с помощью небольшого скрипта VBA. Код перекрёстной ссылки (его можно посмотреть, переключая режимы просмотра "shift + f9") выглядит примерно так < REF _Ref127884797 h >Для того, чтобы убрать паразитные названия и оставить только номер необходимо добавить в код ключ " #0 ". При этом надо следить чтобы случайно не вставлялись лишние ключи (это приведёт к ошибкам) и корректно переключать отображение перекрёстной ссылки из вида "текст" в "код" и обратно. Ниже приведён код, который это делает.

re>Sub PerSsylkiGost() Dim I As Long, DlStroki As Long, LinkText$ 'Перебираем все поля типа ссылки For I = 1 To ActiveDocument.Fields.Count 'Выбираем из них перекрёстные ссылки и выделяем их If ActiveDocument.Fields.Item(I).Type = wdFieldRef Then ActiveDocument.Fields.Item(I).Select With Selection LinkText = .Text ' MsgBox Mid(LinkText, 2, 4) 'Проверка на корректность открытия кода ссылки, т.к. в тексте могут 'присутствовать п.ссылки в виде кода и текста 'приводим п.ссылку к виду "код" If Len(LinkText) < 4 Then .Fields.ToggleShowCodes Else If Mid(LinkText, 2, 4) = "Ref " Or Mid(LinkText, 2, 4) = " Ref" _ Or Mid(LinkText, 2, 4) = "REF " Or Mid(LinkText, 2, 4) = " REF" Then Else .Fields.ToggleShowCodes End If End If .Find.ClearFormatting .Find.Replacement.ClearFormatting 'содержаение кода п.ссылки передаём переменной и обрезаем её с краёв LinkText = .Text DlStroki = Len(LinkText) LinkText = Mid(LinkText, 2, DlStroki - 2) 'Проверяем, не содержит ли уже п.ссылка нужный нам код - во избежание ошибок If InStr(LinkText, "# 0") <>0 Or InStr(LinkText, "#0") <> 0 Then Else With .Find 'Если кода в п.ссылке нет, вставляем его .Text = LinkText DlStroki = InStr(LinkText, "h") .Replacement.Text = Left(LinkText, DlStroki - 1) #0 " "#0 " ' Теперь скрипт вставляет ключ "#0 " перед ключом "h" а не в конце строки ' .Replacement.Text = LinkText #0 " .Forward = True .Wrap = wdFindStop .Format = False .MatchCase = False .MatchWholeWord = False .MatchWildcards = False .MatchSoundsLike = False .MatchAllWordForms = False .Execute Replace:=wdReplaceAll End With 'Обновляем п.ссылки - приводим их к нормальному виду ' .Fields.Update End If ' .Fields.Update End With End If Next I 'Обновляем п.ссылки - приводим их к нормальному виду ActiveDocument.Fields.Update msgbox "Готово" End Sub

  • Разработка для Office 365
  • Visual Basic for Applications

Как преобразовать гиперссылки в документе Word в обычный текст

На днях я написал коротенькую заметку "Убей гиперссылку", где дал совет по быстрому превращению гиперссылки в обычный текст.

А один из читателей моей рассылки — Евгений — задал мне вопрос: можно ли как-то автоматизировать этот процесс? Это может пригодиться, когда таких ссылок большое количество.

Теперь я готов ответить на этот вопрос положительно. На сайте Allen L. Wyatt я нашел описание небольшого макроса, который позволяет удалить мгновенно из документа все гиперссылки, преобразовав их в обычный текст. Ниже привожу код и инструкцию по его внедрению в Word.

re>Sub RemoveHyperlinks() While ActiveDocument.Hyperlinks.Count > 0 ActiveDocument.Hyperlinks(1).Delete Wend Application.Options.AutoFormatAsYouTypeReplaceHyperlinks = False End Sub

Дальнейшие действия стандартны: вы должны вынести на панель инструментов кнопку для этого макроса и/или же назначить этому макросу сочетание клавиш для быстрого доступа.

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

Еще записи по вопросам использования Microsoft Word:

  • 3 способа очистки списка недавно открытых документов
  • Word 2007: полотно, рисунки, линии
  • Word 97. Слияние документов как один из способов упростить свою работу
  • Абзац с цветным фоном
  • Автозаполняемые колонтитулы
  • Автоматическая запись макроса
  • Автоматическая нумерация билетов
  • Автоматическая расстановка переносов
  • Автоматическое обновление полей при открытии документа
  • Автоматическое сохранение документа при его закрытии
  • Автотекст с последовательной нумерацией
  • Автоформат документов
  • Буквица
  • Быстрая смена ориентации страниц документа
  • Быстрое изменение стиля форматирования текста
  • Быстрое перемещение между открытыми документами Word
  • Быстрое создание нового документа на основе шаблона
  • Быстрое удаление границ у таблицы
  • Быстрый ввод текста с помощью команды =rand()
  • Быстрый поиск форматированного текста
  • В чем различие между Автозаменой и Автотекстом
  • В чем различие между стилями Обычный (Normal) и Основной текст (Body Text)?
  • Ввод повторяющихся фрагментов текста в Word 2007
  • Ввод часто повторяющихся фрагментов текста
  • Вставка будущей даты
Оцените статью
InternetDoc.ru
Добавить комментарий