shikumika’s diary

日々の事務作業で手間なことを簡単にできる仕組み(自動化、方法など)、困ったことの解決方法を調べた備忘録

【Excel VBA】Wordファイルのコメント付き文章をExcelに一覧出力するサンプル

Word文書の一部を抽出して一覧にし、集計や分析に活用したいと思ったことはありませんか。

このマクロは、指定したWordファイル(.docx 形式)に含まれる「コメント」と、コメントが付けられた「対象テキスト」をExcelのシート「コメント一覧」に一覧として出力するサンプルです。

事前に、抽出したい文字列部分をWordのコメント機能で選択しておくことで、コピー&貼り付けを繰り返すことなく、効率的に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文書のデータベース化や、一括置換・転記などの処理にも活用できます。