在今天的文章中,我们想与您分享从您的Word文档中批量提取所有书签以便一次查看它们的步骤。
在 Word 中,您可以使用内置函数生成目录或图表目录。 但是,您最终会发现没有通常的方法可以提取文档的所有书签并将它们排列在新文档中。
一如既往,我们的使命是带您穿越神话,并为您提供将所有书签及其文本导出到新空白文档的宏方法。
从单个文档中批量提取所有书签
- 到tar关闭,打开 tar获取文档并按“Alt+F11”调用 VBA 编辑器。
- 接下来单击“正常”,然后单击“插入”。
- 并选择“Module”在“Normal”项目下新建一个。
- 然后双击它带出编辑空间。
- 将以下宏粘贴到那里:
Sub ExtractBookmarksInADoc()
Dim objBookmark As Bookmark
Dim objTable As Table
Dim nRow As Integer
Dim objDoc As Document, objNewDoc As Document
Dim objParagraph As Paragraph
Set objDoc = ActiveDocument
If objDoc.Bookmarks.Count = 0 Then
MsgBox ("There is no bookmark in this document.")
Else
Set objNewDoc = Documents.Add
Selection.TypeText Text:="Bookmarks in " & "'" & objDoc.Name & "'"
Set objTable = Selection.Tables.Add(Range:=Selection.Range, numrows:=1, numcolumns:=3)
objTable.Borders.Enable = True
nRow = 1
For Each objParagraph In objNewDoc.Paragraphs
If objParagraph.Range.Style = "Caption" Then
objParagraph.Range.Delete
End If
Next objParagraph
With objTable
.Cell(1, 1).Range.Text = "Name"
.Cell(1, 2).Range.Text = "Texts"
.Cell(1, 3).Range.Text = "Page Number"
For Each objBookmark In objDoc.Bookmarks
objTable.Rows.Add
nRow = nRow + 1
.Cell(nRow, 1).Range.Text = objBookmark.Name
.Cell(nRow, 2).Range.Text = objBookmark.Range.Text
.Cell(nRow, 3).Range.Text = objBookmark.Range.Information(wdActiveEndAdjustedPageNumber)
objDoc.Hyperlinks.Add Anchor:=.Cell(nRow, 3).Range, Address:=objDoc.Name, _
SubAddress:=objBookmark.Name, TextToDisplay:=.Cell(nRow, 3).Range.Text
Next objBookmark
End With
End If
objNewDoc.SaveAs2 FileName:=objDoc.Path & "\" & "Bookmarks in " & objDoc.Name
End Sub
- 最后但并非最不重要的一点是,单击“运行”。
当前文档的所有书签将被放入一个新文档的表格中,该新文档保存在与原始文件相同的目录下。
您可以在新文档中看到包含 3 列的表格。 如果您按“Ctrl+单击”,它将带您到原始文档中的书签。
从多个文档中批量提取书签
按照上述相同步骤安装和运行宏。 只有这一次,您将代码替换为以下代码:
Sub ExtractBookmarksInMultiDoc()
Dim objBookmark As Bookmark
Dim objTable As Table
Dim nRow As Integer
Dim objDoc As Document, objNewDoc As Document
Dim objParagraph As Paragraph
Dim strFolder As String, strFile As String
strFolder = InputBox("Enter folder path here: ")
strFile = Dir(strFolder & "*.docx", vbNormal)
While strFile <> ""
Set objDoc = Documents.Open(FileName:=strFolder & strFile)
Set objDoc = ActiveDocument
Set objNewDoc = Documents.Add
Selection.TypeText Text:="Bookmarks in " & "'" & objDoc.Name & "'"
Set objTable = Selection.Tables.Add(Range:=Selection.Range, numrows:=1, numcolumns:=3)
objTable.Borders.Enable = True
nRow = 1
For Each objParagraph In objNewDoc.Paragraphs
If objParagraph.Range.Style = "Caption" Then
objParagraph.Range.Delete
End If
Next objParagraph
With objTable
.Cell(1, 1).Range.Text = "Name"
.Cell(1, 2).Range.Text = "Texts"
.Cell(1, 3).Range.Text = "Page Number"
For Each objBookmark In objDoc.Bookmarks
objTable.Rows.Add
nRow = nRow + 1
.Cell(nRow, 1).Range.Text = objBookmark.Name
.Cell(nRow, 2).Range.Text = objBookmark.Range.Text
.Cell(nRow, 3).Range.Text = objBookmark.Range.Information(wdActiveEndAdjustedPageNumber)
objDoc.Hyperlinks.Add Anchor:=.Cell(nRow, 3).Range, Address:=objDoc.Name, _
SubAddress:=objBookmark.Name, TextToDisplay:=.Cell(nRow, 3).Range.Text
Next objBookmark
End With
objNewDoc.SaveAs2 FileName:=objDoc.Path & "\" & "Bookmarks in " & objDoc.Name
objDoc.Close
strFile = Dir()
Wend
End Sub
运行宏后,会出现一个输入框。 输入存储所有文档的文件夹路径。 并记住 在路径末尾添加“\” 如果您只是从文件夹文本框中复制它。 然后单击“确定”。
如何快速从数据灾难中拯救自己
我们在 Word 中谈论的数据灾难可能会在它异常停止工作时发生。 有时,您很幸运,所有信息都完好无损。 而其他时候,你成为灾难的受害者。 因此,检索尽可能多的数据的最快方法是获得一个工具来 修复 docx.
作者简介:
Vera Chen 是一位数据恢复专家 DataNumen, Inc.,它是数据恢复技术领域的世界领先者,包括 修复xlsx 以及 pdf 修复软件产品。 欲了解更多信息,请访问 datanumen.com



