取引先や顧客に見積書・請求書などのExcelファイルを送付する際、「編集されたくない」「数式を見られたくない」といったご要望をお持ちの方も多いのではないでしょうか。
本記事では、Pythonライブラリ「openpyxl」を用いて、Excelブックやシートをパスワード付きで保護する方法をご紹介いたします。
目次
使用ライブラリの準備
以下のライブラリをインストールしておいてください。
pip install openpyxl
目的と処理の概要
処理1:ブック全体の構造を保護する
- シートの追加・削除を防ぐ
- 開くことはできるが、構造変更を制限
処理2:特定範囲を除いたシート保護
- セルの一部は編集可能
- 他の数式や見出しはロックされる
コード例①:ブック構造の保護
from openpyxl import load_workbook
from openpyxl.workbook.protection import WorkbookProtection
# Excelファイルを読み込む
book = load_workbook("見積テンプレート.xlsx")
# ブック構造にパスワード付きロックを設定
book.security = WorkbookProtection(workbookPassword="secure123", lockStructure=True)
# 別名で保存
book.save("見積書_構造保護済.xlsx")
コード例②:シートの部分的な保護
from openpyxl import load_workbook
from openpyxl.styles import Protection
# 対象ブックとワークシートを取得
book = load_workbook("見積テンプレート.xlsx")
sheet = book["見積シート"]
# 一部のセル範囲を編集可能に設定(例:入力欄)
for row in sheet["C10:G20"]:
for cell in row:
cell.protection = Protection(locked=False)
# シート全体をパスワード保護
sheet.protection.password = "secure123"
sheet.protection.enable()
# 保存
book.save("見積書_シート保護済.xlsx")
解説:パスワードの注意点
- パスワードは
Excel上で解除可能
なレベルです。セキュリティ対策としては限定的です。 - より強固に保護したい場合は、ファイル自体の暗号化やPDF変換などの手段も検討が必要です。
まとめ
本記事では、Pythonとopenpyxlを用いて、以下の2つの保護処理を実現する方法をご紹介しました。
- Excelブック全体の構造保護(シートの追加・削除の防止)
- 特定セルを除いたシート全体の保護(部分編集許可)
業務用の提出ファイルにおいて、意図しない編集やミスを防ぐためにも、自動的に保護をかける仕組みを整えておくことは非常に有効です。