Excel巨集的關鍵安全性提示

最後更新: 18/02/2026
作者: 艾薩克
  • 正確配置信任中心和巨集選項對於平衡 Excel 中的安全性和生產力至關重要。
  • 使用受信任的位置和數位證書,可以確保僅運行來自已驗證來源的 VBA 程式碼。
  • VBA 中良好的程式設計實踐可以提高巨集的效能,並有助於對其進行審核和維護。
  • 如今,巨集與 Power Automate、JavaScript 或 Python 等替代方案並存,但所有這些都需要負責任的安全管理。

Excel巨集安全性

Excel巨集非常適合自動化重複性任務並節省大量時間,但如果管理不當,它們也可能成為病毒和惡意程式碼入侵的入口。因此,了解巨集安全性的工作原理、Excel提供的選項以及如何正確配置它們,是確保電腦和資料安全無虞的關鍵。

本文將詳細介紹Excel 中與巨集相關的所有安全選項,包括數位憑證的使用、受信任位置、信任中心的工作原理,以及一些優化和保護 VBA 程式碼的技巧。您還將了解如何應對諸如「Microsoft 已封鎖巨集,因為此文件的來源不受信任」之類的警告,以及可以採取哪些額外措施來降低風險,同時又不犧牲宏的強大功能。

Excel中的巨集是什麼?它們為什麼會影響安全性?

在 Excel 中,巨集本質上是一系列以 VBA(Visual Basic for Applications)編寫的指令,並儲存在工作簿的模組中。每次錄製或編寫巨集時,Excel 都會產生 VBA 程式碼,然後對工作簿、工作表、區域、資料透視表或圖表等物件執行這些程式碼。

從早期版本開始,Excel 就允許在副檔名為 .XLM 的特殊工作表中建立巨集。後來,隨著 VBA 的出現(從 Excel 5.0 開始,並在 Excel 97 及以後版本中普及),Excel 引入了一個與 Visual Studio 非常相似的專用編輯器,使用者可以在其中編寫和偵錯程式碼。 VBA是 Office 的內建語言,而 Visual Basic (VB) 是一種獨立的物件導向程式語言;它們的語法相同,但可用的物件集不同。

自 Excel 2007 起,所有包含 VBA 程式碼的 Excel 工作簿都以.xlsm副檔名的特殊格式儲存。不包含巨集的標準格式是.xlsx,它是基於 Office Open XML。 *XLSX* 格式更加安全,因為它不支援 VBA 程式碼或 ActiveX 控件,從而減少了攻擊面。隨著 XML 作為內部文件結構的普及,舊的 .xls 格式實際上已經過時了。

微軟如此重視宏安全性的原因在於歷史經驗:曾經宏病毒非常猖獗。它們利用使用者在不知情的情況下開啟包含惡意程式碼的工作簿的弱點,進而感染其他檔案甚至作業系統本身。如今,Excel 假定任何包含巨集的文件都可能存在潛在危險,尤其當文件來自網際網路、電子郵件附件或不受信任的來源時。

Excel 巨集安全選項與信任中心

Excel 將與巨集、檔案來源和活動內容相關的所有保護選項集中在一個名為「信任中心」的專用面板中。您可以在這裡決定要對巨集套用何種安全性等級、哪些資料夾被視為安全,以及在開啟可疑文件時如何處理警告。

若要存取常規設置,在新版 Excel 中,您可以前往「檔案」標籤 > “選項”,然後在側邊選單中選擇「信任中心」 。在那裡,您會看到一個名為「信任中心設定」的按鈕,點擊後會打開一個對話框,其中包含多個部分,包括「巨集設定」和「受信任位置」。

如果您經常使用 VBA,顯示「開發工具」標籤會非常有用。在 Excel 2013 及更高版本中,它被稱為「開發工具」,而在 Excel 2007 和 2010 中,它被稱為「程式設計師」此選項卡預設為隱藏狀態,因此您需要將其啟動。方法是:依序點選“檔案”>“選項”>“自訂功能區”>“主選項卡”,選取“開發工具”複選框,然後按一下“確定”。

一旦顯示「開發工具」選項卡,在「程式碼」群組中,您將找到「巨集安全」按鈕,該按鈕可直接帶您進入信任中心,特別是可設定 VBA 巨集的行為和其他特定安全選項的部分。

VBA巨集的安全設定類型

在信任中心的「巨集設定」部分,您可以找到多個選項,用於控制哪些巨集可以運作以及在什麼條件下運作。選擇其中任何一個選項都會對安全性和易用性產生直接影響。

限制性最強的選項是「停用 VBA 巨集而不發出通知」。啟用此設定後,Excel 會靜默阻止所有巨集的執行,既不顯示任何訊息,也不允許手動啟用。在這種情況下,巨集只有在檔案位於標記為受信任位置的資料夾中時才能運作。這是一個非常安全的選項,適用於很少使用巨集或需要嚴格控制的環境。

  人工智慧助理會收集哪些數據?你又該如何真正保護自己?

此外,還有「停用 VBA 巨集並顯示通知」選項,這在許多 Excel 版本中都是預設值。啟用此選項後,當您開啟包含巨集的工作簿時,Excel 會在功能區下方顯示警告欄,提示活動內容已停用,並提供一個按鈕供您啟用巨集(如果您信任該檔案)。這是最受推薦的選項之一,因為它在安全性和靈活性之間取得了合理的平衡。

更具體的變體是「停用除已數位簽署的巨集之外的 VBA 巨集」。此設定會阻止所有未使用已識別憑證簽署的宏,但允許由受信任的發布者簽署的巨集自動執行。這在企業或組織中非常有用,因為企業開發人員會使用內部或商業憑證對其 VBA 程式碼進行簽名,並且只有這些來源的憑證才應被信任。您可以使用群組原則物件 (GPO) 和 Intune 等解決方案來補充此策略,從而在企業環境中封鎖未簽署的巨集

最後,我們還有「啟用所有 VBA 巨集(不建議)」選項。此選項可讓您在開啟任何檔案後立即執行其中的任何宏,而不會顯示警告或要求確認。雖然避免警報可能很誘人,但這會帶來極高的惡意軟體感染風險,因此僅應在高度控制和隔離的環境中使用。微軟明確指出不建議使用此設定。

在新版本中,您也會看到與Excel 4.0 巨集 (XLM)相關的複選框。這些巨集早於 VBA,且預設為停用狀態,因為它們曾被用於近期的攻擊。只有在您非常清楚自己在做什麼並且需要與舊版工作簿相容時,才應啟用它們。如果您需要 XLM 支持,可以查看如何在 Office 中啟用對舊版巨集和 VBA 的支援

其他關鍵選項:Excel 4.0 和物件模型存取權限

除了啟用或封鎖 VBA 巨集的主要選項外,Excel 還提供了一些對安全性有重大影響的附加設定。其中一項設定是在啟用 VBA 巨集時同時啟用 Excel 4.0 巨集 (XLM)。如前所述,這是一項遺留技術,可能仍然存在於非常古老的文件中。

預設情況下,這些 XLM 巨集已完全停用,因為偵測到有惡意軟體活動利用它們進行攻擊。只有當您確實需要執行 XLM 巨集且檔案來自高度可信任的來源時,才應選取此核取方塊。在其他情況下,最好保持停用狀態。

另一個可能存在問題的選項是「信任對 VBA 專案物件模型的存取」。此設定允許外部程式碼或自動化程式存取 Office VBA 環境,從而操作專案、模組和程式碼。換句話說,它允許其他應用程式從外部控制您的巨集。

這種存取權限在高級自動化場景中可能是必要的,但它也會顯著增加攻擊面。因此,通常建議始終停用此選項,除非在完全受控的環境中存在非常特殊的情況。不必要地啟用它會使您面臨惡意程式碼利用此漏洞注入或修改巨集的風險。

此外,請注意,Excel 中的巨集安全選項與其他 Office 應用程式不共用。換句話說,您在 Excel 的信任中心中配置的內容僅影響該應用程式;Word、PowerPoint 等應用程式都有各自的等效設定。

受信任位置:巨集運作而不會發出警告的資料夾。

巨集安全性的一個關鍵概念是「受信任位置」。這些資料夾(位於本機磁碟、網路或某些情況下位於雲端服務中)被 Excel 本身視為 100% 安全。任何將 VBA 程式碼儲存在這些位置的工作簿都會直接開啟並啟用巨集,而不會顯示警告或封鎖活動內容

配置這些位置在處理您確定可信任的文件集時非常有用,例如公司內部巨集、自訂範本或您日常使用的工作簿。這樣可以避免每次都手動啟用巨集。但是,請務必小心:如果您新增的資料夾過於通用(例如「下載」),則會對潛在威脅造成巨大風險。

若要在 Excel 中建立受信任位置,您可以從「開發工具」標籤 >「巨集安全性」進行操作。在「信任中心」對話方塊中,選擇「受信任位置」選項,然後按一下「新增位置…」 。接下來,按一下“瀏覽”,選擇要標記為安全的資料夾,然後確認變更。如果您需要有關在 Office 中新增或變更受信任位置的逐步說明,本指南將對您有所協助。

  在 Outlook 中啟用語音聽寫:完整指南、提示和故障排除

一個典型的實際範例是,當您從網路下載包含巨集的工作簿時,Excel 會封鎖它,並顯示類似「Microsoft 已封鎖巨集,因為此文件的來源不受信任」的訊息。與其停用全域安全性,不如建立一個特定的資料夾(例如,「可信任檔案」),將其新增至信任中心作為受信任位置,然後僅將您已審核並真正信任的檔案移至該資料夾中。

從那時起,當你從受信任的資料夾開啟這些工作簿時,巨集將自動執行,不會發出任何警告。這是一種更安全、更有條理的第三方程式碼使用方式:先進行審核,然後將其儲存到安全位置,最後才允許其自動運作。

數位憑證和巨集項目簽名

為了進一步增強安全性,Excel 和其他 Office 應用程式都使用了Microsoft Authenticode技術,該技術允許開發人員對巨集專案和檔案進行數位簽署。數位簽名有兩個目的:識別作者身份和確保內容的完整性。

當巨集項目被簽署時,隨附的憑證會確認該文件源自簽署者,並且自簽名以來未被修改。如果有人竄改文件或更改程式碼,簽章將會失效,Office 會發出警告,提示內容與原始數位簽章不再相符。

要獲得數位證書,您可以使用商業證書頒發機構 (CA)或您組織的內部安全人員:管理員、IT 團隊等。微軟維護一個根證書計劃,其中列出了其產品認為值得信賴的證書頒發機構。

如果您不需要公共 CA 頒發的證書,而只想在內部或測試環境中進行簽名,您也可以使用SelfCert.exe工具建立自己的證書。此實用程式可讓您產生自簽名證書,以便您可以對巨集專案進行簽名,並在例如您自己的組織內部使用它們。

安裝憑證後,即可在 VBA 編輯器中對巨集專案進行數位簽章。通常,您可以透過「開發工具」標籤上的「Visual Basic」按鈕存取此功能,然後在編輯器中,從「工具 > 數位簽章…」功能表中選擇要套用的簽章和憑證。之後,如果您在「信任中心」中選取了「停用數位簽章巨集以外的 VBA 巨集」選項,則只有使用您選擇信任的憑證簽署的巨集才會自動執行

如何在Excel中安全啟用或解鎖巨集

如果您收到一個來自非正常來源(例如 OneDrive 連結、電子郵件、網站等)的包含巨集的 Excel 工作簿,開啟時 Excel 很可能會顯示類似「安全風險:由於此文件的來源不受信任,Microsoft 已封鎖巨集」的警告。這是完全正常的,也是現代安全措施的一部分。

若要在共用電腦或其他電腦上啟用巨集,您有多種選擇,每種選擇都涉及不同的安全隱患。最直接的方法是使用功能區下方的警告欄:如果您完全信任作者和文件,可以按一下「啟用內容」以允許巨集僅在該文件中運行。

如果您打算經常使用該文件並對其信任,可以選擇前面討論過的受信任位置方法:將工作簿保存在您已在信任中心配置為安全的特定資料夾中。這樣,您每次開啟檔案時就無需手動啟用巨集。

另一種方法是查看信任中心中的設置,方法是轉到“檔案”>“選項”>“信任中心”>“信任中心設定”>“巨集設定”,然後選擇“停用帶有通知的巨集”選項,以確保在出現通知時始終可以選擇手動啟用它們。

總而言之,關鍵在於保持謹慎:如果您不清楚從互聯網下載的文件的來源,或者沒有對其進行過基本的審查,請勿啟用其中的巨集。此外,如果您身處企業環境,建議您在修改任何全域安全設定之前,先遵循 IT 部門的指導原則。

VBA宏編程與優化最佳實踐

安全性不僅取決於 Excel 的配置,還取決於您編寫和維護巨集的方式。結構良好、有效率且清晰的程式碼比一堆倉促編寫的巨集更容易審查、審核和保護。此外,安全性和效能之間存在直接聯繫:運行緩慢的巨集、資源密集型巨集或未釋放物件的巨集都會增加出錯和出現意外行為的可能性。

  在 Office 程式中啟用或停用自動完成功能

首先,建議您在執行密集型任務時停用自動螢幕更新。每次您修改工作表時,Excel 都會刷新介面,這會消耗時間和資源。透過在巨集的開頭加上 ` Application.ScreenUpdating = False`,並在結尾還原為`Application.ScreenUpdating = True`,您可以顯著提高執行速度。

控制計算模式也非常有用。 Excel 會在每次變更儲存格時自動重新計算公式,如果您的巨集修改了數千個儲存格,這會非常消耗資源。您可以先將`Application.Calculation = xlCalculationManual`設定為手動,進行所有必要的更改,然後在完成後將其還原為自動這樣,您就可以避免數千次中間重新計算,從而防止工作表卡死。

另一個好習慣是明確釋放不再需要的資源。如果您聲明了物件變數(例如,`Set MyVariable = Worksheets("Sheet1").Range("A1:B10")`),建議在使用完畢後將其設為`Set MyVariable = Nothing`。這有助於釋放相關內存,並降低留下懸空引用的風險,從而避免異常行為或不必要的內存消耗。

如果你的巨集非常長且複雜,那麼最好將其拆分成更小的程序,例如 `Sub Step1()`、`Sub Step2()` 等,並在主巨集中呼叫每個程式。除了提高效能之外,這種結構還能使程式碼更易讀,方便使用斷點進行偵錯,並允許你將安全性問題或邏輯錯誤隔離到特定的程式碼區塊。

最後,別忘了聲明具體的資料類型,而不是使用泛型 Variant。使用 Integer、Long、Double、String 等類型,不僅能讓程式碼更清晰,還能優化記憶體使用,避免不必要的隱式轉換。在大型宏中,這些細節對穩定性和性能的影響尤其顯著。

高級功能、替代方案和自動化的未來

儘管傳統的 VBA 巨集仍然被廣泛使用,並且構成了桌面 Excel 自動化的基礎,但近年來出現了一些互補技術,這些技術擴展了我們過去僅使用 VBA 所完成的一些工作,在某些情況下甚至取代了這些工作。

一方面,微軟大力推廣Power Automate 和 Power Automate Desktop平台,這兩個平台允許用戶在不同的應用程式和服務之間建立自動化工作流程,無論是在雲端還是本地端。這些工作流程可以與 Excel 互動、行動數據、產生報告、發送電子郵件等等,其功能比只能在工作簿內運行的傳統巨集更全面。

Excel 也透過 Office JavaScript API引進了對 JavaScript 的支援。這使得開發可在桌面版和 Excel Online 中運行的加載項和解決方案成為可能,並採用了不同的、更面向雲端的安全模型。許多開發人員喜歡這種方法,因為它允許他們使用標準的 Web 技術。

另一方面,像Python這樣的語言因其能夠使用 pandas 或 openpyxl 等函式庫來處理和分析 Excel 資料而變得非常流行。在某些情況下,開髮用於讀寫 .xlsx 或 .xlsm 檔案的外部 Python 腳本,比將所有業務邏輯集中在巨集中更為可取。

一個明顯的趨勢是將Power BI整合到系統中,以實現更高級的數據分析和互動式視覺化。許多先前需要使用巨集和大型電子表格處理的流程現在都已遷移到 Power BI 資料模型和儀表板中,這在某些情況下減少了對複雜巨集的需求,儘管在許多情況下,VBA 仍然是最直接有效的工具

在這種混合環境中,安全性仍然至關重要。無論您使用 VBA、JavaScript、Python 或 Power Automate,都必須養成良好的安全習慣:審查運行的程式碼,僅信任已知來源,保持軟體更新,並充分利用證書選項、受信任位置和信任中心設定。

簡而言之,如果您想在不承擔風險的情況下充分利用 Excel 宏,請將配置完善的安全性設定(信任中心、安全位置、憑證)與良好的程式設計實踐以及謹慎處理第三方文件的方法結合。這樣,您就可以實現任務自動化、提升電子表格效能,並利用 Power Automate 或 JavaScript API 等更現代的解決方案,同時始終將 Excel 工作簿中程式碼運行的風險控制在可控範圍內。

Excel巨集中的安全性設定。
相關文章:
在 Excel 巨集中設定安全性:逐步指南