openpyxl でセルコメントを抽出しレビューリストを自動生成する方法

Excel ワークブックに含まれるセルコメント(メモ)を一覧化し、コメント本文・投稿者・セル番地をまとめて別ブックへ出力する手順を解説いたします。Python 標準ライブラリに加えて openpyxl を使用し、既存ファイルから情報を抽出するコード例を示します。


目次

前提環境

項目内容
Python3.8 以上
主要ライブラリopenpyxl(pip install openpyxl
入力ファイルtask_schedule.xlsx
出力ファイルreview_log.xlsx

コード全体

from openpyxl import load_workbook, Workbook
from openpyxl.comments import Comment

# 出力用ブックとシートを準備
result_wb = Workbook()
review_ws = result_wb.active
review_ws.title = 'ReviewLog'

# 見出し行の設定
review_ws['B2'] = 'Feedback'
review_ws['C2'] = 'Reviewer'
review_ws['D2'] = 'CellAddress'

# 列幅を調整
review_ws.column_dimensions['B'].width = 42

# 入力ブックを読み込み
src_wb = load_workbook('task_schedule.xlsx')
src_ws = src_wb.active

current_row = 2   # 出力先の開始行

# データ行(ここでは 4 行目以降)を走査
for row in src_ws.iter_rows(min_row=4):
    for cell in row:
        if cell.comment is None:
            continue
        current_row += 1
        review_ws[f'B{current_row}'] = cell.comment.text
        review_ws[f'C{current_row}'] = cell.comment.author
        review_ws[f'D{current_row}'] = cell.coordinate

# ヘッダーセルへ参考コメントを追加(任意)
review_ws['D2'].comment = Comment('コメントが付いたセルの参照', 'Rintaro Mori')

# 保存
result_wb.save('review_log.xlsx')

コード解説

処理詳細
Workbook()新規ブックを生成し、抽出結果を格納するシートを作成しています。
review_ws.column_dimensions['B'].width = 42コメント欄のセル幅を広げ、長文でも見やすく表示します。
src_ws.iter_rows(min_row=4)入力シートの 4 行目以降を対象にコメントの有無を判定しています。行番号は任意に変更可能です。
current_row += 1抽出結果を書き込むたびに行番号を更新し、データを縦方向へ順次追加します。
review_ws['D2'].comment = Comment(...)出力シートのヘッダーに説明を付与する例です。不要であれば削除して構いません。

応用アイデア

ニーズ実装例
コメント内の改行を除去したいcell.comment.text.replace('\n', ' ') を利用して整形します。
コメントが多階層に渡る場合openpyxl でセルのハイパーリンクを付与し、元セルへジャンプできる導線を作成します。
タイムスタンプ付きで管理datetime モジュールを併用し、抽出時刻を別列へ書き込むことで更新履歴を残せます。

まとめ

セルコメントを一覧化することで、レビュー内容や修正依頼を一目で確認でき、作業効率の向上に寄与します。openpyxl を用いれば追加ライブラリなしで簡潔に実装できますので、情報共有の自動化やレビュー管理にご活用ください。

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

この記事を書いた人

私が勉強したこと、実践したこと、してることを書いているブログです。
主に資産運用について書いていたのですが、
最近はプログラミングに興味があるので、今はそればっかりです。

目次