Windows XP Windows 7 Windows 2003 Windows Vista Windows 綜合教學 Linux 系統教學
Windows 10 Windows 8 Windows 2008 Windows NT Windows Server 電腦軟體教學

Excel 公式加密與儲存格保護實戰:隱藏商業邏輯、防範誤改、協作零洩漏

編輯:XP 系統基礎知識

試算表裡的核心算法、成本結構、提成公式不想被同事看見?內建「隱藏公式 + 保護工作表」雙重鎖,零成本守住機密

Excel 檔案常在部門、跨公司流轉。核心公式一旦外洩,可能導致定價策略失效、提成機制被逆向、競品複製模型。Excel 提供「隱藏公式」+「保護工作表」機制,配合結構保護、VBA 專案密碼,能建立多層防線。本文以 Excel 365/2021/2019 為例,實戰演練完整設定流程。

核心原理:兩個獨立層級的保護

層級保護對象關鍵設定效果
儲存格層級公式內容、儲存格數值、格式儲存格格式 → 保護 → 勾選 `隱藏` + `鎖定` → 保護工作表公式列不顯示公式、無法編輯/選取/複製儲存格
工作表層級結構(增刪/移動/隱藏工作表)、視窗大小/位置審校 → 保護工作簿 → 勾選 `結構` / `視窗`防止新增/刪除/重新命名/移動工作表

必要條件:儲存格必須同時「鎖定」且「隱藏」,並啟用「保護工作表」才生效。預設所有儲存格皆為「鎖定」,需先解除非公式儲存格的鎖定,再針對公式儲存格設定「隱藏」。

標準設定流程(5 步驟)

  1. 全選解除鎖定:`Ctrl + A` 全選 → `Ctrl + 1` 開啟「儲存格格式」→ `保護` 分頁 → 取消勾選 `鎖定` → `確定`。
    (此步驟讓所有儲存格預設可編輯,避免保護後連輸入值都動不了。)
  2. 精準選取公式儲存格:`Ctrl + G` (或 `F5`) → `定位條件` → 勾選 `公式` → `確定`。
    Excel 會自動選取所有包含公式的儲存格(含陣列公式、動態陣列溢出區)。
  3. 設定公式儲存格為「鎖定 + 隱藏」:選取狀態下 `Ctrl + 1` → `保護` 分頁 → 同時勾選 `鎖定` 和 `隱藏` → `確定`。
  4. 啟用工作表保護:`審校` → `保護工作表` → 輸入密碼(建議 12 字元以上、大小寫數字符號混合) → 勾選允許使用者的動作:
     ✅ `選取鎖定的儲存格`(預設)
     ✅ `選取未鎖定的儲存格`(預設)
     ✅ `格式化儲存格` / `格式化欄/列`(視需求)
     ❌ `插入/刪除欄列`、`編輯物件`、`編輯情境`(建議取消)
    → `確定` → 重複輸入密碼確認。
  5. 驗證效果:點選任一公式儲存格 → 公式列顯示空白/結果值,雙擊無法進入編輯模式,右鍵無「清除內容」等選項。未鎖定儲存格正常輸入。

進階防護:多層次權限設計

角色權限設定實作方式
一般使用者僅能輸入原始資料、檢視結果上述標準流程,僅開放未鎖定儲存格輸入
主管/稽核可檢視公式、不可修改建立第二份「審計版」:複製工作表 → 解除保護 → 取消公式儲存格 `隱藏` → 重新保護(不同密碼)
模型維護者完整編輯權限持有工作表保護密碼 + 結構保護密碼 + VBA 專案密碼
外部合作廠商僅能使用介面、無法存取核心邏輯發布為 `Excel 二進位活頁簿 (.xlsb)` + 移除可見工作表 → 僅保留輸入/輸出介面表 → 核心邏輯藏於 `XLAM` 增益集或 Power Query / Power Pivot 模型中

輔助工具:VBA 巨集一鍵套用/移除保護

' 一鍵保護含公式儲存格
Sub ProtectFormulas()
    Dim ws As Worksheet, pwd As String
    pwd = InputBox("請輸入工作表保護密碼:")
    If pwd = "" Then Exit Sub
    On Error Resume Next
    For Each ws In ActiveWorkbook.Worksheets
        ws.Cells.Locked = False
        On Error Resume Next
        ws.Cells.SpecialCells(xlCellTypeFormulas).Locked = True
        ws.Cells.SpecialCells(xlCellTypeFormulas).FormulaHidden = True
        On Error GoTo 0
        ws.Protect Password:=pwd, UserInterfaceOnly:=True, _
            AllowFormattingCells:=True, AllowFormattingColumns:=True, _
            AllowFormattingRows:=True, AllowInsertingRows:=False, _
            AllowDeletingRows:=False, AllowSorting:=True, AllowFiltering:=True
    Next
    MsgBox "所有工作表公式已保護"
End Sub

' 一鍵移除所有工作表保護
Sub UnprotectAll()
    Dim ws As Worksheet, pwd As String
    pwd = InputBox("請輸入解除密碼:")
    If pwd = "" Then Exit Sub
    For Each ws In ActiveWorkbook.Worksheets
        ws.Unprotect Password:=pwd
    Next
    MsgBox "保護已移除"
End Sub

將巨集存入 `個人巨集活頁簿 (PERSONAL.XLSB)`,任何檔案都能用 `Alt + F8` 呼叫。

常見誤區與避坑

  • ❌ 只勾選「隱藏」不勾選「鎖定」 → 保護後公式仍可見。
    ✅ 必須「鎖定 + 隱藏」雙勾選。
  • ❌ 未先「全選解除鎖定」 → 保護後連輸入欄都動不了。
    ✅ 先全解鎖,再針對公式儲存格加鎖。
  • ❌ 密碼遺失無法解除 → Excel 保護密碼可用暴力破解工具(如 `Hashcat`、VBA 窮舉)在數分鐘至數小時內破解,不適合高機密資料。
    ✅ 高機密請用 `XLAM` 編譯增益集、Power BI 資料集、Azure Analysis Services、或匯出為 `PDF/紙本` 傳遞結果。
  • ❌ 保護後無法使用自動篩選/排序 → 勾選保護對話框的 `使用自動篩選`、`排序`。
  • ❌ 合併儲存格在保護後無法取消合併 → 保護前完成版面合併,或用 `置中橫跨欄位` 替代。

更高強度的替代方案

  1. XLAM 增益集:將核心 UDF/巨集/類別模組編譯為 `.xlam`,`VBAProject` 設定密碼 + `鎖定專案供檢視`,使用者僅能呼叫函數 `=MyUDF()`,無法檢視原始碼。
  2. Power Query / Power Pivot:邏輯封裝在 M 語言查詢 / DAX 度量值中,發布至 Power BI Service / Analysis Services,使用者僅連線模型、無法下載原始邏輯。
  3. Office Scripts / TypeScript:邏輯跑在雲端容器,試算表僅作為介面,原始碼儲存於 OneDrive/SharePoint,權限由 Entra ID 控制。
  4. 資料庫 + 應用層:核心運算移至 PostgreSQL/SQL Server/Azure Functions,Excel 僅做前端呈現,徹底物理隔離。

一頁式檢查清單(設定前請確認)

  • [ ] 識別所有核心公式儲存格(含動態陣列溢出區)。
  • [ ] 決定哪些儲存格允許使用者輸入/修改格式/篩選/排序。
  • [ ] 設定強密碼並安全備份(密碼管理器/列印封存)。
  • [ ] 測試:一般帳號開啟 → 驗證公式隱藏、輸入正常、篩選可用、無法新增/刪除工作表。
  • [ ] 文件化:記錄保護範圍、密碼提示、解除流程、異動紀錄。

Excel 內建保護是「君子鎖」——擋得住誤操作、擋得住好奇心、擋不住有心人暴力破解。但對 95% 內部協作、外包試算、報表分發場景,「隱藏公式 + 保護工作表 + 結構保護 + 強密碼 + VBA 一鍵管理」 已足夠專業、合規、低成本。將核心邏輯封裝為 UDF/XLAM/Power BI 模型,才是企業級機密保護的終局之戰。

Copyright © Windows教程網 All Rights Reserved