Python 業務自動化 | Excel業務自動化:Excel基本操作 - シート削除

Python Python
スポンサーリンク

シート削除は「不要なシートを自動で取り除き、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_rowmax_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を整理することで自動化の安定性が向上する

タイトルとURLをコピーしました