今日の記事では、Word文書からすべてのブックマークをバッチ抽出して、一度に表示する手順を紹介します。
Wordでは、組み込み関数を使用して目次または図表を生成できます。 ただし、最終的には、ドキュメントのすべてのブックマークを抽出して新しいドキュメントに配置する通常の方法はありません。
いつものように、私たちの使命は、神話を通してあなたを導き、すべてのブックマークとそのテキストを新しい空白のドキュメントにエクスポートするマクロな方法を提供することです。
単一のドキュメントからすべてのブックマークをバッチ抽出
- まず、対象のドキュメントを開き、「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 +クリック」に従うと、元のドキュメントのブックマークに移動します。
複数のドキュメントからブックマークをバッチ抽出
上記と同じ手順に従って、マクロをインストールして実行します。 今回のみ、コードを次のコードに置き換えます。
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を修正.
著者紹介:
Vera Chenは、のデータ復旧の専門家です。 DataNumen、Inc。は、以下を含むデータ復旧技術の世界的リーダーです。 xlsxを修復する (NAIST) と pdf ソフトウェア製品を修理します。 詳細については、次のWebサイトをご覧ください。 WWW。datanumen.com

![コードを貼り付け-> [実行]をクリックします コードを貼り付け-> [実行]をクリックします](https://www.datanumen.com/blogs/wp-content/uploads/2017/04/Paste-codes-then-Click-Run-4.jpg)

