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.
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
- För att börja, öppna måldokumentet och tryck på "Alt + F11" för att starta VBA-editorn.
- Klicka sedan på “Normal” och sedan “Infoga”.
- Och välj "Modul" för att skapa en ny under "Normal" projekt.
- Dubbelklicka sedan på den för att få fram redigeringsutrymmet.
- 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
- Sist men inte minst, 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.
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".
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



