シート削除は「不要なシートを自動で取り除き、Excelを整理する」ための基本操作
Excel業務自動化では、不要なシートを削除してスッキリした構造に整えることがよくあります。
例えば次のような場面です。
- テンプレートに残っている「サンプル」シートを削除したい
- 自動生成したExcelから空のシートを取り除きたい
- 月次レポートで前月のシートを削除したい
- データ統合後に不要なシートを消したい
Pythonでは openpyxl を使うことで、Excelのシートを自由に削除できます。
初心者でも理解しやすいように、基本から実務テンプレートまで丁寧に解説します。
openpyxlでシートを削除する基本(最も実務向け)
最小構成:特定のシートを削除する
from openpyxl import load_workbook
wb = load_workbook("sample.xlsx")
ws = wb["削除したいシート"]
wb.remove(ws)
wb.save("sample.xlsx")
Python深掘りポイント
wb["シート名"]で削除対象のシートを取得wb.remove(ws)で削除- シート名は日本語でも問題なし
- 削除後は必ず
save()で保存する
シート名を指定して削除する(よりシンプルな書き方)
シート名だけで削除するテンプレート
wb = load_workbook("sample.xlsx")
del wb["削除対象"]
wb.save("sample.xlsx")
Python深掘りポイント
del wb["シート名"]は openpyxl の正式な削除方法- Pythonの辞書操作と同じ感覚で扱える
- コードが短く読みやすい
複数のシートをまとめて削除する(大量処理に便利)
例:不要なシート名リストを使って削除
wb = load_workbook("sample.xlsx")
delete_list = ["サンプル", "テスト", "不要シート"]
for name in delete_list:
if name in wb.sheetnames:
del wb[name]
wb.save("sample.xlsx")
Python深掘りポイント
- シート名リストを使うと大量削除が簡単
- 存在チェック
if name in wb.sheetnamesが安全性を高める - 実務では「不要シート一覧」を作って自動削除することが多い
空のシートだけ自動削除する(テンプレート整理に最適)
行数が1行以下のシートを削除する
wb = load_workbook("sample.xlsx")
for name in wb.sheetnames:
ws = wb[name]
if ws.max_row == 1 and ws.max_column == 1 and ws["A1"].value is None:
del wb[name]
wb.save("sample.xlsx")
Python深掘りポイント
- 空のシートは
max_rowとmax_columnで判定できる - テンプレートExcelに残る「空白シート」を自動で消せる
- レポート生成後の仕上げとしてよく使う
最初のシートを削除する(自動生成Excelの初期シート対策)
Workbook には最初から1つのシートがあるため削除したい場合
from openpyxl import Workbook
wb = Workbook()
ws = wb.active
wb.remove(ws)
wb.save("empty.xlsx")
Python深掘りポイント
- 新規作成したExcelには「Sheet」という初期シートが存在する
- テンプレートとして完全に空のExcelを作りたい場合に削除する
- ただし、Excelは最低1シート必要なので、削除後に別シートを追加する必要がある
例題①:テンプレートExcelから「サンプル」シートを削除する
シナリオ
テンプレートに残っている不要シートを削除したい。
from openpyxl import load_workbook
wb = load_workbook("template.xlsx")
del wb["サンプル"]
wb.save("template_clean.xlsx")
Python深掘りポイント
- テンプレート整理は業務自動化の第一歩
- 不要シートを削除することで誤操作を防げる
例題②:月次レポートから前月のシートを削除する
シナリオ
「2024-02」シートを削除して最新月だけ残したい。
from openpyxl import load_workbook
wb = load_workbook("report.xlsx")
target = "2024-02"
if target in wb.sheetnames:
del wb[target]
wb.save("report.xlsx")
Python深掘りポイント
- 月次レポートの自動化でよく使う
- シート名を日付で管理すると削除も簡単
例題③:空のシートをすべて削除してスッキリさせる
シナリオ
自動生成したExcelに空シートが残ってしまうので削除したい。
from openpyxl import load_workbook
wb = load_workbook("output.xlsx")
for name in wb.sheetnames:
ws = wb[name]
if ws.max_row == 1 and ws.max_column == 1 and ws["A1"].value is None:
del wb[name]
wb.save("output.xlsx")
Python深掘りポイント
- 自動生成Excelでは空シートが残ることが多い
- 空シート削除は仕上げとして非常に重要
pathlib を使った読みやすいシート削除コード
Pathオブジェクトで直感的に書ける
from pathlib import Path
from openpyxl import load_workbook
path = Path("sample.xlsx")
wb = load_workbook(path)
del wb["削除対象"]
wb.save(path)
Pythonメリット
- パス結合が
/で直感的 - 大規模プロジェクトでも保守性が高い
シート削除を業務で設計するときの視点
- openpyxl はシート削除に最適(pandasでは削除できない)
- シート名をリスト化して一括削除すると効率的
- 空シート削除はレポート自動生成の仕上げに必須
- 月次・店舗別など、動的にシート名を扱う場合は存在チェックが重要
- テンプレートExcelを整理することで自動化の安定性が向上する

