Як пакетно витягти всі закладки з документа Word

Поділитися зараз:

У сьогоднішній статті ми хотіли б поділитися з вами кроками для групового вилучення всіх закладок із вашого документа Word, щоб переглянути їх відразу.

У програмі Word ви можете створити зміст або таблицю рисунків за допомогою вбудованої функції. Але, зрештою, ви виявите, що немає звичайного способу витягти всі закладки документа та розташувати їх у новому документі.Як пакетно витягти всі закладки з документа Word

Як завжди, наша місія - провести вас через міф та надати макрос для експорту всіх закладок, а також їх текстів до нового порожнього документа.

Пакетне вилучення всіх закладок з одного документа

  1. Для початку відкрийте цільовий документ і натисніть «Alt+F11», щоб викликати редактор VBA.
  2. Потім натисніть «Звичайний», а потім «Вставити».
  3. І виберіть «Модуль», щоб створити новий за проектом «Звичайний».Клацніть «Звичайний» -> Клацніть «Вставити» -> Клацніть «Модуль»
  4. Потім двічі клацніть на ньому, щоб відкрити простір для редагування.
  5. Вставте туди такий макрос:
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. І останнє, але не менш важливе, натисніть «Виконати».Вставити коди-> Натиснути "Виконати"

Усі закладки поточного документа будуть поміщені в таблицю нового документа, збереженого в тому ж каталозі, що і вихідний файл.

Ви можете побачити таблицю з 3 стовпців у новому документі. І якщо ви будете слідувати “Ctrl + Click”, це призведе до закладки в оригінальному документі.Таблиця всіх закладок та їх текстів та номерів сторінок

Пакетне вилучення закладок із декількох документів

Виконайте ті самі кроки вище, щоб встановити та запустити макрос. Тільки цього разу ви замінюєте коди на наведені нижче:

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

Після запуску макросу з’являється поле введення. Введіть шлях до папки, де ви зберігаєте всі документи. І пам’ятайте про це додайте “\” в кінці шляху якщо просто скопіювати його з текстового поля папки. Потім натисніть «ОК».Введіть шлях до папки-> Натисніть "OK"

Як швидко врятувати себе від лиха даних

Катастрофа даних, про яку ми говоримо у програмі Word, може трапитися, коли вона перестає працювати ненормально. Іноді вам щастить і вся інформація залишається цілою. А в інших випадках ти стаєш жертвою катастрофи. Тому найшвидший спосіб отримати якомога більше даних - це отримати інструмент для виправити docx.

Вступ автора:

Віра Чень є експертом з відновлення даних у DataNumen, Inc., яка є світовим лідером у галузі технологій відновлення даних, в тому числі ремонт xlsx та pdf ремонт програмних продуктів. Для отримання додаткової інформації відвідайте WWW.datanumen.com

Поділитися зараз:

Коментарі закриті.