Comment extraire par lots tous les signets de votre document Word

Partage maintenant:

Dans l'article d'aujourd'hui, nous aimerions partager avec vous les étapes pour extraire par lots tous les signets de votre document Word afin de les afficher en même temps.

Dans Word, vous pouvez générer une table des matières ou une table des figures avec la fonction intégrée. Mais, vous constaterez finalement qu'il n'existe aucun moyen habituel d'extraire tous les signets d'un document et de les organiser sur un nouveau document.Comment extraire par lots tous les signets de votre document Word

Comme toujours, notre mission est de vous guider à travers le mythe et de vous fournir la manière macro d'exporter tous les signets ainsi que leurs textes vers un nouveau document vierge.

Extraire par lots tous les signets d'un seul document

  1. À start éteint, ouvrez le tarobtenir le document et appuyez sur "Alt + F11" pour appeler l'éditeur VBA.
  2. Cliquez ensuite sur "Normal" puis sur "Insérer".
  3. Et choisissez "Module" pour en créer un nouveau sous le projet "Normal".Cliquez sur "Normal" -> Cliquez sur "Insérer" -> Cliquez sur "Module"
  4. Puis double-cliquez dessus pour faire apparaître l'espace d'édition.
  5. Collez-y la macro suivante :
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. Dernier point mais non le moindre, cliquez sur "Exécuter".Coller les codes-> Cliquez sur "Exécuter"

Tous les signets du document actuel seront placés dans un tableau sur un nouveau document enregistré dans le même répertoire que le fichier d'origine.

Vous pouvez voir le tableau de 3 colonnes dans le nouveau document. Et si vous suivez le "Ctrl + Clic", cela vous amènera au signet dans le document d'origine.Un tableau de tous les signets et leurs textes et numéros de page

Extraire par lots les signets de plusieurs documents

Suivez les mêmes étapes ci-dessus pour installer et exécuter une macro. Seulement cette fois, vous remplacez les codes par ceux ci-dessous :

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

Une fois que vous exécutez la macro, il y a une zone de saisie. Entrez le chemin du dossier où vous stockez tous les documents. Et n'oubliez pas de ajouter "\" à la fin du chemin si vous le copiez simplement à partir de la zone de texte du dossier. Cliquez ensuite sur "OK".Entrez le chemin du dossier-> Cliquez sur "OK"

Comment se sauver rapidement d'un désastre de données

Le désastre des données dont nous parlons dans Word peut se produire chaque fois qu'il cesse de fonctionner anormalement. Parfois, vous avez de la chance et avez toutes les informations intactes. Et d'autres fois, vous êtes victime de la catastrophe. Par conséquent, le moyen le plus rapide de récupérer autant de données que possible est d'obtenir un outil pour réparer docx.

Introduction de l'auteur:

Vera Chen est une experte en récupération de données dans DataNumen, Inc., qui est le leader mondial des technologies de récupération de données, y compris réparation xlsx et pdf réparer les produits logiciels. Pour plus d'informations, visitez www.datanumen.com

Partage maintenant:

Les commentaires sont fermés.