So stapeln Sie alle Lesezeichen stapelweise aus Ihrem Word-Dokument

Jetzt teilen:

Im heutigen Artikel möchten wir Ihnen die Schritte zum Batch-Extrahieren aller Lesezeichen aus Ihrem Word-Dokument mitteilen, um sie gleichzeitig anzuzeigen.

In Word können Sie mit der integrierten Funktion ein Inhaltsverzeichnis oder ein Zahlenverzeichnis erstellen. Letztendlich werden Sie jedoch feststellen, dass es keine übliche Möglichkeit gibt, alle Lesezeichen eines Dokuments zu extrahieren und in einem neuen Dokument anzuordnen.So stapeln Sie alle Lesezeichen stapelweise aus Ihrem Word-Dokument

Wie immer ist es unsere Mission, Sie durch den Mythos zu führen und Ihnen die Makro-Möglichkeit zu bieten, alle Lesezeichen sowie deren Texte in ein neues leeres Dokument zu exportieren.

Batch-Extrahieren aller Lesezeichen aus einem einzelnen Dokument

  1. Öffnen Sie zunächst das Zieldokument und drücken Sie „Alt+ F11“, um den VBA-Editor aufzurufen.
  2. Klicken Sie anschließend auf "Normal" und dann auf "Einfügen".
  3. Und wählen Sie "Modul", um unter "Normal" ein neues zu erstellen.Klicken Sie auf "Normal" -> Klicken Sie auf "Einfügen" -> Klicken Sie auf "Modul"
  4. Doppelklicken Sie dann darauf, um den Bearbeitungsbereich zu öffnen.
  5. Fügen Sie dort das folgende Makro ein:
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. Klicken Sie zu guter Letzt auf "Ausführen".Codes einfügen-> Klicken Sie auf "Ausführen"

Alle Lesezeichen des aktuellen Dokuments werden in einer Tabelle in einem neuen Dokument abgelegt, das im selben Verzeichnis wie die Originaldatei gespeichert ist.

Sie können eine Tabelle mit 3 Spalten im neuen Dokument sehen. Wenn Sie „Strg + Klick“ befolgen, gelangen Sie zum Lesezeichen im Originaldokument.Eine Tabelle aller Lesezeichen und ihrer Texte und Seitenzahlen

Batch-Extrahieren von Lesezeichen aus mehreren Dokumenten

Befolgen Sie die oben beschriebenen Schritte, um ein Makro zu installieren und auszuführen. Nur dieses Mal ersetzen Sie die Codes durch die folgenden:

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

Sobald Sie das Makro ausgeführt haben, gibt es ein Eingabefeld. Geben Sie den Ordnerpfad ein, in dem Sie alle Dokumente speichern. Und denk dran Fügen Sie am Ende des Pfads "\" hinzu Wenn Sie es nur aus dem Ordner-Textfeld kopieren. Klicken Sie dann auf "OK".Ordnerpfad eingeben-> Klicken Sie auf "OK"

So retten Sie sich schnell vor einer Datenkatastrophe

Die Datenkatastrophe, über die wir in Word sprechen, kann immer dann auftreten, wenn sie nicht mehr ordnungsgemäß funktioniert. Manchmal hat man Glück und alle Informationen sind intakt. Und manchmal fallen Sie der Katastrophe zum Opfer. Daher ist der schnellste Weg, um so viele Daten wie möglich abzurufen, ein Tool zu erhalten docx reparieren.

Einführung des Autors:

Vera Chen ist eine Datenrettungsexpertin in DataNumen, Inc., das weltweit führend bei Datenwiederherstellungstechnologien ist, einschließlich xlsx reparieren und pdf Reparatur von Softwareprodukten. Für weitere Informationen besuchen Sie www.datanumen.com €XNUMX

Jetzt teilen:

Kommentare sind geschlossen.