Hur man batchextraherar alla bokmärken från ditt Word-dokument

I dagens artikel skulle vi vilja dela med dig stegen för att batchextrahera alla bokmärken från ditt Word-dokument för att visa dem på en gång.

I Word kan du skapa en innehållsförteckning eller en figurförteckning med den inbyggda funktionen. Men du kommer i slutändan att upptäcka att det inte finns något vanligt sätt att extrahera alla bokmärken i ett dokument och ordna dem på ett nytt dokument.Hur man batchextraherar alla bokmärken från ditt Word-dokument

Som alltid är vårt uppdrag att leda dig genom myten och förse dig med makrosättet att exportera alla bokmärken såväl som deras texter till ett nytt tomt dokument.

Batch Extrahera alla bokmärken från ett enda dokument

  1. För att börja, öppna måldokumentet och tryck på "Alt + F11" för att starta VBA-editorn.
  2. Klicka sedan på “Normal” och sedan “Infoga”.
  3. Och välj "Modul" för att skapa en ny under "Normal" projekt.Klicka på "Normal" -> Klicka på "Infoga" -> Klicka på "Modul"
  4. Dubbelklicka sedan på den för att få fram redigeringsutrymmet.
  5. Klistra in följande makro där:
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. Sist men inte minst, klicka på "Kör".Klistra in koder-> Klicka på "Kör"

Alla bokmärken i det aktuella dokumentet kommer att läggas i en tabell på ett nytt dokument som sparats i samma katalog som originalfilen.

Du kan se en tabell med tre kolumner i det nya dokumentet. Och om du följer "Ctrl + Klicka" kommer du till bokmärket i originaldokumentet.En tabell över alla bokmärken och deras texter och sidnummer

Batch extrahera bokmärken från flera dokument

Följ samma steg ovan för att installera och köra ett makro. Bara den här gången ersätter du koderna med de nedanstående:

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 kör makrot finns det en inmatningsruta. Ange mappsökvägen där du lagrar alla dokument. Och kom ihåg att lägg till "\" i slutet av sökvägen om du bara kopierar det från mappens textruta. Klicka sedan på "OK".Ange mappsök-> Klicka på "OK"

Hur du snabbt räddar dig själv från datakatastrof

Datakatastrofen vi talar om i Word kan inträffa när den slutar fungera onormalt. Ibland har du tur och har all information intakt. Och andra gånger faller du offer för katastrofen. Därför är det snabbaste sättet att hämta så mycket data som möjligt att skaffa ett verktyg för att fixa docx.

Författarintroduktion:

Vera Chen är en dataåterställningsexpert i DataNumen, Inc., som är världsledande inom teknik för återställning av data, inklusive reparera xlsx och pdf reparera programvaruprodukter. För mer information besök www.datanumen.com

Kommentarer är stängda.