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.
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
- À start éteint, ouvrez le tarobtenir le document et appuyez sur "Alt + F11" pour appeler l'éditeur VBA.
- Cliquez ensuite sur "Normal" puis sur "Insérer".
- Et choisissez "Module" pour en créer un nouveau sous le projet "Normal".
- Puis double-cliquez dessus pour faire apparaître l'espace d'édition.
- 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
- Dernier point mais non le moindre, 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.
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".
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



