Python 業務自動化 | Excel業務自動化:Excel基本操作 - シート名変更

Python Python
スポンサーリンク

シート名変更は「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と組み合わせると、プロ品質の帳票が自動で作れる
  • コピー → 名前変更 → 値埋め込み の流れがレポート自動化の基本

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