大量の報告書を納品する際、作成者 (Creator) や最終更新者 (Last Modified By) を統一したい場面がございます。Microsoft Excel では “ドキュメントのプロパティ” に当たる項目ですが、openpyxl を用いると Python から一括で書き換えることが可能です。本記事ではファイル名・変数名を汎用的なものに置き換えたサンプルとともに、手順と注意点を丁寧に解説いたします。
目次
動作環境
項目 | 内容 |
---|
Python | 3.10 以上 |
主要ライブラリ | openpyxl(pip install openpyxl ) |
入力ブック | report_original.xlsx |
出力ブック | report_updated.xlsx |
サンプルコード
from openpyxl import load_workbook
# 1. 編集対象のブックを読み込み
workbook = load_workbook('report_original.xlsx')
# 2. 新しい作成者名を定義
author_name = 'Alex Taylor'
# 3. プロパティを書き換え
doc_prop = workbook.properties
doc_prop.creator = author_name
doc_prop.lastModifiedBy = author_name
# 4. 保存(上書き防止のため別名推奨)
workbook.save('report_updated.xlsx')
コードのポイント
項目 | 説明 |
---|
workbook.properties | ドキュメントプロパティ全体を表すオブジェクトです。 |
creator | ブックを新規作成したユーザー名を示します。 |
lastModifiedBy | 最終保存を行ったユーザー名を示します。 |
別名で保存 | 誤って元ファイルを上書きしないよう、*_updated.xlsx などの命名を推奨いたします。 |
よくある質問
質問 | 回答 |
---|
作成日時や最終更新日時も変更できますか。 | .created や .modified プロパティを datetime オブジェクトで設定可能ですが、監査要件によっては変更を控えることをおすすめいたします。 |
複数ファイルを一括処理したい場合は。 | glob.glob('*.xlsx') などで対象ファイルを取得し、上記ロジックをループで回すと効率的です。 |
共同編集環境でも影響しますか。 | プロパティはファイル単位で保存されるため、共有フォルダーで配布する場合も統一された情報が表示されます。 |
まとめ
creator
と lastModifiedBy
を同時に更新 すれば、納品用ブックのプロパティを短時間で統一できます。
- 別名保存により、原本のバックアップを確保すると安全です。
- スクリプト化しておくことで、複数案件の納品準備を自動化でき、ヒューマンエラーを防止できます。