如何從 Word 文檔中批量提取所有書籤

立即分享:

在今天的文章中,我們想與您分享從您的 Word 文檔中批量提取所有書籤以便一次查看它們的步驟。

在 Word 中,您可以使用內置函數生成目錄或圖表。 但是,您最終會發現沒有通常的方法可以提取文檔的所有書籤並將它們排列在新文檔中。如何從 Word 文檔中批量提取所有書籤

像往常一樣,我們的使命是帶領您穿越神話,並為您提供將所有書籤及其文本導出到新的空白文檔的宏方式。

從單個文檔中批量提取所有書籤

  1. 首先,開啟目標文檔,然後按下「Alt+F11」調出VBA編輯器。
  2. 接下來,單擊“普通”,然後單擊“插入”。
  3. 並選擇“模塊”在“普通”項目下新建一個。單擊“常規”->單擊“插入”->單擊“模塊”
  4. 然後雙擊它以顯示編輯空間。
  5. 在其中粘貼以下宏:
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
  1. 最後但並非最不重要的一點,單擊“運行”。粘貼代碼->單擊“運行”

當前文檔的所有書籤將放在與原始文件相同目錄下的新文檔的表格中。

您可以在新文檔中看到 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

立即分享:

評論被關閉。