チュートリアル

簡単にライブラリーを使用するためのチュートリアルコレクション

チュートリアル»Python»Spire.XLS for Python»コメント»Python で Excel のコメントを編集・削除する方法
2026-10-29

Python で Excel のコメントを編集・削除する方法

毎月の営業会議で使う Excel には、セルごとに「1月はキャンペーン分を含む」「今期から拠点異動」といった補足メモが付いています。ところが、メモの内容は数字と違って更新のタイミングが決まっておらず、気づくと昨年の情報が残ったままになりがちです。ファイルが増えてくると、セルを右クリックして 1 件ずつ中身を確かめる作業は現実的ではありません。

本記事では、Spire.XLS for Python を使って、Excel に付いた既存のコメントを書き換える・大きさを整える・削除する方法を紹介します。コメント本文の更新は、Excel の UI を開かずにスクリプトだけで完結します。文字量に合わせて吹き出しを自動調整する AutoSize や、セルに付いたメモだけを外して値は残す Remove の動きも、あわせて見ていきます。

クイックナビゲーション

実行環境とサンプルファイル

検証環境は Spire.XLS for Python 16.8.2 と plum-dispatch v1.7.4 です。Excel 本体がインストールされていなくても、pip だけで動きます。

pip install Spire.XLS

スクリプトの先頭では、Spire.XLS の 2 つのモジュールを読み込みます。

from spire.xls import *
from spire.xls.common import *

サンプルは、営業部の月次売上を 1 シートにまとめた Sample.xlsx です。A1:E1 が見出し、A2:A7 に担当者、B 列に拠点、C〜E 列に 1〜3 月の売上が入ります。

担当者 拠点 1月 2月 3月
山田 太郎 東京 1,280,000 1,350,000 1,420,000
佐藤 花子 大阪 980,000 1,020,000 1,105,000
鈴木 一郎 名古屋 760,000 720,000 815,000
高橋 美咲 東京 1,120,000 1,180,000 1,250,000
伊藤 健 福岡 640,000 690,000 705,000
渡辺 さくら 札幌 520,000 555,000 610,000

この表には、3 つのセルに補足メモが付いています。

  • A3(佐藤 花子) — 2021年入社。法人営業を担当。
  • C5(高橋 美咲の 1月) — 1月は新規開拓キャンペーンの受注を含む。
  • E6(伊藤 健の 3月) — 3月は年度末の駆け込み受注で伸びた。

コメントが付いた営業実績表のサンプル

図は Excel で吹き出しを表示した状態です。既定ではセルの右上に小さな印だけが表示され、その印にマウスを合わせるか、右クリックのメニューから表示すると吹き出しが開きます。

コメントを新しく追加する手順は、Python:Excelファイルにコメントを追加する方法 で解説しています。本記事は「すでに付いているコメントを手入れする」側の操作です。

コメントは「本文」と「枠」でできている

書き換えに入る前に、コメントがどんな情報を持っているかを押さえておきます。セルに付いたコメントは CellRange.Comment から取得でき、次のメンバーで構成されています。

メンバー 内容
Comment.Text 吹き出しに表示される本文。改行 \n もそのまま保持される
Comment.Author コメントに記録される投稿者名。Author で書き換えられる
Comment.Height / Comment.Width 吹き出しの高さと幅
Comment.AutoSize 文字量に合わせて枠を自動調整するかどうか
Comment.Visible ファイルを開いたときに吹き出しを表示するかどうか
Comment.Remove() コメントそのものを外す

Height と Width はピクセル相当の値で指定します。たとえば Width = 100 と書くと、Excel 上では 75 ポイントの幅として扱われます(96 dpi 換算)。AddComment() で作った直後の既定値は幅 128・高さ 74 です。

なお、Excel の画面では同じ機能が「ノート」という名前で表示されることがあります。本記事では API 名に合わせて「コメント」と呼びます。

シート内のコメントをまとめて扱いたいときは、Worksheet.Comments コレクションを使います。Count で件数、[i] で 1 件ずつ取得でき、for 文でそのまま反復できます。各要素は Row / Column(1 始まり)で位置が分かるので、一覧を作るときに便利です。

for comment in sheet.Comments:
    print(comment.Row, comment.Column, comment.Author, comment.Text)

コメントの本文を書き換える

まずは本文の更新です。人事異動や数値の確定など、メモの内容だけを差し替えたい場面はよくあります。Comment.Text に新しい文字列を代入すると、本文が丸ごと置き換わります。

手順は次の 4 つです。

  • ブックを読み込む
  • Worksheet.Range[] で対象のセルを取得する
  • Comment.Text に新しい本文を代入する
  • 別名で保存する
from spire.xls import *
from spire.xls.common import *

# Workbook オブジェクトを作成し、サンプルを読み込む
workbook = Workbook()
workbook.LoadFromFile("Sample.xlsx")

# 最初のワークシートを取得
sheet = workbook.Worksheets[0]

# セルに付いたコメントの本文を書き換える
sheet.Range["A3"].Comment.Text = "2024年4月から大阪拠点のチームリーダー。"
sheet.Range["C5"].Comment.Text = (
    "1月は新規開拓キャンペーンの受注を含む。\n2月以降は通常の受注分のみ。"
)

# 名前を付けて保存
workbook.SaveToFile("EditExcelComment.xlsx", ExcelVersion.Version2016)
workbook.Dispose()

Text に渡した文字列は前の内容と置き換わるので、古い文を消してから書き足す必要はありません。\n を入れると吹き出しの中でも改行され、C5 のように 2 行のメモを 1 つのコメントにまとめられます。Author は触っていないので、投稿者名は元のまま残ります。

件数が多いときは、対象セルの一覧を回す形にすると 1 本のスクリプトで済みます。

updates = {
    "A3": "2024年4月から大阪拠点のチームリーダー。",
    "C5": "1月は新規開拓キャンペーンの受注を含む。\n2月以降は通常の受注分のみ。",
}
for address, text in updates.items():
    sheet.Range[address].Comment.Text = text

吹き出しの大きさを変える・自動調整にする

本文を差し替えると、文字数によっては吹き出しからはみ出すことがあります。そんなときは、枠の大きさを数値で指定するか、自動調整に切り替えます。

固定サイズにする場合は Height と Width に値を入れます。下の例は、A3 の吹き出しを幅 100・高さ 60 に整える指定です。

# 吹き出しの大きさを指定する(幅 100、高さ 60)
sheet.Range["A3"].Comment.Height = 60
sheet.Range["A3"].Comment.Width = 100

文字量がその都度変わるメモは、AutoSize を True にするほうが扱いやすくなります。文字数と行数に合わせて、枠の幅と高さが自動で決まります。

# 文字量に合わせて枠を自動調整する
sheet.Range["C5"].Comment.AutoSize = True

上の 3 行を、先ほどの保存処理の直前に加えると、本文の書き換えと枠の調整が 1 回の実行で済みます。

sheet.Range["A3"].Comment.Text = "2024年4月から大阪拠点のチームリーダー。"
sheet.Range["C5"].Comment.Text = (
    "1月は新規開拓キャンペーンの受注を含む。\n2月以降は通常の受注分のみ。"
)
sheet.Range["A3"].Comment.Height = 60
sheet.Range["A3"].Comment.Width = 100
sheet.Range["C5"].Comment.AutoSize = True

workbook.SaveToFile("EditExcelComment.xlsx", ExcelVersion.Version2016)
workbook.Dispose()

本文を書き換え、枠の大きさを整えた結果

図のとおり、A3 は指定した幅 100・高さ 60 の枠に収まり、C5 は 2 行の本文に合わせて横長の枠に変わっています。E6 は何も指定していないので、元の大きさのままです。

固定サイズと自動調整は、メモの使われ方で選び分けてください。

指定方法 向いているメモ
Height / Width で固定 短い定型文。表の上に重ならない位置と大きさに揃えたい
AutoSize = True 追記が増えていくメモ。文字数が変わるたびに枠を直したくない

なお、AutoSize の結果は、Excel でファイルを開いたときに文字量へ合わせて再計算されます。本文を変えたあとは、Excel で吹き出しを表示して収まりを確認してください。

不要になったコメントを削除する

最後は削除です。メモの内容が表の備考列に移った、担当者が変わって注記が不要になった、といった場面では Comment.Remove() を呼びます。

from spire.xls import *
from spire.xls.common import *

# サンプルを読み込む
workbook = Workbook()
workbook.LoadFromFile("Sample.xlsx")
sheet = workbook.Worksheets[0]

# 3月のメモは不要になったので削除する
sheet.Range["E6"].Comment.Remove()

# 名前を付けて保存
workbook.SaveToFile("RemoveExcelComment.xlsx", ExcelVersion.Version2016)
workbook.Dispose()

コメントを削除した結果

削除されるのはコメントだけです。E6 に入っている 705,000 という売上の値はそのまま残り、吹き出しとセルの右上の印だけが消えます。図では A3 と C5 の 2 件が残っていることも確認できます。

削除後にコメントが残っているかを確かめたいときは、CellRange.HasComment を見ます。Comment.Remove() の直後は False、Worksheet.Comments.Count も 1 件減ります。

sheet.Range["E6"].Comment.Remove()
print(sheet.Range["E6"].HasComment)   # False
print(sheet.Comments.Count)           # 3 件 -> 2 件

複数のセルからまとめて外したいときは、対象をループにします。HasComment が True のセルだけを処理する形にしておくと、コメントのある場所だけを確実に外せます。

for address in ["A3", "C5", "E6"]:
    cell = sheet.Range[address]
    if cell.HasComment:
        cell.Comment.Remove()

コメントの有無の判定には HasComment を使ってください。Range.Comment は参照した時点でコメントの入れ物を用意するため、走査の条件には HasComment を使うと意図が明確になります。

まとめ:更新・サイズ調整・削除の 3 つ

本記事で扱ったのは、セルに付いたコメントのメンテナンスです。押さえるポイントは 3 つあります。

  • 本文の更新 — Comment.Text に新しい文字列を代入する。改行は \n で入る
  • 枠の調整 — Height / Width で固定、文字量が変わるメモは AutoSize = True
  • 削除 — Comment.Remove()。セルの値は残り、コメントだけが外れる

コメントの書き換えと削除をスクリプトにしておけば、月次更新のたびに Excel を開いて 1 件ずつ右クリックする作業から離れられます。メモの内容と枠の大きさをコードで持っておくと、担当者が変わっても同じ手順で更新できます。

Spire.XLS for Python の全機能を評価したい場合は、30 日間の無料ライセンスを申請できます。なお無償の試用版では、保存したファイルに評価用の警告シートが追加されます。ライセンスを適用するとこれも出力されなくなります。

FAQ

コメントの投稿者名だけを変更できますか?

Comment.Author に新しい名前を代入します。sheet.Range["A3"].Comment.Author = "営業企画部" のように指定すると、本文を変えずに投稿者名だけを更新できます。保存して読み直しても値は保持されます。

コメントの文字サイズを変えるにはどうすればよいですか?

Comment.RichText.SetFontSize() でサイズを指定できます。たとえば 11 ポイントにしたいときは sheet.Range["A3"].Comment.RichText.SetFontSize(11) とします。枠から文字がはみ出す場合は、あわせて AutoSize を True にしておくと収まりやすくなります。

コメントが付いているセルだけを対象に処理するには?

CellRange.HasComment で判定します。True のセルだけを対象にすると、コメントのあるセルだけを点検できます。

for i in range(1, 8):
    cell = sheet.Range[i, 1]
    if cell.HasComment:
        print(cell.Comment.Text)

シート内のコメントをまとめて削除できますか?

Worksheet.Comments.Clear() を呼ぶと、そのシートのコメントがすべて外れます。セルに入っている文字列や数値は残るので、注記だけを一括で片付けたいときに便利です。

コメントを削除すると、セルの値も消えますか?

消えません。Comment.Remove() が外すのはコメントだけで、セルの内容や書式はそのまま残ります。本記事のサンプルでも、削除後も E6 の売上値と表の書式は変わっていません。

吹き出しを開いた状態でファイルを保存できますか?

Comment.Visible = True を設定して保存すると、ファイルを開いたときに吹き出しが表示された状態になります。会議資料として配る前に、注目してほしいメモだけを開いておく、といった使い方ができます。

Read 6 times