Home » ワードマクロ・Word VBAの使い方 » Office連携 » コメント一覧を新規Excelブックに作成するWordマクロ

コメント一覧を新規Excelブックに作成するWordマクロ

対象:Word2007, Word2010, Word2013, Windows版Word2016

アクティブな文書に含まれるコメントを取得してイミディエイトウィンドウに出力するWordマクロをご紹介しました。

実務で実際に使うことを考えると、Excelファイルに出力するほうが便利そうです。

Excel側にマクロを作ってWordからコメント情報を引っ張ってくるという考え方もありますが、まずは、Excelにコメント一覧を吐き出すWordマクロを作ってみました。

[スポンサードリンク]

アクティブ文書のコメント一覧を新規Excelブックに作成するサンプルマクロ

以下のようなWordマクロで、アクティブな文書に含まれるコメントの一覧を、新しいExcelブックに作成することができます。

Sub コメント一覧を新規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

End Sub

上記のマクロを実行すると、新規の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マクロでご紹介しているオブジェクト式と同じです。

関連語句
VBA, Visual Basic for Applications

[スポンサードリンク]

Home » ワードマクロ・Word VBAの使い方 » Office連携 » コメント一覧を新規Excelブックに作成するWordマクロ

「Office連携」の記事一覧

検索


Copyright © インストラクターのネタ帳 All Rights Reserved.

.