Nell'articolo di oggi, vorremmo condividere con te i passaggi per estrarre in batch tutti i segnalibri dal tuo documento Word per visualizzarli contemporaneamente.
In Word, puoi generare un indice o un indice delle figure con la funzione integrata. Ma alla fine scoprirai che non esiste un modo usuale per estrarre tutti i segnalibri di un documento e disporli su un nuovo documento.
Come sempre, la nostra missione è guidarti attraverso il mito e fornirti il modo macro per esportare tutti i segnalibri e i loro testi in un nuovo documento vuoto.
Batch estrarre tutti i segnalibri da un singolo documento
- Per iniziare, apri il documento di destinazione e premi "Alt + F11" per avviare l'editor VBA.
- Quindi fare clic su "Normale" e quindi su "Inserisci".
- E scegli "Modulo" per crearne uno nuovo sotto il progetto "Normale".
- Quindi fai doppio clic su di esso per far emergere lo spazio di modifica.
- Incolla lì la seguente macro:
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
- Ultimo ma non meno importante, fai clic su "Esegui".
Tutti i segnalibri del documento corrente verranno inseriti in una tabella su un nuovo documento salvato nella stessa directory del file originale.
Puoi vedere la tabella di 3 colonne nel nuovo documento. E se segui "Ctrl + clic", ti porterà al segnalibro nel documento originale.
Estrazione batch di segnalibri da più documenti
Segui gli stessi passaggi precedenti per installare ed eseguire una macro. Solo che questa volta sostituisci i codici con quelli seguenti:
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
Una volta eseguita la macro, c'è una casella di input. Inserisci il percorso della cartella in cui memorizzi tutti i documenti. E ricordati di aggiungi "\" alla fine del percorso se lo copi semplicemente dalla casella di testo della cartella. Quindi fare clic su "OK".
Come salvarti rapidamente dal disastro dei dati
Il disastro dei dati di cui parliamo in Word può verificarsi ogni volta che smette di funzionare in modo anomalo. A volte, sei fortunato e hai tutte le informazioni intatte. E altre volte, cadi vittima del disastro. Pertanto, il modo più rapido per recuperare quanti più dati possibile è ottenere uno strumento per correggere docx.
Introduzione dell'autore:
Vera Chen è un'esperta di recupero dati in DataNumen, Inc., che è il leader mondiale nelle tecnologie di recupero dati, tra cui riparare xlsx and pdf riparare prodotti software. Per maggiori informazioni visita www.datanumen.com



