【EXCEL VBA】シートの全てのコメントを抽出したい・削除したい

シート上の全てのコメントを抽出する方法を紹介します。また、削除する方法も合わせて紹介します。EXCELを相手に送付する際、内部コメントを削除せずに送付しないためにも重要な処理になります。

SpecialCells関数で解決する

SpecialCells関数は、特定の条件に該当するセルを抽出することができます。特定の条件は、引数で指定します。指定できる引数は以下となります。

xlCellTypeAllFormatConditions表示形式が設定されているセル
xlCellTypeAllValidation条件の設定が含まれているセル
xlCellTypeBlanks空白セル
xlCellTypeCommentsコメントが含まれているセル
xlCellTypeConstants定数が含まれているセル
xlCellTypeFormulas数式が含まれているセル
xlCellTypeLastCell使われたセル範囲内の最後のセル
xlCellTypeSameFormatConditions同じ表示形式が設定されているセル
xlCellTypeSameValidation同じ条件の設定が含まれているセル
xlCellTypeVisibleすべての可視セル

サンプルプログラムを確認する(コピペOK)

サンプルプログラムではSpecialCellsでコメントを含むセルを抽出し、Selectで選択状態とします。その後、For Each分にてSelectionをループ処理することで、コメントを含むセル全てにアクセスしています。

Sub sample()
    Dim r As Range
    
    On Error Resume Next                ' コメントが1つも無い場合はエラーとなるため
    
    Cells.SpecialCells(xlCellTypeComments).Select

    For Each r In Selection
        Debug.Print r.Comment.Text      ' コメント内容を出力する
        r.Comment.Delete                ' コメントを削除する
    Next
      
End Sub