Excel ワークブックに含まれるセルコメント(メモ)を一覧化し、コメント本文・投稿者・セル番地をまとめて別ブックへ出力する手順を解説いたします。Python 標準ライブラリに加えて openpyxl を使用し、既存ファイルから情報を抽出するコード例を示します。
目次
前提環境
項目 | 内容 |
---|---|
Python | 3.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
を用いれば追加ライブラリなしで簡潔に実装できますので、情報共有の自動化やレビュー管理にご活用ください。