Excel 檔案常在部門、跨公司流轉。核心公式一旦外洩,可能導致定價策略失效、提成機制被逆向、競品複製模型。Excel 提供「隱藏公式」+「保護工作表」機制,配合結構保護、VBA 專案密碼,能建立多層防線。本文以 Excel 365/2021/2019 為例,實戰演練完整設定流程。
| 層級 | 保護對象 | 關鍵設定 | 效果 |
|---|---|---|---|
| 儲存格層級 | 公式內容、儲存格數值、格式 | 儲存格格式 → 保護 → 勾選 `隱藏` + `鎖定` → 保護工作表 | 公式列不顯示公式、無法編輯/選取/複製儲存格 |
| 工作表層級 | 結構(增刪/移動/隱藏工作表)、視窗大小/位置 | 審校 → 保護工作簿 → 勾選 `結構` / `視窗` | 防止新增/刪除/重新命名/移動工作表 |
必要條件:儲存格必須同時「鎖定」且「隱藏」,並啟用「保護工作表」才生效。預設所有儲存格皆為「鎖定」,需先解除非公式儲存格的鎖定,再針對公式儲存格設定「隱藏」。
| 角色 | 權限設定 | 實作方式 |
|---|---|---|
| 一般使用者 | 僅能輸入原始資料、檢視結果 | 上述標準流程,僅開放未鎖定儲存格輸入 |
| 主管/稽核 | 可檢視公式、不可修改 | 建立第二份「審計版」:複製工作表 → 解除保護 → 取消公式儲存格 `隱藏` → 重新保護(不同密碼) |
| 模型維護者 | 完整編輯權限 | 持有工作表保護密碼 + 結構保護密碼 + VBA 專案密碼 |
| 外部合作廠商 | 僅能使用介面、無法存取核心邏輯 | 發布為 `Excel 二進位活頁簿 (.xlsb)` + 移除可見工作表 → 僅保留輸入/輸出介面表 → 核心邏輯藏於 `XLAM` 增益集或 Power Query / Power Pivot 模型中 |
' 一鍵保護含公式儲存格
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 內建保護是「君子鎖」——擋得住誤操作、擋得住好奇心、擋不住有心人暴力破解。但對 95% 內部協作、外包試算、報表分發場景,「隱藏公式 + 保護工作表 + 結構保護 + 強密碼 + VBA 一鍵管理」 已足夠專業、合規、低成本。將核心邏輯封裝為 UDF/XLAM/Power BI 模型,才是企業級機密保護的終局之戰。