【Word VBA】コメントを書き出すWordマクロ

2012年1月22日

お客様によりますが、納品用のWordファイル文の中にコメント機能を使って納品メモを残すことができることがあります。

または、自分のメモ書きとしてあとで見直すときにコメント機能はかなり便利ですね。最近多用するようになりました。

社内の文書であれば、コメント機能に修正・変更箇所の説明を入れたりして、意思疎通をされているかもしれません。

そのような場合に、自分がどのようなコメントを入れたのか、またコメントを入れた対象の文字列がどこなのかを一望できるようにマクロにしてみました。

単純に書き出すだけですが、自分用の確認としては問題ないでしょう。

また、タブ区切りですので、表にすることも簡単にできますね。

このマクロでできること

処理対象とする文書を開いて実行すると、文書中のコメントをすべて別紙に書き出します。

ただし、コメントの対象となる文字列やコメント中の文字列のテキスト情報のみを書き出すので、書式があった場合でも反映されません。

コメント例

以下のように、新しい文書が開かれて文字が書き出されます。下線が入っていません。

抽出したコメントの表記例

マクロの解説

コメントをつける対象の文字列を、Comments.ScopeプロパティのTextプロパティで取得しています。

入力したコメントを、Comments.RangeプロパティのTextプロパティで取得しています。

実は、上記は両方ともTextプロパティを記載しなくても同じ作用になりますが、明示的に記載しました。

省略した場合には、Textプロパティが設定されていると見なされるからですね。

For...Next ステートメントで、文書中のコメントすべてに対して、上記のテキストデータの取得を実施して、新しく開いた文書に書き込んでいます。

マクロ


Sub コメントを別紙に書き出すマクロ()

 Dim i As Integer
 Dim actDoc As Document
 Dim newDoc As Document
 
 If ActiveDocument.Comments.Count = 0 Then Exit Sub
 
 Set actDoc = ActiveDocument
 Set newDoc = Documents.Add
 
 For i = 1 To actDoc.Comments.Count
  With actDoc.Comments(i)
   newDoc.Range.InsertAfter _
    Text:=.Scope.Text & vbTab & .Range.Text & vbCr
  End With
 Next i
 
 Set actDoc = Nothing
 Set newDoc = Nothing
 
End Sub

コメントに関するマクロ

-コード
-,