はじめに:Excelの「テンプレート」をPythonで自動化しませんか?
「毎月、同じフォーマットのExcel報告書を手作業で作っている…」 「計算式やグラフが設定済みのExcelファイルを使いまわしたい…」
もしあなたがPythonでExcel作業の自動化を始めたばかりなら、こんな風に思ったことはありませんか? openpyxlライブラリは非常に強力ですが、Excelの**テンプレートファイル(.xltx)**を扱うには、一つだけ知っておくべきコツがあります。
その鍵となるのが、今回のテーマであるWorkbookPackageです。
この記事では、openpyxl初心者のあなたでもWorkbookPackageをしっかり理解し、Excelテンプレートを自由自在に扱えるようになることをゴールに、丁寧に解説していきます。
そもそもopenpyxlのWorkbookPackageって何?
結論から言うと、WorkbookPackageは**「これから読み込むファイルは、特別な『テンプレート』ですよ!」**とopenpyxlに伝えるためのおまじない(設定)です。
通常の.xlsxファイルと、テンプレートの.xltxファイルは少しだけ内部の構造が異なります。この設定を有効にすることで、openpyxlがテンプレートの構造を正しく理解し、書式や設定を壊さずに読み込んでくれるようになります。
なぜWorkbookPackageが必要なの?
この設定がないと、openpyxlはテンプレートファイルをただのExcelファイルとして開こうとします。その結果、せっかく設定したテンプレートの書式が崩れたり、意図しない動作をしたりする可能性があるのです。
load_workbook関数でWorkbookPackage=Trueと指定するだけで、こうした問題を未然に防ぐことができます。
# load_workbookで読み込む際に、Trueと指定するだけ!
wb = load_workbook(filename='template.xltx', WorkbookPackage=True)WorkbookPackageを使うと便利になること
- 定型業務の完全自動化: 請求書や報告書など、フォーマットが決まっている書類をPythonだけで大量に生成できます。
- 品質の担保: 人が手で入力しないので、計算式を間違えたり、書式を崩したりするミスがなくなります。
- 時間の節約: 面倒なコピー&ペースト作業から解放され、もっと創造的な仕事に時間を使えるようになります。
実践!WorkbookPackageの使い方を3ステップでマスターしよう
理屈は分かったところで、さっそく手を動かして使い方をマスターしましょう!たった3つのステップで完了です。
Step 1: Excelでテンプレートファイル(.xltx)を準備する
まずは、Pythonで操作するための元となるテンプレートファイルを作成します。
- PCでExcelを開き、新しいシートを作成します。
- A1セルに「
=TODAY()」と入力しておきましょう。これでファイルを開くたびに今日の日付が入ります。 - B1セルに「報告タイトル」、C1セルに「作成者」と入力し、セルの背景色を黄色にするなど、分かりやすい書式を設定します。
- 最後に、このファイルを保存します。「ファイル」>「名前を付けて保存」を選び、ファイルの種類を**「Excel テンプレート (*.xltx)」**に変更し、「
report_template.xltx」という名前で保存してください。
これで下準備はOKです。
Step 2: Pythonでテンプレートを読み込む (ここが重要!)
次に、今作成したテンプレートファイルをPythonで読み込みます。ここでWorkbookPackage=Trueの登場です。
from openpyxl import load_workbook
# ファイル名を指定して、テンプレートを読み込む
# ここが今日のポイント! WorkbookPackage=True を忘れずに。
try:
file_path = 'report_template.xltx'
wb = load_workbook(filename=file_path, WorkbookPackage=True)
ws = wb.active
print(f"'{file_path}' の読み込みに成功しました!")
except FileNotFoundError:
print(f"エラー: '{file_path}' が見つかりません。")このコードを実行して「読み込みに成功しました!」と表示されれば、第二ステップはクリアです。
Step 3: データを入力して新しいファイルとして保存する
最後に、読み込んだテンプレートにPythonでデータを書き込み、新しいExcelファイル(.xlsx)として保存します。
from openpyxl import load_workbook
from datetime import datetime
# Step 2のコードに続けて書きます
# テンプレートにデータを書き込む
ws['B2'] = '2025年度 第2四半期 業績報告'
ws['C2'] = 'AI Gem'
# ファイル名を生成
# 例: 'output_20250920.xlsx' のようなファイル名にする
today_str = datetime.now().strftime('%Y%m%d')
output_filename = f'output_{today_str}.xlsx'
# 通常のExcelファイルとして保存
wb.save(output_filename)
print(f"'{output_filename}' が作成されました。")このコードを実行すると、report_template.xltxと同じディレクトリに、データが入力された新しいExcelファイルが作成されているはずです。開いて確認してみてください。テンプレートの書式やA1セルの計算式がちゃんと引き継がれていることが分かりますね!
【少し応用】マクロ付きテンプレート(.xltm)も扱える?
はい、扱えます!
報告書に自動計算ボタンなどを配置した、マクロ付きのテンプレート(.xltm)を扱う場合も、基本は同じです。ただし、マクロ情報を保持するために、load_workbookにもう一つkeep_vba=Trueというおまじないを追加します。
# マクロ付きテンプレートを読み込む場合
wb = load_workbook(
filename='macro_template.xltm',
keep_vba=True, # マクロを保持する設定
WorkbookPackage=True # テンプレートとして読み込む設定
)
# ... データを入力 ...
# 保存する際は、マクロ有効ブック(.xlsm)として保存
wb.save('macro_output.xlsm')
このように、2つの設定をTrueにすることで、マクロもテンプレート情報も両方引き継いだファイルを生成できます。
よくある疑問:save_as_templateとの違いは?
openpyxlを調べていると、wb.save(save_as_template=True)というコードを見かけることがあります。これはWorkbookPackageとどう違うのでしょうか?
答えはシンプルです。
WorkbookPackage=True: 読み込み時に使う。「テンプレートを読み込みます」という宣言。save_as_template=True: 保存時に使う。「テンプレートとして保存します」という宣言。
役割が「読み込み」と「保存」で全く違うので、混同しないようにしましょう。
まとめ:WorkbookPackage=Trueを合言葉にExcel作業を効率化!
お疲れ様でした!今回はopenpyxlでExcelテンプレートを扱うためのWorkbookPackageについて、初心者向けに解説しました。
- テンプレート(.xltx, .xltm)を読み込むときは
load_workbookでWorkbookPackage=Trueを指定する。 - マクロも維持したい場合は
keep_vba=Trueも追加する。 - たったこれだけで、定型的なExcel作業の自動化が劇的に楽になる!
この「WorkbookPackage=True」という合言葉を覚えておけば、あなたのPythonライフはさらに快適になるはずです。ぜひ、今日学んだことをあなたの業務改善に役立ててみてください。


コメント