情境:推行無紙化辦公、防止誤列印、管控機密文件外洩
透過 `Workbook_BeforePrint` 事件攔截所有列印動作(工具列按鈕、Office 選單、Ctrl+P),彈出提示並取消列印,不影響編輯、儲存等正常操作。
實作步驟
- 按 Alt+F11 開啟 VBE。
- 專案視窗(Ctrl+R 顯示)右鍵 ThisWorkbook → 「檢視程式碼」。
- 貼入以下程式碼:
Private Sub Workbook_BeforePrint(Cancel As Boolean)
Cancel = True
MsgBox "節約用紙 拒絕列印", vbInformation
End Sub
- 按 Alt+F11 返回 Excel。
- 另存為 「啟用巨集的活頁簿 (*.xlsm)」 格式,否則巨集不會儲存。
測試驗證
- 點擊列印按鈕 / Office 選單列印 / Ctrl+P → 全部彈出「節約用紙 拒絕列印」訊息視窗,列印動作被取消。
- 使用者立即知曉是人為限制而非軟硬體故障。
解除限制
同樣進入 VBE 刪除或註解該 `Workbook_BeforePrint` 程序,重存即可恢復列印功能。
延伸應用
- 改為 `If Not UserHasPermission Then Cancel = True` 搭配使用者帳號判斷,實現角色型列印權限。
- 記錄列印嘗試紀錄至隱藏工作表,供稽核追蹤。