Cum să extrageți în loturi toate marcajele din documentul dvs. Word

Distribuie acum:

În articolul de astăzi, am dori să vă împărtășim pașii pentru extragerea în lot a tuturor marcajelor din documentul Word pentru a le vizualiza simultan.

În Word, puteți genera un cuprins sau un tabel cu cifre cu funcția încorporată. Dar, în cele din urmă, veți descoperi că nu există o modalitate obișnuită de a extrage toate marcajele unui document și de a le aranja pe un document nou.Cum să extrageți în loturi toate marcajele din documentul dvs. Word

Ca întotdeauna, misiunea noastră este să vă conducem prin mit și să vă oferim o modalitate macro de a exporta toate marcajele, precum și textele acestora într-un nou document gol.

Extrageți în lot toate marcajele dintr-un singur document

  1. Pentru început, deschideți documentul țintă și apăsați „Alt+ F11” pentru a apela editorul VBA.
  2. Apoi faceți clic pe „Normal” și apoi pe „Inserare”.
  3. Și alegeți „Modul” pentru a crea unul nou în proiectul „Normal”.Faceți clic pe „Normal” -> Faceți clic pe „Inserare” -> Faceți clic pe „Modul”
  4. Apoi faceți dublu clic pe el pentru a scoate în evidență spațiul de editare.
  5. Lipiți următoarea macrocomandă acolo:
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. Nu în ultimul rând, faceți clic pe „Run”.Lipiți coduri-> Faceți clic pe „Run”

Toate marcajele documentului curent vor fi puse într-un tabel pe un document nou salvat în același director ca și fișierul original.

Puteți vedea tabelul cu 3 coloane în noul document. Și dacă urmați „Ctrl+ Click”, acesta vă va aduce la marcajul din documentul original.Un tabel cu toate marcajele și textele și numerele paginilor acestora

Extrage în lot marcaje din mai multe documente

Urmați aceiași pași de mai sus pentru a instala și rula o macrocomandă. Numai de această dată, înlocuiți codurile cu cele de mai jos:

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

Odată ce rulați macro-ul, există o casetă de introducere. Introduceți calea folderului în care stocați toate documentele. Și amintiți-vă adăugați „\” la sfârșitul căii doar dacă îl copiați din caseta de text folder. Apoi faceți clic pe „OK”.Introduceți calea folderului -> Faceți clic pe „OK”

Cum să te salvezi rapid de la dezastrul de date

Dezastrul de date despre care vorbim în Word se poate întâmpla ori de câte ori încetează să funcționeze anormal. Uneori, ai noroc și ai toate informațiile intacte. Și alteori, ești victima dezastrului. Prin urmare, cea mai rapidă modalitate de a prelua cât mai multe date posibil este să obțineți un instrument pentru reparați docx.

Introducerea autorului:

Vera Chen este expertă în recuperarea datelor DataNumen, Inc., care este lider mondial în tehnologiile de recuperare a datelor, inclusiv reparați xlsx și pdf repararea produselor software. Pentru mai multe informații vizitați www.datanumen.com

Distribuie acum:

Comentariile sunt închise.