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には入力できました。
想定通りの動きですね。
この記事が気に入ったらサポートをしてみませんか?