シート名変更は「Excelのシートをわかりやすく整理し、業務フローに合わせた構造に整える」ための基本操作
Excel業務自動化では、シート名を変更するという作業が非常に重要です。
なぜなら、シート名が適切でないと次のような問題が起きるからです。
- どのシートが何のデータかわからなくなる
- 自動処理でシート名を参照するときにエラーが出る
- 月次・店舗別など、動的に生成するシートの管理が難しくなる
Pythonでは openpyxl を使うことで、シート名を自由に変更できます。
初心者でも理解しやすいように、基本から実務テンプレートまで丁寧に解説します。
openpyxlでシート名を変更する基本(最も実務向け)
最小構成:シート名を変更する
from openpyxl import load_workbook
wb = load_workbook("sample.xlsx")
ws = wb["Sheet1"]
ws.title = "売上データ"
wb.save("sample.xlsx")
Python深掘りポイント
ws.title = "新しい名前"でシート名を変更- 日本語のシート名も問題なく使える
- シート名変更は openpyxl の基本操作のひとつ
シート名を動的に変更する(自動化の本番)
日付を使ってシート名を自動生成
from openpyxl import load_workbook
from datetime import datetime
wb = load_workbook("report.xlsx")
ws = wb["テンプレート"]
month_name = datetime.now().strftime("%Y-%m")
ws.title = month_name
wb.save("report.xlsx")
Python深掘りポイント
- 月次レポートの自動化で最もよく使う
- シート名を日付で管理すると、毎月の作業がゼロになる
- テンプレートシートを毎月自動で更新できる
シート名を一括変更する(大量処理に便利)
例:シート名に「_2024」を付けたい
from openpyxl import load_workbook
wb = load_workbook("multi.xlsx")
for name in wb.sheetnames:
ws = wb[name]
ws.title = f"{name}_2024"
wb.save("multi.xlsx")
Python深掘りポイント
- 大量のシート名を一括で変更できる
- 年度切り替えやバージョン管理に便利
wb.sheetnamesでシート名一覧を取得できる
シート名を安全に変更する(存在チェック付き)
シートが存在するか確認してから変更
from openpyxl import load_workbook
wb = load_workbook("sample.xlsx")
old = "Sheet1"
new = "売上"
if old in wb.sheetnames:
wb[old].title = new
wb.save("sample.xlsx")
Python深掘りポイント
- 存在チェックを入れることでエラーを防げる
- 実務では「シート名が毎回違うExcel」を扱うことが多い
- 安定した自動化には必須のテクニック
例題①:テンプレートの「Sheet1」を「集計」に変更する
シナリオ
テンプレートExcelの初期シート名を業務用に変更したい。
from openpyxl import load_workbook
wb = load_workbook("template.xlsx")
ws = wb.active
ws.title = "集計"
wb.save("template.xlsx")
Python深掘りポイント
- 新規Excelはデフォルトで「Sheet」や「Sheet1」
- 業務用テンプレートでは必ず名前を変更するべき
- シート名が明確だと後続処理が安定する
例題②:コピーしたシートの名前を自動で変更する
シナリオ
テンプレートをコピー → シート名を「2024-03」に変更。
from openpyxl import load_workbook
from datetime import datetime
wb = load_workbook("report.xlsx")
template = wb["テンプレート"]
ws = wb.copy_worksheet(template)
ws.title = datetime.now().strftime("%Y-%m")
wb.save("report.xlsx")
Python深掘りポイント
- コピー → 名前変更 の流れはレポート自動化の基本
- テンプレートを複製して毎月のシートを自動生成できる
例題③:店舗ごとのシート名を自動で設定する
シナリオ
店舗リストからシート名を設定したい。
from openpyxl import load_workbook
wb = load_workbook("stores.xlsx")
stores = ["東京店", "大阪店", "名古屋店"]
for i, name in enumerate(stores, start=1):
ws = wb[f"Sheet{i}"]
ws.title = name
wb.save("stores.xlsx")
Python深掘りポイント
- 店舗・部署・担当者ごとにシート名を設定する業務で大活躍
- シート名を動的に変更できるため、Excel構造を自動生成できる
pathlib を使った読みやすいシート名変更コード
Pathオブジェクトで直感的に書ける
from pathlib import Path
from openpyxl import load_workbook
path = Path("sample.xlsx")
wb = load_workbook(path)
wb["Sheet1"].title = "売上"
wb.save(path)
Pythonメリット
- パス結合が
/で直感的 - 大規模プロジェクトでも保守性が高い
シート名変更を業務で設計するときの視点
- openpyxl はシート名変更に最適(pandasでは変更できない)
- シート名を日付・店舗名・カテゴリ名で自動生成すると業務効率が大幅に向上
- 存在チェックを入れるとエラーが減り、安定した自動化が実現できる
- テンプレートExcelと組み合わせると、プロ品質の帳票が自動で作れる
- コピー → 名前変更 → 値埋め込み の流れがレポート自動化の基本
