Home » ExcelVBA Rangeオブジェクト » コメント » コメントの一覧を出力するExcelマクロ

コメントの一覧を出力するExcelマクロ

対象:Excel2003, Excel2007, Excel2010, Excel2013

Excelでコメントを印刷する方法をご紹介したネタは、このサイト・インストラクターのネタ帳の人気ページの一つです。

「エクセル コメント 印刷」
といった検索でのアクセスもよく見かけます。

印刷するだけでいいのなら、これまでの記事でご紹介したような方法でOKですが、挿入されているコメントを一覧で欲しいという要望も実務では出てきます。

[スポンサードリンク]

コメント一覧を作成するサンプルマクロ

Excelにはコメント一覧を出力する機能は用意されていないのでVBA(Visual Basic for Applications)で、マクロを作成しましょう。


Sub アクティブなブックの全コメントを一覧にする()
 Const ROW_HEAD As Long = 1 ' コメント一覧の見出し行とする行番号
 
 Dim cmnt As Comment
 Dim cnt_sh As Long ' ワークシートの枚数
 Dim num_row As Long ' コメントを一覧にして出力する行番号
 Dim msg As String

' コメント一覧を作成するシートの挿入と見出しの作成
 Worksheets.Add Before:=Worksheets(1)
 Cells(ROW_HEAD, 1).Value = "ワークシート名"
 Cells(ROW_HEAD, 2).Value = "セル番地"
 Cells(ROW_HEAD, 3).Value = "コメント"

' コメント一覧の作成
 num_row = ROW_HEAD
 For cnt_sh = 2 To Worksheets.Count
  For Each cmnt In Worksheets(cnt_sh).Comments
   num_row = num_row + 1
   Cells(num_row, 1).Value = Worksheets(cnt_sh).Name
   Cells(num_row, 2).Value = cmnt.Parent.Address(False, False)
   Cells(num_row, 3).Value = cmnt.Text
  Next cmnt
 Next cnt_sh

 msg = ""
 If num_row = ROW_HEAD Then
  ' コメントが存在しないときに挿入したコメント一覧用シートを削除
  Application.DisplayAlerts = False
  Worksheets(1).Delete
  Application.DisplayAlerts = True
  msg = "アクティブなブックにコメントは存在しません。"
 Else
  msg = "『" & Worksheets(1).Name & "』にコメント一覧を作成しました。"
 End If
 MsgBox msg
End Sub

コメント一覧の見出し行とする行番号は、定数で
  Const ROW_HEAD As Long = 1
と1行目を指定しています。

他の行を見出し行としたい場合はこの「1」を修正していただければOKです。

[スポンサードリンク]

Home » ExcelVBA Rangeオブジェクト » コメント » コメントの一覧を出力するExcelマクロ

TrackBack:0

TrackBack URL

Home » ExcelVBA Rangeオブジェクト » コメント » コメントの一覧を出力するExcelマクロ

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

.