Wordのコメントのみを抽出して一覧にするVBA

Wordファイルにコメントが沢山あるとき、
一覧で見たい場合に、コメントを
抽出するVBAを紹介します。

長文の校正や契約書などで
コメントが多いと抜き出して一覧化した
場面があるかなと考えます。

具体的な動作は、このようにあるコメントを

Excelのこのような一覧にすることができます。

もくじ

コメントを抜き出すWord VBA

今回テストで作ってみた
コメントを抜き出すVBAは以下の通りです。

Sub CommentsExtract()

    '変数定義
    Dim c As String 
    Dim cmt As Word.Comment
    Dim doc As Word.Document

    'コメントを拾い出す
    For Each cmt In ActiveDocument.Comments
       c = c & Left(cmt.Date, 10) & "," & cmt.Author & "," & cmt.Index & "," & cmt.Range.Text & vbCrLf
    Next

    '新しいファイルに拾い出したコメントを貼り付ける
    Set doc = Documents.Add
    doc.Range.Text = c

End Sub

よくわからなくても、こちらを貼り付けて
コメントがあるWordファイルで実行すれば
Wordファイルにコメントを全て
抜き出すことができます。

Wordに抜き出しているのは、
VBAをシンプルに見せるためです。

後述する区切り位置の設定で
EXCELに加工するのは楽なはずなので、
今回はコメントを抽出するところを
中心に説明するためWordに貼り付けてます。

コメントを抜き出すWord VBAの説明

設計手順

設計手順として、

  1. 変数の定義
    1. カウンタ
    2. コメント
    3. Wordファイル
  2. Eachによって全てのコメントを抜き出す
  3. 新しいWordファイルを追加する
  4. 抜き出したコメントを貼り付ける

というものにしています。

変数定義

まず、変数の定義から。

    Dim c As String
    Dim cmt As Word.Comment
    Dim doc As Word.Document

cは、コメント1、コメント2、…と
なっていくものの順序を指定する
ためのものです。

1番目のコメント、2番めのコメント、
…、c番目のコメント、のように
変数化して全てを選択するために
定義します。

cmtは、As Word.Commentとしてるように
コメントですよと定義してます。

docは、新しいWordファイルを
追加するためにつけました。

For Each 〜 Next

全てを拾い出す部分です。

For Each XX

Next

という形で全てのXXに対して
〜をするという意味になります。

以下の文章は、現在アクティブになっている
Wordファイルの全てのコメントに対して
c=c…をする
という意味です。

    For Each cmt In ActiveDocument.Comments

        c = c & Left(cmt.Date, 10) & "," & cmt.Author & "," & cmt.Index & "," & cmt.Range.Text & vbCrLf

    Next

新しいドキュメントに貼り付ける

全てのコメントを改行を込みにした状態で
cという変数に入れ込んでいる状態です。

ここに、新しいドキュメントを挿入します。

    Set doc = Documents.Add

次にそのドキュメントに
cとしてまとめた変数を貼り付けます。

    doc.Range.Text = c

以上で完了です。

このVBAを実行すると以下のような
カンマ区切りのWordファイルが出来上がります。

あとは、Excelに貼り付けて

区切り位置で分ければできあがりです。

カンマ区切りはEXCELに入れやすくするため

わざわざ下記のWordファイルで仕上げているのは、
プログラムをわかりやすくするためです。

こちらのExcelの状態に一気に仕上げられますが、
人手だけで行った場合に一番手間がかかるのは
抽出作業です。

最低でも、その抽出作業を簡略化するため
上記のプログラムのみ示して、あとは
手作業の加工で見せています。

気が向いたら、一気に仕上げる
プログラムもご紹介します。

【編集後記】
論文の構成を大きく変えてみました。
ある程度形にするまでは、これくらいの
変更が何度か続くのかなと感じてます。

【運動記録】
ジョギング○ ストレッチ○ 筋トレ○ サプリ○

【子育て日記(3歳)】
今日の推し恐竜は、ギガノトサウルスです。

もくじ