В сегодняшней статье мы хотели бы поделиться с вами шагами по пакетному извлечению всех закладок из вашего документа Word, чтобы просмотреть их сразу.
В Word вы можете создать оглавление или таблицу рисунков с помощью встроенной функции. Но в конечном итоге вы обнаружите, что нет обычного способа извлечь все закладки из документа и расположить их в новом документе.
Как всегда, наша миссия состоит в том, чтобы провести вас через миф и предоставить вам макрос для экспорта всех закладок, а также их текстов в новый пустой документ.
Пакетное извлечение всех закладок из одного документа
- К starвыключи, открой tarполучите документ и нажмите «Alt + F11», чтобы вызвать редактор VBA.
- Затем нажмите «Обычный», а затем «Вставить».
- И выберите «Модуль», чтобы создать новый в «Обычном» проекте.
- Затем дважды щелкните по нему, чтобы открыть пространство редактирования.
- Вставьте туда следующий макрос:
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
- И последнее, но не менее важное: нажмите «Выполнить».
Все закладки текущего документа будут помещены в таблицу нового документа, сохраненного в том же каталоге, что и исходный файл.
Вы можете увидеть таблицу из 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
После запуска макроса появляется поле ввода. Введите путь к папке, в которой вы храните все документы. И не забудьте добавить «\» в конце пути если вы просто скопируете его из текстового поля папки. Затем нажмите «ОК».
Как быстро спасти себя от информационной катастрофы
Катастрофа данных, о которой мы говорим в Word, может произойти всякий раз, когда он перестает работать ненормально. Иногда вам везет, и вся информация остается нетронутой. А в других случаях вы становитесь жертвой катастрофы. Таким образом, самый быстрый способ получить как можно больше данных — это получить инструмент для исправить документ.
Об авторе:
Вера Чен — эксперт по восстановлению данных в DataNumen, Inc., которая является мировым лидером в области технологий восстановления данных, включая восстановить xlsx и pdf ремонт программных продуктов. Для получения дополнительной информации посетите www.datanumen.com




