毎月の営業会議で使う Excel には、セルごとに「1月はキャンペーン分を含む」「今期から拠点異動」といった補足メモが付いています。ところが、メモの内容は数字と違って更新のタイミングが決まっておらず、気づくと昨年の情報が残ったままになりがちです。ファイルが増えてくると、セルを右クリックして 1 件ずつ中身を確かめる作業は現実的ではありません。
本記事では、Spire.XLS for Python を使って、Excel に付いた既存のコメントを書き換える・大きさを整える・削除する方法を紹介します。コメント本文の更新は、Excel の UI を開かずにスクリプトだけで完結します。文字量に合わせて吹き出しを自動調整する AutoSize や、セルに付いたメモだけを外して値は残す Remove の動きも、あわせて見ていきます。
クイックナビゲーション
- 実行環境とサンプルファイル
- コメントは「本文」と「枠」でできている
- コメントの本文を書き換える
- 吹き出しの大きさを変える・自動調整にする
- 不要になったコメントを削除する
- まとめ:更新・サイズ調整・削除の 3 つ
- FAQ
実行環境とサンプルファイル
検証環境は 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 を設定して保存すると、ファイルを開いたときに吹き出しが表示された状態になります。会議資料として配る前に、注目してほしいメモだけを開いておく、といった使い方ができます。






