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.
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
- For at starte skal du åbne måldokumentet og trykke på "Alt+F11" for at åbne VBA-editoren.
- Klik derefter på “Normal” og derefter “Indsæt”.
- Og vælg "Module" for at oprette et nyt under "Normal" -projektet.
- Dobbeltklik derefter på den for at frembringe redigeringsområdet.
- 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
- Sidst men ikke mindst, 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.
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”.
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



