Как создать скрытую ссылку в Microsoft Word

VBA, Word: перекрёстные ссылки согласно ГОСТ (убираем из текста паразитные названия «Рисунок..», «Таблица..» и тп)

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

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

sovet

Автоматическая нумерация рисунков и других элементов документа — таблиц, формул, элементов списка литературы и тому подобного — в совокупности с перекрестными ссылками — крайне полезная и востребованная, особенно, для больших документов возможность Word. Однако, к сожалению пользователей, эти механизмы продуманы на удивление плохо и имеют существенные ограничения.

Одним из таких ограничений является невозможность вставлять в качестве перекрестной ссылки "только номер".

То есть, если у вас есть рисунок с подписью «Рисунок 1. Ель», то вы можете в качестве перекрестной ссылки использовать либо «название целиком»: «…изображено на Рисунок 1. Ель», либо «постоянную часть и номер»: «…изображено на Рисунок 1», либо «только текст названия»: «…изображено на Ель». Готового способа использовать только номер, то есть: «…изображено на рисунке 1», — нет. Хотя только в этом случае мы можем получить текст, согласованный в падежах и числах.

В официальной справочной системе Word демонстрируется не самый типичный способ ссылаться на рисунок: "См. Рис. 1" (обратите внимание, что на иллюстрации "рис" написано со строчной буквы — в действительности ссылка будет вставлена так, как указано в поясняющем тексте — с прописной).

То есть особенности русского языка разработчиками просто проигнорированы.Пользователь имеет возможность вручную редактировать текст перекрестных ссылок, однако после обновления нумерации (выполняется путем выделения соответствующего текста и нажатия F9; или автоматически происходит при печати документа) ссылка принимает исходный вид.

Рассмотрим несколько подходов к решению этой проблемы: "скрытый текст", "удаление постоянной части заменой", "модификация скрытых закладок", "модификация кода поля перекрестной ссылки". Если вас не интересуют технические подробности — для каждого из способов приводится пошаговая инструкция для неподготовленного пользователя.

Создание перекрестных ссылок "только номер" с помощью "скрытого текста"

Данный способ является самым простым и универсальным.Фрагмент текста в Word можно сделать "скрытым", то есть отображаемым только в режиме отображения непечатаемых символов. Соответственно, если при вставке перекрестной ссылки помечать постоянную часть как скрытый текст, то это вполне решает проблему.

1. Вставьте перекрестную ссылку как "постоянную часть и номер".2. Выделите постоянную часть (например "Рисунок ") и нажмите Ctrl+Shift+H. Либо: в контекстном меню выберите "Шрифт. ", в открывшемся окне выберите "скрытый", нажмите "ОК".

Теперь перекерстная ссылка отображается так как нужно — "только номер".

В режиме отображения непечатаемых символов отображается скрытая постоянная часть (скрытые текст подчеркивается пунктиром).

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

Создание перекрестных ссылок "только номер" путем модификации скрытых закладок

Когда вы создаете перекрестную ссылку, Word автоматически создает скрытую закладку, включающую в себя текст ссылки.

Соответственно, переопределив закладку, мы решаем проблему. Переопределение можно выполнить вручную, выбрав только номер в подписи рисунка, выбрав соответствующую закладку и нажав кнопку "Добавить".

После обновления перекрестных ссылок (F9) будет отображаться только номер.

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

1. При создании документа вставляйте перекрестные ссылки в режиме "постоянная часть и номер", но формулируйте предложения так, будто у вас ссылка содержит только номер, например: "на рисунке Рисунок 4.2 представлено. "

2. Перед публикацией документа (например, перед печатью либо перед сохранением окончательной версии документа) запустите предлагаемый макрос (добавление в документ и запуск описывается ниже), выделите весь текст и нажмите F9 — теперь все ссылки будут отображаться в режиме "только" номер, даже при повтором обновлении (F9).

Преимущества этого решения: нет необходимости помечать постоянную часть каждой добавляемой перекрестной ссылки как "скрытый текст" (см. предыдущий метод); после запуска макроса ссылки отображаются в режиме "только номер" и в режиме отображения непечатаемых символов; простой метод: запуск макроса выполняется двумя действиями пользователя (Alt+F8 и щелчок мышью — см. ниже).

Ограничения: требует использования макроса (может быть запрещено политикой безопасности); перекрестные ссылки, создаваемые после запуска макроса, содержат постоянную часть перед номером — поэтому требуется повторный запуск; перекрестные ссылки, вставленные в режиме "название целиком" будут сокращены до "номер и название" — без постоянной части.

Описанный макрос работает в Office 2003/2007/2010. Во избежание проблем, сделайте резервную копию данных перед применением макроса.

Если вы знаете, каким образом добавить макрос в документ, то можете воспользоваться его кодом (загрузить файл bas) либо файлом, содержащим макрос (загрузить файл docm).

Если не знаете, выполните описанные ниже шаги (инструкция для Word 2007 и 2010).

1. Загрузите и сохраните файл docm.2. Откройте ваш документ и нажмите Alt+F8. Откроется окно "Макрос".3. Нажмите кнопку "Организатор…" в окне "Макрос". Откроется окно "Организатор".4.

Нажмите на кнопку "Закрыть файл" с правой стороны окна. Кнопка изменит вид на "Открыть файл…"

5. Нажмите кнопку "Открыть файл…" и выберите загруженный файл. Обратите внимание, что в диалоговом окне по умолчанию предлагается выбрать шаблоны: внизу окна в ниспадающем списке "Тип файлов" отображается "Все шаблоны". 6. Выберите в этом списке "Все файлы", чтобы в окне выбора файла отображался загруженный файл.

8. Закройте окно "Организатор".

Теперь всё готово.

Для того чтобы запустить макрос, нажмите ALT+F8, выберите в списке макросов "Искл_из_перекрест_ссылок_пост_часть" и нажмите "Выполнить" (либо дважды щелкните на названии макроса в списке).

По завершению работы макроса отображается сообщение. Если вы не хотите его видеть каждый раз,то используйте макрос "Искл_из_перекрест_ссылок_пост_часть_тих о".

Другие способы создания перекрестных ссылок "только номер" описаны в отдельной записи.

Как скрыть текст в Word

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

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

Невидимый текст в Word

Предположим, вы хотите полностью скрыть некий абзац или предложение.

Полностью, значит без особых намеков на его присутствие. Выделите участок текста, который хотите скрыть.

И нажмите Ctrl + D . Откроется окошко изменения параметров шрифта, установите флажок в чекбоксе «скрытый» и примените настройки.

Текст станет невидимым, но не отступы сверху и снизу, впрочем, что вам мешает их удалить, придав документу законченный и корректно оформленный вид?

Сворачивание под кат

Второй способ скрытия текста применяется, когда в теле документа нужно оставить ссылку на такой скрытый контент. Способ этот известен как скрытие под кат, вы наверняка уже имели с ним дело при просмотре веб-страниц на разных сайтах и блогах. В HTML для скрытия основной части текста используется кастомный тэг cut, в Word для этого часть текста придется оформить заголовком, лучше всего третьим. Вы можете вставить перед скрываемым текстом какую-нибудь фразу вроде «Подробнее», «Пояснение», «Добро пожаловать под кат» и тому подобное и точно так же сделать ее заголовком. Выделите этот участок текста мышкой и выберите в блоке «Стили» заголовок подходящего уровня.

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

кликом по которому можно будет сворачивать и разворачивать блок текста под заголовком.

А чтобы сделать блоки свернутыми по умолчанию, установите курсор на видимый заголовок, перейдите в параметры абзаца,

и отметьте флажком опцию «Свернуты по умолчанию».

При этом следует обращать внимание, что под заголовком будет скрыт весь текст, а не только ближайший абзац.

Чтобы оставить остальную часть контента видимой, перед ней также нужно будет вставить заголовок, но уже более высокого уровня, поскольку примененная к вышерасположенному заголовку настройка «Свернуты по умолчанию» автоматически применится к нижерасположенным заголовкам этого же уровня и тех, что ниже.

Оцените статью
InternetDoc.ru
Добавить комментарий