Come estrarre in batch tutti i segnalibri dal documento di Word

Condividi ora:

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 estrarre in batch tutti i segnalibri dal documento di Word

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

  1. Per iniziare, apri il documento di destinazione e premi "Alt + F11" per avviare l'editor VBA.
  2. Quindi fare clic su "Normale" e quindi su "Inserisci".
  3. E scegli "Modulo" per crearne uno nuovo sotto il progetto "Normale".Fai clic su "Normale"->Fai clic su "Inserisci"->Fai clic su "Modulo"
  4. Quindi fai doppio clic su di esso per far emergere lo spazio di modifica.
  5. 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
  1. Ultimo ma non meno importante, fai clic su "Esegui".Incolla codici-> 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.Una tabella di tutti i segnalibri e dei relativi testi e numeri di pagina

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".Inserisci il percorso della cartella-> Fai 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

Condividi ora:

I commenti sono chiusi.