見出し画像

openpyxl備忘録(Excel保護設定)

ブックの保護

Excelのブックを保護すると、以下ができなくなります。

  • ワークシートの追加・移動・削除・非表示/再表示

  • ワークシート名の変更

これをopenpyxlで制御します。

必要な関数はこちらです。

from openpyxl.workbook.protection import WorkbookProtection

WorkbookProtection(workbookPassword='パスワード', lockStructure=True)を指定するだけです。簡単ですね。

import openpyxl
from openpyxl.workbook.protection import WorkbookProtection

wb=openpyxl.load_workbook("Adverse Event.xlsx")
wb.security = WorkbookProtection(workbookPassword='aaa', lockStructure=True)

wb.save("Adverse Event5.xlsx")

「情報」を見ると確かに保護されています。

追加ボタンがグレーアウトで死んでいます。


シート名を変えようとしたら怒られました。確かに保護されています。

シートの保護

必要な関数はこちらです。

from openpyxl.styles import Protection

今回は、D1以外のD列のみ入力可能とし、それ以外を保護します。
D列のみlocked=Falseとし、それ以外をprotectionします。

import openpyxl
from openpyxl.styles import Protection

wb=openpyxl.load_workbook("Adverse Event.xlsx")
ws=wb["AE"]

for rows in ws[f"D2:D{ws.max_row}"]:
    for cell in rows:
        cell.protection=Protection(locked=False)

ws.protection.password = 'aaa'
ws.protection.enable()

wb.save("Adverse Event5.xlsx")

C2セルを編集しようとしたら怒られました。

D2には入力できました。

想定通りの動きですね。

この記事が気に入ったらサポートをしてみませんか?