Sådan batches udtræk af alle bogmærker fra dit Word-dokument

I dagens artikel vil vi gerne dele trinene med dig til batchudpakning af alle bogmærker fra dit Word-dokument for at se dem på én gang.

I Word kan du generere en indholdsfortegnelse eller en figurtabel med den indbyggede funktion. Men i sidste ende finder du, at der ikke er nogen almindelig måde at udtrække alle bogmærker i et dokument og arrangere dem på et nyt dokument.Sådan batches udtræk af alle bogmærker fra dit Word-dokument

Som altid er vores mission at lede dig gennem myten og give dig makrovejen til at eksportere alle bogmærker såvel som deres tekster til et nyt tomt dokument.

Batch-udtræk alle bogmærker fra et enkelt dokument

  1. For at starte skal du åbne måldokumentet og trykke på "Alt+F11" for at åbne VBA-editoren.
  2. Klik derefter på “Normal” og derefter “Indsæt”.
  3. Og vælg "Module" for at oprette et nyt under "Normal" -projektet.Klik på "Normal" -> Klik på "Indsæt" -> Klik på "Modul"
  4. Dobbeltklik derefter på den for at frembringe redigeringsområdet.
  5. Indsæt følgende makro der:
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. Sidst men ikke mindst, klik på "Kør".Indsæt koder-> Klik på "Kør"

Alle bogmærker i det aktuelle dokument placeres i en tabel på et nyt dokument, der er gemt under samme bibliotek som den originale fil.

Du kan se en tabel med 3 kolonner i det nye dokument. Og hvis du følger "Ctrl + Click", bringer det dig til bogmærket i det originale dokument.En tabel med alle bogmærker og deres tekster og sidetal

Batchudtræk bogmærker fra flere dokumenter

Følg de samme trin ovenfor for at installere og køre en makro. Kun denne gang erstatter du koderne med de bølgende:

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

Når du har kørt makroen, er der et inputfelt. Indtast mappestien, hvor du gemmer alle dokumenter. Og husk at tilføj “\” i slutningen af ​​stien hvis du bare kopierer det fra mappens tekstfelt. Klik derefter på “OK”.Indtast mappesti -> Klik på "OK"

Sådan redder du dig hurtigt fra datakatastrofe

Datakatastrofen, vi taler om i Word, kan ske, når den holder op med at arbejde unormalt. Nogle gange bliver du heldig og har alle oplysninger intakte. Og andre gange bliver du offer for katastrofen. Derfor er den hurtigste måde at hente så mange data som muligt på at få et værktøj til rette docx.

Forfatter Introduktion:

Vera Chen er en datagendannelsesekspert i DataNumen, Inc., som er verdens førende inden for datagendannelsesteknologier, herunder reparation xlsx og pdf produkter til reparation af software. For mere information besøg www.datanumen.com

Kommentarer er lukket.