是否有更简单或更有效的方法来重命名Word文档中的书签?
Word没有内置的重命名功能。有两种方法可以解决此问题:
使用加载项。
使用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代码。