在 Word 2010 中重命名书签

在 Word 2010 中重命名书签

我经常使用 Word 中的书签来创建技术文档,其中包含指向引用和常用信息的内部链接,这些信息需要在整个文档中保持一致。您可以通过选择文本,然后转到菜单Insert-> Links->Bookmark并指定名称,然后转到Insert-> Links->Citations并选择要插入的书签来创建它们。然后会将该书签的文本插入文档中的其他位置。

举个例子来说明我这样做的原因:我经常在首页列出文档状态,然后在页脚中重复该信息,使用书签,我可以设置指向该文本的链接,然后只需将该链接插入页脚,每当我转到打印预览或更新文档中的所有字段时,它都会自动更新。这样,我就可以避免进行搜索和替换,只需知道正确的文本将在正确的位置更新即可。

在此处输入图片描述

现在假设我有一个书签,我刚刚粗略地命名了它,只是为了把它放到位:
在此处输入图片描述

没有右键单击来重命名书签,并且我找不到任何可以让我修改它的文档属性。

我可以插入新的通过选择相同的文本然后删除旧文本来添加书签,但你会得到这样的结果:
在此处输入图片描述

然后您必须右键单击该字段并将其指向(现在已有效重命名的)书签。

这并不完全可用,特别是在多次使用此书签的大型文档中。

我在 Google 上搜索了一下,在网上看到了几个 VBA 脚本,比如这个问题但由于它们实际上创建了新的 boommark 并删除了旧的 bo​​ommark,因此它们会产生与上述相同的问题,并且不太理想。

有没有更简单或更有效的方法来重命名 Word 文档中的书签?或者我可能使用了错误的工具™ 来完成这项工作?

答案1

有没有更简单或更有效的方法来重命名 Word 文档中的书签?

Word 没有内置重命名功能。有几种方法可以解决此缺陷:

  1. 使用插件。

  2. 使用 VBA。


附加解决方案

使用书签工具插件

它提供了一个友好的用户界面,可以执行标准书签对话框可以执行的所有操作以及更多功能。

书签工具是为 Word 2003 开发的。它在 Word 2007/2010 中完全发挥作用。

...

通过“添加/重命名书签”部分,添加书签变得轻而易举。

  • 与标准对话框一样,您只需选择文本,在字段中键入名称,然后单击“添加”。
  • 与标准对话框不同,书签工具将键盘输入限制为有效的书签名称字符,并在您尝试创建重复的书签名称时发出警报。
  • 您还可以使用此部分重命名现有书签。

    在此处输入图片描述

来源书签工具插件


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 代码。

答案2

我遇到了同样的问题,并偶然发现了这个解决方法/解决方案。

对于要引用的文本(在我的情况下为标题),设置文档属性标题如下:

Insert tabQuick PartsDocument PropertyTitle

然后会添加一个可编辑的文本框,您可以在其中输入标题。

然后,要引用它,您只需转到Insert tabQuick PartsFieldTitle,或者像我意外做的那样 - 我设置了一个参考,当我用它更新它时,F9添加了它所引用的标题框。

这非常酷,因为当你更新标题框时,所有引用都会自动更新而无需按下F9!!! 当你在页眉中有引用时这非常棒,因为Ctrl+A函数不会捕获页眉/页脚中的内容,并且你通常必须在页眉/页脚内双击进行选择,然后按下F9进行更新。

因此,不要像上面提到的那样创建标题引用,而是执行以下操作:

  • 设置完标题框后,创建标题框的书签:

    • 选择标题框(确保单击顶部的标题选项卡以选择整个框)
    • InsertBookmark→(说出名字Project_title)→add
  • 然后像这样添加引用:

    • Insert tabQuick PartsFieldRef(并选择Project_title或无论你如何称呼它)

答案3

上述 David Postill 的 vba 代码抓住了要点,但遗漏了一件事:它将修复文档主体中的引用,但不会修复隐藏在页眉或页脚中的任何引用。请参阅我为回答类似问题而发布的代码,网址为: https://superuser.com/a/1612677/881187

它提供批量重命名书签的功能,包括对整个文档或选定内容进行操作的选项,以及根据前缀重命名书签组。然后,它还会修改所有引用、整个文档,包括页眉和页脚。

相关内容