在今天的文章中,我們想與您分享從您的 Word 文檔中批量提取所有書籤以便一次查看它們的步驟。
在 Word 中,您可以使用內置函數生成目錄或圖表。 但是,您最終會發現沒有通常的方法可以提取文檔的所有書籤並將它們排列在新文檔中。
像往常一樣,我們的使命是帶領您穿越神話,並為您提供將所有書籤及其文本導出到新的空白文檔的宏方式。
從單個文檔中批量提取所有書籤
- 首先,開啟目標文檔,然後按下「Alt+F11」調出VBA編輯器。
- 接下來,單擊“普通”,然後單擊“插入”。
- 並選擇“模塊”在“普通”項目下新建一個。
- 然後雙擊它以顯示編輯空間。
- 在其中粘貼以下宏:
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



