Office 2024/Microsoft 365 中 ActiveX 無法運作的原因與檢查步驟

· · ActiveX, COM, Office, Microsoft 365, 32bit, 64bit, Windows, 既有資產活用

首先必須了解的事

Office 2024 與 Microsoft 365 中,ActiveX 控制項預設處於停用狀態。 以前正常運作的 Excel 按鈕、表單,以及 Word / PowerPoint 中的嵌入物件,在更新後突然看起來「無法運作」,多半 不是程式故障,而是安全性預設值變更 所致。

原因大致可分成 3 類。

  1. 安全性設定變化(Trust Center、ActiveX 預設停用)
  2. 32bit / 64bit 不一致(在 64bit Office 上載入僅支援 32bit 的控制項)
  3. COM 註冊或相依 DLL / 執行階段不足(未執行 regsvr32、缺少 VC++ 執行階段)

實務鐵則:依照這個順序從上往下排查最快。

Office 2024 系列 vs Microsoft 365 ── 差異在哪裡

觀點 Office 2024 系列(永久授權) Microsoft 365 Apps(訂閱制)
更新模式 只提供安全性 / 品質更新,不新增功能 依頻道持續更新功能
ActiveX 預設值 預設停用 預設停用(相同)
登錄機碼 / 原則路徑 仍為 16.0 仍為 16.0
支援的 OS(截至 2026 年) Windows 11、Server 2025 / 2022、Win10 LTSC Windows 11、Server 2025 / 2022 為正式要求。Win10 則有到 2028 年 10 月的轉換緩衝期
安裝方式 Click-to-Run(非 MSI) Click-to-Run

重點:即使是 Office 2024,登錄機碼路徑仍然是 16.0。「因為是 2024 所以要找 24.0」是常見的白繞路。

Windows 10 的注意事項

Windows 10 的一般支援已於 2025 年 10 月 14 日結束。不過 Microsoft 365 Apps 在 Windows 10 上仍處於 到 2028 年 10 月 10 日為止 提供安全性更新的轉換緩衝期。也就是說:

  • 並非「在 Windows 10 上完全無法運作」
  • 是「OS 已停止支援、Apps 仍在緩衝期」這種雙重前提下運作的狀態

疑難排解全貌

不行OK沒有不行OK不行OK重現症狀取得 Office 產品名稱·組建·bitness·OS 資訊OS / Office 的支援前提是否 OK?修正前提:重新檢視 OS / Office 版本 / 頻道檢查 Trust CenterActiveX 設定 / 保護模式檢視 / 信任的文件有問題?修正設定·簽署·散布設計屬於舊版 Web / IE 前提?檢查 IE 模式與網站清單檢查 CLSID / InprocServer32 / TypeLibCOM 註冊是否正常?regsvr32 / RegAsm / 重新安裝檢查相依 DLL / .NET / VC++ 執行階段相依關係是否滿足?修復·重新散布對應的執行階段收集記錄 / Procmon / Process Explorer比對組建差異·安全性更新差異

Step 1 ── 收集環境資訊

首先務必記錄以下資訊。因為要靠 數值 而非感覺來判斷。

Office 端

  • [檔案]→[帳戶]→[產品資訊] 確認
    • 產品名稱(區分 Office 2024 / Microsoft 365)
    • 版本與 組建編號(最重要)
    • 安裝類型(Click-to-Run)
  • [關於 Excel]/[關於 Word] 等產品資訊對話方塊確認是 32bit 還是 64bit

Windows 端

# OS 基本資訊
Get-CimInstance Win32_OperatingSystem |
  Select-Object Caption, Version, BuildNumber, OSArchitecture

# Office 處理程序的執行檔路徑
Get-Process WINWORD, EXCEL, POWERPNT, VISIO -ErrorAction SilentlyContinue |
  Select-Object ProcessName, Path

常見的錯誤觀念

錯誤觀念 正確想法
用「是最新版本」就結案 要確認 組建編號。Microsoft 365 的頻道差異很大
在 64bit Office 上載入僅支援 32bit 的 COM / ActiveX Office 的 bitness 與 COM 的 bitness 必須一致
認定「Windows 10 就是不行」 雖然在轉換緩衝期內有可能仍能運作,但前提並不穩定

Step 2 ── 檢查 Trust Center 與安全性設定

這裡要做的是區分 「檔案本身被封鎖」 還是 「COM 實體載入失敗」

檢查清單(依序往下)

# 檢查項目 檢查位置 常見原因
1 ActiveX 訊息列 開啟檔案時出現的黃色訊息列 預設停用。試著用 [啟用內容] 看是否能暫時運作
2 Trust Center > ActiveX 設定 [檔案]>[選項]>[信任中心] 是否設定成「不顯示通知並停用全部」
3 保護模式檢視 Trust Center > 保護模式檢視 從網路共用或郵件附件開啟會被封鎖
4 信任的文件 Trust Center > 信任的文件 一旦被信任過,警告就不會再出現,重現結果會因裝置而異
5 信任的發行者 Trust Center > 信任的發行者 即使有簽署,若證書未散布也不會被允許
6 巨集設定 Trust Center > 巨集設定 巨集與 ActiveX 是不同的設定,但有時會複合影響

先嘗試這些

  1. 將問題檔案複製到 本機受管理的資料夾(例如 C:\Temp),另存新檔
  2. 避免直接從網路共用或郵件附件開啟(排除保護模式檢視的影響)
  3. 安全模式 啟動 Office,排除附加元件的影響
excel /safe
winword /safe
powerpnt /safe

Step 3 ── 確認是否為 IE 模式相依

原本以為是「一般的 ActiveX 問題」,實際上有時是因為 Edge 的 IE 模式未設定 所導致。

  • IE 模式不是整個瀏覽器的開關,而是 只套用在已登錄於 Enterprise Site List 的網站
  • 若只有內部 Web 系統的一部分無法運作,請檢查該網站是否屬於 IE 模式對象

檢查位置如下:

  • Edge 原則:系統管理範本 > Microsoft Edge
  • 登錄機碼:HKLM\SOFTWARE\Policies\Microsoft\Edge
  • 診斷頁面:edge://compat/iediagnostic

Step 4 ── 檢查 COM 註冊

若 Trust Center 沒有問題,接下來要確認 COM 實體是否正確註冊。

基本檢查指令

:: 檢查 CLSID 的註冊狀態
reg query "HKLM\SOFTWARE\Classes\CLSID\{YOUR-CLSID-HERE}\InprocServer32" /s

:: 原生 COM / ActiveX DLL 的註冊·解除註冊
regsvr32 C:\Path\YourControl.dll
regsvr32 /u C:\Path\YourControl.dll

.NET 製作的 COM(重要)

.NET 組件無法使用 regsvr32,必須使用 RegAsm。

:: 64bit Windows 上的 32bit Office → 使用 Framework 的 RegAsm
"C:\Windows\Microsoft.NET\Framework\v4.0.30319\RegAsm.exe" "C:\Path\YourControl.dll" /codebase /tlb

:: 64bit Office → 使用 Framework64 的 RegAsm
"C:\Windows\Microsoft.NET\Framework64\v4.0.30319\RegAsm.exe" "C:\Path\YourControl.dll" /codebase /tlb

典型事故:「RegAsm 的 bitness 與 Office 的 bitness 不一致」→ 登錄機碼上顯示註冊成功,但 Office 卻找不到。

Step 5 ── 檢查相依 DLL / 執行階段

「本體 DLL 存在卻無法載入」的情況,多半是 相依對象不足

實務上常見缺少的執行階段

容易缺少的項目 檢查方法
Visual C++ 可轉發套件(2013、2015-2022) 在控制台 > 程式和功能中確認清單
.NET Framework 4.8.1 reg query "HKLM\SOFTWARE\Microsoft\NET Framework Setup\NDP\v4\Full"
相依 DLL(廠商自訂) 用 Process Explorer / Procmon 確認

低層級調查工具

工具 用途
Process Explorer 確認處理程序載入的 DLL 清單
Procmon 即時追蹤 NAME NOT FOUND / PATH NOT FOUND / ACCESS DENIED

用 Procmon 收集重現時的記錄,以 NAME NOT FOUND 篩選,就能一目了然是哪個 DLL 或登錄機碼找不到。

Step 6 ── 取得記錄做最終確認

如果到這一步還無法找出原因,就啟用記錄功能,抓住重現的瞬間

啟用 Office 一般記錄

reg add HKCU\Software\Microsoft\Office\16.0\Common\Logging /v EnableLogging /t REG_DWORD /d 1

啟用 Click-to-Run 詳細記錄

reg add HKLM\SOFTWARE\Microsoft\ClickToRun\OverRide /v LogLevel /t REG_DWORD /d 3
reg add HKLM\SOFTWARE\Microsoft\ClickToRun\OverRide /v PipelineLogging /t REG_DWORD /d 1

記錄會輸出到 %windir%\temp%temp%

同時搭配事件檢視器

eventvwr.msc
  • 檢查 Windows 記錄 > 應用程式
  • .NET Runtime 或 SideBySide 的錯誤往往是決定性的線索

驗證後別忘了停用記錄

reg delete HKCU\Software\Microsoft\Office\16.0\Common\Logging /v EnableLogging /f
reg delete HKLM\SOFTWARE\Microsoft\ClickToRun\OverRide /v PipelineLogging /f
reg delete HKLM\SOFTWARE\Microsoft\ClickToRun\OverRide /v LogLevel /f

主要登錄機碼 / 原則速查表

必記的 4 個路徑

用途 路徑
Office 原則根目錄 HKLM\SOFTWARE\Policies\Microsoft\Office\16.0
確認 ActiveX 全面停用 HKCU\Software\Microsoft\Office\Common\Security\DisableAllActiveX(1=停用,0=解除)
COM 實體註冊 HKLM\SOFTWARE\Classes\CLSID\{CLSID}\InprocServer32
Office COM kill bit HKLM\Software\Microsoft\Office\16.0\Common\COM Compatibility\{CLSID}

在 64bit Windows 上使用 32bit Office 時,COM 相關項目也要檢查 Wow6432Node 之下。

常用測試登錄機碼(僅供驗證)

Windows Registry Editor Version 5.00

; 僅供測試:解除 ActiveX 全面停用
[HKEY_CURRENT_USER\Software\Microsoft\Office\Common\Security]
"DisableAllActiveX"=dword:00000000

警告:這些設定僅供驗證使用。永久對策請以「可信賴的散布途徑與簽署」來執行。

常見症狀與對策

症狀 最可能的原因 先嘗試的做法
更新後按鈕沒有反應 ActiveX 預設停用 訊息列 →[啟用內容]→ 檢查 Trust Center
只在 64bit Office 上失敗 僅支援 32bit 的 COM / ActiveX 向廠商確認是否有 x64 版本,若沒有則切換到 Office 32bit
只有特定電腦無法運作 COM 未註冊 / 註冊損毀 reg query 確認 CLSID → 用 regsvr32 重新註冊
DLL 存在卻無法載入 相依 DLL / VC++ 執行階段不足 用 Procmon 追蹤 NAME NOT FOUND
從網路共用或郵件附件開啟時失敗 保護模式檢視 / MOTW 複製到本機資料夾比對重現差異
只有內部 Web 系統的一部分失敗 IE 模式未設定 將目標網站加入 Enterprise Site List
已簽署卻仍不被允許 憑證未散布 / 未登錄信任的發行者 確認程式碼簽署有效性與憑證散布狀況
沿用 MSI 時代的導入程序導致行為改變 轉換為 Click-to-Run 前提 重新檢視舊腳本或以自行註冊為前提的設計

企業建議設定

永久對策的基本原則是 「不是降低整體安全性,而是只針對必要對象做有限度的允許」

項目 建議
更新頻道(Microsoft 365) 高度依賴舊版 ActiveX 的裝置,建議使用 每月企業版頻道(變更較容易掌握)
Office bitness 除非廠商明確表示支援 x64,否則優先考慮 Office 32bit
Trusted Locations 網路上的信任位置 原則上禁止,需要時採用例外申請方式
簽署 自家散布的 ActiveX / 巨集 / 附加元件要 進行程式碼簽署,並集中管理 Trusted Publisher
IE 模式 只將必要的 URL 加入 Enterprise Site List(避免整體舊化)
部署前驗證 正式散布前建立 pilot ring,以具代表性的表單 / 裝置固定組建版本驗證

Microsoft 365 部署設定範例(32bit + 每月企業版)

<Configuration>
  <Add OfficeClientEdition="32" Channel="MonthlyEnterprise">
    <Product ID="O365ProPlusRetail">
      <Language ID="ja-jp" />
    </Product>
  </Add>
  <Updates Enabled="TRUE" />
  <Display Level="None" AcceptEULA="TRUE" />
</Configuration>

最後手段 ── 修復

  • 快速修復 / 線上修復 對設定或註冊損毀有效
  • 但無法解決 x86 / x64 不一致,或簽署 / 原則問題本身
  • 修復要放在「最後」執行(若先執行會弄髒調查用的記錄)

指令速查表

目的 指令
以安全模式啟動 excel /safe / winword /safe
註冊 COM DLL regsvr32 xxx.dll
解除註冊 COM DLL regsvr32 /u xxx.dll
註冊 .NET COM(32bit Office) Framework\v4.0.30319\RegAsm.exe xxx.dll /codebase /tlb
註冊 .NET COM(64bit Office) Framework64\v4.0.30319\RegAsm.exe xxx.dll /codebase /tlb
備份登錄機碼 reg export HKCU\... backup.reg /y
啟用 Office 一般記錄 reg add HKCU\Software\...\Logging /v EnableLogging /t REG_DWORD /d 1
啟用 Click-to-Run 詳細記錄 reg add HKLM\SOFTWARE\...\OverRide /v LogLevel /t REG_DWORD /d 3
啟動事件檢視器 eventvwr.msc

總結 ── 別搞錯排查順序

設定錯誤 → OS / bitness 不一致 → COM 實體問題 → 相依關係 → 更新差異

ActiveX 的問題乍看只是「Excel 的問題」,實際上是 Office 的預設安全性 + Windows 的支援前提 + COM 實體註冊 + 相依執行階段 + 更新模式 這 5 層交錯而成的問題。與其貿然放寬設定,依序由上往下排查,才能得到不易再發的修復方式。

參考連結

共用相同標籤的最新文章。能以相近的主題延伸理解。

與本文相近的主題頁面。以本文為起點,可進一步連到相關服務與其他文章。

本文連結到以下服務頁面,歡迎從最接近的入口查看。

常見問題

整理諮詢這個主題時常見的問題。

Office 2024 或 Microsoft 365 中 ActiveX 預設被停用是什麼意思?
Office 2024 與 Microsoft 365 中,ActiveX 控制項預設處於停用狀態。以前正常運作的 Excel 按鈕、表單,或 Word / PowerPoint 中的嵌入物件,在更新後突然「無法運作」,多半不是程式故障,而是這項安全性預設值變更所致。開啟檔案時出現的黃色訊息列中選擇[啟用內容],看看是否能暫時運作,並檢查 Trust Center(信任中心)的 ActiveX 設定,是第一步該做的事。
Office 更新後,Excel 的 ActiveX 按鈕變得沒有反應。應該先檢查什麼?
原因大致可分成 3 類:第一是安全性設定變化(Trust Center、ActiveX 預設停用、保護模式檢視),第二是 32bit / 64bit 不一致(在 64bit Office 上載入僅支援 32bit 的控制項),第三是 COM 註冊或相依 DLL / 執行階段不足(未執行 regsvr32、缺少 VC++ 執行階段)。依照這個順序從上往下排查最快。同時,一開始就要先記錄產品名稱、組建編號、Office 的 bitness、OS 資訊,並避免直接從網路共用或郵件附件開啟,改用本機資料夾比對重現差異。
為什麼只有在 64bit Office 上 ActiveX 控制項無法運作?
因為 Office 的 bitness 與 COM / ActiveX 的 bitness 必須一致。在 64bit Office 上載入僅支援 32bit 的控制項不會運作。請向廠商確認是否有 x64 版本,若沒有則考慮切換到 Office 32bit。若是 .NET 製作的 COM,要用 RegAsm 而不是 regsvr32,32bit Office 用 Framework、64bit Office 用 Framework64 的 RegAsm 註冊。若 RegAsm 的 bitness 與 Office 不一致,就會出現登錄機碼上顯示註冊成功、但 Office 卻找不到的典型事故。
要讓 ActiveX 能永久使用,應該怎麼設定?
基本原則不是全面降低安全性,而是只針對必要的對象做有限度的允許。DisableAllActiveX 這項登錄機碼變更純粹是驗證用,永久對策要靠可信賴的散布途徑與簽署來完成。具體來說,替自家散布的 ActiveX / 巨集 / 附加元件進行程式碼簽署並集中管理 Trusted Publisher,Microsoft 365 可考慮採用變更較容易掌握的每月企業版頻道,除非廠商明確表示支援 x64,否則優先考慮 Office 32bit。正式散布前應建立 pilot ring,以具代表性的表單與裝置固定組建版本進行驗證。

作者檔案

本文作者的個人檔案頁面。

Go Komura

小村軟體有限公司 代表

以 Windows 軟體開發、技術諮詢與故障調查為中心,在難以重現的故障調查與既有資產仍在運作的專案上具有優勢。

回到部落格一覽