アクティブな文書に含まれるコメントを取得してイミディエイトウィンドウに出力するWordマクロをご紹介しました。
実務で実際に使うことを考えると、Excelファイルに出力するほうが便利そうです。
Excel側にマクロを作ってWordからコメント情報を引っ張ってくるという考え方もありますが、まずは、Excelにコメント一覧を吐き出すWordマクロを作ってみました。
アクティブ文書のコメント一覧を新規Excelブックに作成するサンプルマクロ
以下のようなWordマクロで、アクティブな文書に含まれるコメントの一覧を、新しいExcelブックに作成することができます。
Dim xls As Object ' Application.Excel
Dim arr() ' ページ番号, 行番号, 本文のセンテンス, コメント文字列
Dim cnt As Long ' コメント数
Dim i As Long
With ActiveDocument.Comments
cnt = .Count
If cnt = 0 Then
MsgBox "アクティブ文書にコメントは存在しません"
Exit Sub
End If
ReDim arr(1 To cnt, 1 To 4)
For i = 1 To cnt
With .Item(i)
With .Reference
arr(i, 1) = .Information(wdActiveEndAdjustedPageNumber)
arr(i, 2) = .Information(wdFirstCharacterLineNumber)
arr(i, 3) = .Sentences(1).Text
End With ' .Reference
arr(i, 4) = .Range.Text
End With ' .Item(i)
Next i
End With ' ActiveDocument.Comments
Set xls = CreateObject("Excel.Application")
With xls
.Workbooks.Add
.Range("A1").Value = ActiveDocument.Name
.Range("A2").Value = "ページ番号"
.Range("B2").Value = "行番号"
.Range("C2").Value = "本文のセンテンス"
.Range("D2").Value = "コメント文字列"
.Range("A1:D2").Font.Bold = True
.Range(.Cells(3, "A"), .Cells(cnt + 2, "D")).Value = arr()
.Range("A:B").EntireColumn.ColumnWidth = 10
.Range("C:D").EntireColumn.ColumnWidth = 50
.Visible = True
End With ' xls
Set xls = Nothing
上記のマクロを実行すると、新規のExcelファイルの3行目以下に、ページ番号・行番号・コメントの含まれる本文のセンテンス・コメントの文字列が出力されます。
サンプルマクロで利用しているオブジェクト式について
前半の
With ActiveDocument.Comments
内で、アクティブなWord文書に含まれるコメント関連の情報を配列変数・arrに格納して、
後半の
Set xls = CreateObject("Excel.Application")
以下で、配列変数・arrに格納されたデータをExcelに書き出したり、各種書式設定行っています。
前半の
With ActiveDocument.Comments
内と、後半に登場する、
.Range("A1").Value = ActiveDocument.Name
の右辺「ActiveDocument.Name」がWordに関わるオブジェクト式で、
後半の
Set xls = CreateObject("Excel.Application")
以下の「ActiveDocument.Name」以外が、Excelに関わるオブジェクト式です。
配列変数・arrに各種データを格納している、
With .Item(i)
With .Reference
部分の、
arr(i, 3) = .Sentences(1).Text
は、以前にご紹介したコメントの含まれる文・センテンスを取得するWordマクロでご紹介しているオブジェクト式と同じです。
Home » ワードマクロ・Word VBAの使い方 » Office連携 » コメント一覧を新規Excelブックに作成するWordマクロ