PythonでExcelブック・シートをパスワード保護する方法|openpyxlで送付用ファイルを安全に

取引先や顧客に見積書・請求書などの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ブック全体の構造保護(シートの追加・削除の防止)
  • 特定セルを除いたシート全体の保護(部分編集許可)

業務用の提出ファイルにおいて、意図しない編集やミスを防ぐためにも、自動的に保護をかける仕組みを整えておくことは非常に有効です。

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

この記事を書いた人

私が勉強したこと、実践したこと、してることを書いているブログです。
主に資産運用について書いていたのですが、
最近はプログラミングに興味があるので、今はそればっかりです。

目次