在 Word 2010 中重命名书签

Mok*_*bai 12 microsoft-word microsoft-word-2010

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

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

在此处输入图片说明

现在让我们说我有一个我刚刚粗略命名的书签,只是为了让它到位:
在此处输入图片说明

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

我可以通过选择相同的文本然后删除旧的文本来插入一个新的书签,但是你会得到这个:
在此处输入图片说明

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

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

我在谷歌上搜索并在网络上看到了几个 VBA 脚本,例如在这个问题中,但是当它们有效地创建一个新的 boomark 并删除旧的时,它们会产生与上述相同的问题并且不太理想。

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

Dav*_*ill 7

有没有更简单或更有效的方法来重命名 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
Run Code Online (Sandbox Code Playgroud)

更改书签的“名称”而不是其文本,并通过附加循环遍历文档中的字段以更改可能引用被重命名的书签的任何字段。

使用此脚本时应小心。例如,重命名任何简单地命名为“REF”(或此类的大写或小写变体)的书签将以有趣和意想不到的方式破坏所有引用。这仅作为示例和粗略修复。

如果您想一次性批量重命名多个书签,请参阅是否有更简单或更有效的方法来重命名 Word 文档中的书签?其中还包括示例 VBA 代码。