Word文書の一部を抽出して一覧にし、集計や分析に活用したいと思ったことはありませんか。
このマクロは、指定したWordファイル(.docx 形式)に含まれる「コメント」と、コメントが付けられた「対象テキスト」をExcelのシート「コメント一覧」に一覧として出力するサンプルです。
事前に、抽出したい文字列部分をWordのコメント機能で選択しておくことで、コピー&貼り付けを繰り返すことなく、効率的にExcelに出力できます。
内容
アウトプットイメージ
下図の左側は、Wordファイル内の文字列にコメントが設定されています。
このファイルからコメント本文と、コメントで選択されている対象テキストを抽出し、下図右側のようにExcelの「コメント一覧」シートに一覧形式で出力されます。

VBAサンプル
VBAのサンプルは次のとおりです。
前提として、VBAを実行するExcelファイルには、あらかじめ出力用のシート「コメント一覧」が作成されている必要があります。
Sub Wordファイルのコメント付き文章をExcelに一覧化するサンプル()
' === 変数宣言 ==='
Dim ワードアプリ As Object
Dim ドキュメント As Object
Dim ファイル名 As Variant
Dim 出力シート As Worksheet
Dim 出力行 As Long
Dim コメント As Object
' === Wordアプリケーションの起動 ==='
Set ワードアプリ = CreateObject("Word.Application")
' === Wordファイルの選択 ==='
With Application.FileDialog(msoFileDialogFilePicker)
.AllowMultiSelect = False
.Title = "抽出対象のWordファイルを選択"
.Filters.Clear
.Filters.Add "Wordファイル", "*.docx"
If .Show = -1 Then
ファイル名 = .SelectedItems(1)
Else
MsgBox "ファイルが選択されませんでした。処理を中止します。"
Exit Sub
End If
End With
' === Word文書のオープン ==='
Set ドキュメント = ワードアプリ.Documents.Open(ファイル名)
' === 出力先シートの過去データのクリアと準備 ==='
Set 出力シート = ThisWorkbook.Sheets("コメント一覧")
出力シート.Cells.ClearContents
出力シート.Cells(1, 1).Value = "コメント本文"
出力シート.Cells(1, 2).Value = "対象テキスト"
' === コメントの抽出と出力 ==='
出力行 = 2
For Each コメント In ドキュメント.Comments
出力シート.Cells(出力行, 1).Value = コメント.Range.Text
出力シート.Cells(出力行, 2).Value = コメント.Scope.Text
出力行 = 出力行 + 1
Next コメント
' === Word文書とアプリケーションの終了処理 ==='
AppActivate Application.Caption
MsgBox "コメントの抽出が完了しました。"
ドキュメント.Close False
Set ドキュメント = Nothing
ワードアプリ.Quit
DoEvents ' Word終了待ちの間にExcelの応答を確保'
Set ワードアプリ = Nothing
End Sub
以上、Excel VBAでWord文書のコメント付き文章をセルを抽出してExcelに一覧出力するVBAのサンプルでした。
このコードを応用すれば、Word文書のデータベース化や、一括置換・転記などの処理にも活用できます。