在Word 2010中重命名书签


13

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

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

在此处输入图片说明

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

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

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

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

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

我四处搜寻,并在网上看到了几个VBA脚本,例如此问题,但是由于它们有效地创建了一个新的boomark并删除了旧的bombar,因此它们会产生与上述相同的问题,并且不理想。

是否有更简单或更有效的方法来重命名Word文档中的书签?还是我可能使用Wrong Tool™来完成这项工作?


您是说Word 2013,而不是2010?
希腊语-Area 51 Proposal

@LePressentiment我的Word副本是2010,但是我不明白为什么下面的答案不适用于2013,除非他们对版本之间的书签功能进行了大修。如果他们有的话,我实际上会感到惊讶。
Mokubai

@LePressentiment查看我的答案,该答案已由Mokubai更新。
DavidPostill

Answers:


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

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

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

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


@Mokubai看来您可以使用外接程序执行此操作(请参阅更新的答案)?不幸的是,我没有Word的副本可用于测试...
DavidPostill

当我回到PC时,我会在早上对外接程序进行测试。可能对家庭来说很好,但是在工作中我认为我将无法使用它,因为我们的IT部门可能会对这种事情有所警惕。我将尝试这两种方法,看看是否可以增强您的VBA脚本来进行搜索和替换。如果我到某个地方,你也可以的话,我想把它编辑成你的答案。
Mokubai

@LePressentiment如果您需要帮助,可以在上面的VBA脚本中添加一些功能,以便为您提供当前名称和新名称的输入框,并进行了肮脏的搜索并替换了引用这些书签的字段。它不是完美的,但总比没有好,而且比我在工作中需要做的还要多。
Mokubai

书签工具加载项在重命名书签后会中断对书签的引用(对我而言,在Windows的Word 365中)。
filups21

1

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

对于您要引用的文本(在本例中为标题),按如下所示设置Document属性标题:

Insert tab→交通Quick Parts→交通Document Property→交通Title

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

然后,引用它,你可以只是去Insert tab→交通Quick Parts→交通Field→交通Title,或不喜欢我做了什么意外-我有一个基准设置,当我更新,它与F9它添加标题框,这是引用。

这很酷,因为当您更新标题框时,所有引用均自动更新,而无需按F9!!!!当您在页眉中具有引用时,这非常有用,因为Ctrl+ A函数无法捕获页眉/页脚中的内容,通常您必须在页眉/页脚中双击以进行选择,然后按F9进行更新。

因此,不要像上述那样创建标题引用,而是这样做:

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

    • 选择标题框(确保单击顶部的标题标签以选择所有框)
    • Insert→→ Bookmark(说出名字Project_title)→add
  • 然后添加如下引用:

    • Insert tab→交通Quick Parts→交通Field→交通Ref(并选择Project_title或随便你把它叫做)
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.