11

Я часто использую закладки в Word для создания технических документов с внутренними ссылками на цитаты и часто используемой информацией, которая должна быть согласованной по всему документу. Вы можете создать их, выделив текст, а затем перейдя в меню Insert -> Links -> Bookmark и присвоив имя, затем перейдя в Insert -> Links -> Citations и выбрав закладку для вставки. Затем будет вставлен текст этой закладки в другом месте документа.

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

Теперь допустим, что у меня есть закладка, которую я только что назвал, просто чтобы поставить ее на место:

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

Я могу вставить НОВУЮ закладку, выбрав тот же текст, а затем удалив старую, но тогда вы получите следующее:

Затем вы должны щелкнуть правой кнопкой мыши на поле и указать его на (теперь эффективно переименованную) закладку.

Это не совсем удобно, особенно в большом документе, где эта закладка используется несколько раз.

Я гуглил и видел несколько скриптов VBA в сети, таких как в этом вопросе, но, поскольку они эффективно создают новую буммарку и удаляют старую, они создают ту же проблему, что и выше, и не идеальны.

Существует ли более простой или эффективный способ переименования закладок в документах Word? Или я использую Wrong Tool ™ для этой работы?

2 ответа2

6

Существует ли более простой или эффективный способ переименования закладок в документах Word?

В Word нет встроенной функции переименования. Есть несколько вариантов, чтобы обойти этот недостаток:

  1. Используйте надстройку.

  2. Используйте VBA.


Решение для надстроек

Используйте надстройку Bookmark Tool

Он предлагает дружественный пользовательский интерфейс для выполнения всего, что будет делать стандартное диалоговое окно «Закладки», а также многое другое.

Инструмент закладок был разработан для Word 2003. Это полностью функционально с Word 2007/2010.

...

С разделом «Добавить / переименовать закладку» добавление закладок очень просто.

  • Как и в стандартном диалоговом окне, вы просто выбираете текст, вводите имя в поле и нажимаете «Добавить».
  • В отличие от стандартного диалога, инструмент Закладка ограничивает ввод ключа допустимыми символами имени закладки и предупреждает вас, если вы пытаетесь создать повторяющееся имя закладки.
  • Вы также можете использовать этот раздел, чтобы переименовать существующую закладку.

Надстройка Source Bookmark Tool


VBA решение

Там нет функции переименования. Вы должны удалить старое имя и пометить диапазон новым именем закладки. Вот пример кода VBA:

Sub ReNameBookMark()
    Dim doc As Word.Document
    Dim rng As Word.Range
    Dim bmk As Word.Bookmark
    Dim inpBookmark, repBookmark, fieldStr As String

    Set doc = Word.ActiveDocument

    inpBookmark = InputBox("Enter bookmark name that you want to be replaced:", "BookMark Replace")
    repBookmark = InputBox("Enter bookmark name replace with:", "BookMark Replace")

    Set rng = doc.Bookmarks(inpBookmark).Range
    Set bmk = doc.Bookmarks(inpBookmark)
    bmk.Delete
    rng.Bookmarks.Add (repBookmark)

    If doc.Fields.Count >= 1 Then
        For i = 1 To doc.Fields.Count
            fieldStr = doc.Fields(i).Code.Text
            If Left(fieldStr, 4) = " REF" Then
                doc.Fields(i).Code.Text = Replace(fieldStr, inpBookmark, repBookmark, , 1, vbTextCompare)
                doc.Fields(i).Update
            End If

            'MsgBox "Code = " & doc.Fields(i).Code & vbCr & "Result = " & doc.Fields(i).Result & vbCr
        Next i
    End If
End Sub

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

Будьте осторожны, используя этот скрипт. Например, переименование любых закладок, которые просто называются "REF" (или их вариант в верхнем или нижнем регистре) , сломает ВСЕ ссылки забавным и неожиданным образом. Это только пример и примерное исправление.

Если вы хотите пакетное переименование нескольких закладок за один раз, посмотрите, есть ли более простой или эффективный способ переименовать закладки в документах Word? который также включает пример кода VBA.

1

У меня была такая же проблема, и я наткнулся на эту работу вокруг / решения.

Для текста, на который вы хотите сослаться, в моем случае это заголовок, установите заголовок свойства документа следующим образом:

Insert tabQuick PartsDocument PropertyTitle

Затем добавляется редактируемое поле для текста, в которое вы можете ввести свой заголовок.

Затем, чтобы сослаться на него, вы можете просто перейти на Insert tab → « Quick Parts → « Field → « Title или сделать то, что я сделал случайно - у меня была настроена ссылка, и когда я обновил ее с помощью F9, он добавил поле заголовка, на которое ссылался ,

Это очень круто, так как при обновлении поля заголовка все ссылки обновляются автоматически без нажатия клавиши F9 !!! Это замечательно, когда у вас есть ссылка в верхнем колонтитуле, так как функция Ctrl+A не фиксирует то, что находится в верхнем / нижнем колонтитуле, и вам, как правило, придется дважды щелкнуть внутри верхнего / нижнего колонтитула, чтобы выбрать, и нажать F9 для обновления.

Поэтому вместо создания ссылки на заголовок, как указано выше, сделайте следующее:

  • После настройки поля заголовка создайте закладку поля заголовка:

    • Выберите поле заголовка (убедитесь, что вы нажимаете вкладку заголовка вверху, чтобы выбрать все поле)
    • InsertBookmark → (назовите его, скажем, Project_title)→ add
  • Затем добавьте ссылку следующим образом:

    • Insert tabQuick PartsFieldRef (и выберите Project_title или как вы его назвали)

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .