Claude Code × openpyxl でExcelシート保護・権限管理・アクセスログを自動化する

Claude Code×openpyxlでExcelシート保護を全シートに一括自動設定する方法を解説。数式セル・マスターデータを保護しながら入力欄のみ解放。複数ファイルへの一括適用も数秒で完了。コード付き。

この記事をシェア:
目次 クリックで開く

📅 2025年10月 | ⏱ 読了約8分 | 🏷 Claude Code・業務自動化

全シート一括保護・入力欄のみ編集可能設定・マクロ除去・アクセスログ記録を openpyxl で自動化する完全ガイド。

シート保護 見積書テンプレートデモ
📊 Claude Code 生成デモ

シート保護 見積書テンプレートデモ

↑ Claude Code が自動生成した実際の成果物サンプル。このクオリティが数分で完成します。

シート保護・権限管理の自動化

📌 この記事で実現できること

  • Excelシート保護の一括自動設定の完全自動化を実現するPythonスクリプトを5ステップで解説
  • 「共有Excelでの数式上書きトラブル」という課題を根本から解消する
  • Claude Codeへの自然言語指示だけでスクリプトを生成できる
  • 月・週・日単位の定期実行で完全無人化を実現する方法も紹介

以下のステップを順番に実行することで、今日から業務自動化を始められます。コピーして使えるコードと、Claude Codeへの指示文をセットで解説します。

Excelのシート保護・パスワード設定・特定セルのみ編集許可を手動で設定するのは煩雑です。Claude Code + openpyxl で一括自動化します。

ステップ1:全シートにパスワード保護を一括設定

💬 Claude Code へのプロンプト全シートに保護をかけて、特定のセル範囲(入力欄)だけ編集可能にするスクリプトを作成して
import openpyxl

wb = openpyxl.load_workbook("共有ファイル.xlsx")
PASSWORD = "SecurePass2025"

for ws in wb.worksheets:
    for row in ws.iter_rows():
        for cell in row:
            cell.protection = openpyxl.styles.Protection(locked=True)
    for row in ws.iter_rows(min_row=2, min_col=4, max_col=4, max_row=100):
        for cell in row:
            cell.protection = openpyxl.styles.Protection(locked=False)
    ws.protection.sheet    = True
    ws.protection.password = PASSWORD
    ws.protection.enable()

wb.save("共有ファイル_保護済.xlsx")
print(f"{len(wb.worksheets)}シートに保護を設定")
✅ 実行結果

全シートに保護を一括適用。数式・マスターデータを誤編集から完全保護。

ステップ2:入力欄のみ編集可能なフォームを作成

import openpyxl
from openpyxl.styles import PatternFill, Font, Protection

INPUT_BG = PatternFill("solid", fgColor="FFFDE7")  # 淡い黄色
LOCK_BG  = PatternFill("solid", fgColor="F5F5F5")  # グレー

wb = openpyxl.load_workbook("申請フォーム.xlsx")
ws = wb.active

INPUT_RANGES = ["B3","B4","B5","B7","B8","D3","D4","D5"]
for cell_addr in ws.iter_rows(values_only=False):
    for cell in cell_addr:
        if cell.coordinate in INPUT_RANGES:
            cell.fill = INPUT_BG
            cell.protection = Protection(locked=False)
        else:
            cell.fill = LOCK_BG if cell.value else cell.fill
            cell.protection = Protection(locked=True)

ws.protection.sheet = True
ws.protection.password = "form2025"
ws.protection.enable()
wb.save("申請フォーム_保護.xlsx")
print("入力専用フォーム作成完了")
✅ 実行結果

入力欄(黄色)のみ編集可能なフォームを自動作成。他のセルはロックされ安全。

ステップ3:マクロを除去した安全ファイルを生成

import shutil, openpyxl

shutil.copy("有マクロファイル.xlsm", "有マクロファイル_work.xlsx")
wb = openpyxl.load_workbook("有マクロファイル_work.xlsx", keep_vba=False)
wb.save("安全ファイル_マクロなし.xlsx")
import os
os.remove("有マクロファイル_work.xlsx")
print("マクロ除去・安全ファイル生成完了")
✅ 実行結果

VBAマクロを除去した安全なxlsxファイルを自動生成。外部共有前の安全処理が自動化。

ステップ4:アクセスログを自動記録

import openpyxl, getpass
from datetime import datetime

LOG_FILE = "access_log.xlsx"
try:
    wb_log = openpyxl.load_workbook(LOG_FILE)
    ws_log = wb_log.active
except FileNotFoundError:
    wb_log = openpyxl.Workbook()
    ws_log = wb_log.active
    ws_log.append(["日時","ユーザー","ファイル","操作"])

ws_log.append([
    datetime.now().strftime("%Y-%m-%d %H:%M:%S"),
    getpass.getuser(),
    "共有ファイル.xlsx",
    "アクセス"
])
wb_log.save(LOG_FILE)
print("アクセスログ記録完了")
✅ 実行結果

ファイルアクセスを自動ログ記録。監査証跡の確保が自動化。

ステップ5:保護解除・一括編集→再保護のワークフロー

import openpyxl

def unlock_and_update(filepath, password, updates):
    wb = openpyxl.load_workbook(filepath)
    for ws in wb.worksheets:
        ws.protection.sheet = False
    for cell_addr, value in updates.items():
        wb.active[cell_addr] = value
    for ws in wb.worksheets:
        ws.protection.sheet = True
        ws.protection.password = password
        ws.protection.enable()
    wb.save(filepath)
    print(f"更新+再保護完了: {len(updates)}セル")

unlock_and_update("共有ファイル_保護済.xlsx", "SecurePass2025",
                  {"B1": "2025年度版", "C1": "最終更新: 2025-10-01"})
✅ 実行結果

保護解除→更新→再保護をワンコマンドで実行。管理者作業が効率化。

📊 自動化で得られる効果
⏱ 作業時間(Before) 保護設定:シートごとに手動10分×複数ファイル
⚡ 自動化後(After) スクリプト実行:10秒
改ざん事故 月2〜3件→ゼロ
設定時間 手動10分→スクリプト10秒
統一性 全ファイルで同じ保護ルール適用

このシステムが解決する課題

セル・シート保護の一括設定と解除を自動化。この自動化が特に効果的な場面と、解決できる課題を整理します。

❌ よくある課題

  • 共有Excelで誰かが数式を誤って上書きするトラブルが繰り返し発生している
  • 保護設定・解除のたびにシートを手動で操作する手間がかかっている
  • 複数シートに同じ保護設定をするのが面倒で、設定漏れが発生している
  • どのセルが入力可能でどのセルが保護されているかの管理が煩雑になっている

実務での活用シナリオ

業種・部門 活用方法と効果
予算管理 数式セルを保護し、入力セルのみ解除。誰が操作しても数式が壊れない予算テンプレートを実現。
受注管理 受注確定後のデータを自動でロック。過去データの誤修正を物理的に防止。
品質管理 検査基準値セルを保護。検査結果の入力欄のみ開放し、基準の意図しない変更を防止。
人事管理 給与マスターの参照セルを保護。給与計算フォームは入力だけ許可する設計に。
顧客管理 顧客IDや契約日など変更不可のフィールドを保護。更新履歴の整合性を維持。

導入前後の効果比較

😫 Before ─ 従来の課題

複数シートの保護設定を手動で行うため、設定漏れや設定ミスが多発。「なぜかセルが編集できない」「数式が上書きされていた」などのトラブル対応に時間を取られていた。

✅ After ─ Claude Code で解決

Pythonスクリプトが全シートに一括で保護設定を適用。保護する範囲・許可する操作・パスワードをコードで管理するため、設定漏れゼロ。複数ファイルへの一括適用も数秒で完了。

導入のポイントと注意事項

💡 スムーズに運用するためのコツ

  • 保護パスワードは環境変数や別ファイルで管理し、スクリプトに直書きしない(情報漏洩リスクを低減)
  • worksheet.protection.enable()の後にworksheet.protection.allow_insert_rows = Trueなどで部分許可が設定できる
  • 保護設定と同時に、設定内容を「保護設定ログ.txt」として出力すると後から確認が容易になる
  • 定期的な一括再保護(月次・四半期)をタスクスケジューラで自動実行すると管理の漏れがなくなる

よくある質問(FAQ)

Q. パスワードを忘れたシートの保護を解除できますか?
A. openpyxlは保護解除コードも書けますが、パスワード保護の解読は本来の用途外です。会社のIT管理者に相談することを推奨します。
Q. 特定ユーザーだけ編集できるようにできますか?
A. ExcelのVBAによるユーザー別保護はopenpyxlでは完全には再現できません。ただし、パスワードを組織・職位ごとに分けて管理する運用で代替できます。
Q. 保護したまま値を書き込めますか?
A. はい。openpyxlはPythonからの書き込みは保護設定に関係なく実行できます。保護はExcelのUI操作からの変更を制限するもので、プログラムからの操作は別扱いです。

まとめ

✅ 全シートへの一括保護・パスワード設定を自動化
✅ 入力欄のみ編集可能なフォームを自動作成
✅ アクセスログ・マクロ除去で安全管理を徹底

どんな現場で使われているか:活用シナリオ

対象者 導入前の課題 Claude Code導入後
IT管理者 重要Excelのパスワード設定・シート保護を手動で適用 スクリプトで一括パスワード設定・保護設定を自動適用
業務担当 配布用Excelから数式や設定シートが見えてしまう 配布前に数式非表示・シートロックを自動適用してから送付
マネージャー 入力エリアを誤って壊してしまうスタッフが毎月出る 入力セル以外をすべてロックして誤変更を物理的に防止

実装で押さえるべき重要ポイント

  • 1
    パスワードは環境変数で管理:スクリプト内にパスワードをハードコードするのは危険です。os.environ.get(“EXCEL_PASSWORD”)のように環境変数から読み込む実装を徹底してください。
  • 2
    保護設定は最後に適用する:シート保護を先に適用するとその後のセル操作が制限されます。データ入力・書式設定をすべて完了させてから最後に保護を適用するのが正しい順序です。
  • 3
    編集権限のある入力セルを明確にマーク:黄色背景などで「ここは入力可能」とユーザーにわかるようにすることで、保護エラーへの問い合わせを減らせます。

ビジネスインパクト

一括適用
複数Excelへの保護設定
誤変更ゼロ
保護設定後の操作エラー率
5分/件
保護設定作業時間

この記事のまとめ

  • ✅ openpyxlでExcelのシート保護・パスワード設定を自動適用できる
  • ✅ 数式・設定シートを非表示にして配布用Excelを自動生成できる
  • ✅ 入力エリア以外をロックして誤変更・誤削除を防止できる
  • ✅ 複数ファイルへの保護設定一括適用で管理工数を大幅削減できる


よくある質問(FAQ)

A. はい、パスワードなしでもシートの保護設定(セルのロック・数式の非表示等)を適用できます。ただしパスワードがない場合は誰でも保護を解除できるため、重要なデータには必ずパスワードを設定することを推奨します。

A. はい、パスワードを知っている場合はopenpyxlでプログラムから保護を解除して処理し、再保護するスクリプトを実装できます。パスワードは環境変数で安全に管理することが前提です。

A. はい、フォルダ内のExcelファイルを一括スキャンして、各ファイルの保護設定状況(保護あり/なし・パスワード設定あり/なし)をレポートするスクリプトを実装できます。セキュリティ監査に役立てることができます。


関連記事


制作実績サンプル

このクオリティの資料が、あなたの業務でも作れます

Aurant Technologies が実際に制作したコンサルティング資料(全82枚)のサンプルです。Claude Code × AI自動化により、従来の1/5のコスト・時間で同等品質を実現します。

タイトルスライド

タイトル・ダーク背景
3カラム分析

3カラム比較・分析
AI活用フロー

AI活用フロー図解
Before/After

Before/After比較
RFPテンプレート

構造化コンテンツ
全10枚を
見る

御社のテーマでこのレベルの資料を作成できます
制作費・納期・自動化プランは無料相談でご確認いただけます

📊 サンプル全10枚を見る →

Claude Codeで業務自動化を始めよう

自然言語で指示するだけで、あなたの業務に合ったスクリプトを自動生成します。

無料で試してみる →

AT
aurant technologies 編集

上場企業からスタートアップまで、数多くのデータ分析基盤構築・AI導入プロジェクトを主導。単なる技術提供にとどまらず、MA/CRM(Salesforce, Hubspot, kintone, LINE)導入によるマーケティング最適化やバックオフィス業務の自動化など、常に「事業数値(売上・利益)」に直結する改善実績多数。

この記事が役に立ったらシェア: