共用方式為


Office 架構移轉後的 COM 和 .NET 錯誤

徵狀

將 Microsoft Office 架構從 32 位移轉至 64 位之後,如果使用 COM 應用程式或 .NET Framework 用戶端,就會發生錯誤。 這些可能的錯誤包括但不限於下列專案:

  • TYPE_E_CANTLOADLIBRARY

  • TYPE_E_LIBNOTREGISTERED

  • TYPE_E_ELEMENTNOTFOUND

如果 COM 應用程式或 .NET 用戶端以 32 位進程執行,通常會發生錯誤。

範例

在 86 位 PowerShell 中執行下列程式代碼時,可能會發生這些錯誤:

$xl = New-Object -ComObject Excel.Application

$xl.Visible = $True

原因

這些錯誤是由移轉所建立的孤立登錄子機碼所造成。

解決方案

若要修正此問題,請使用下列其中一種方法。

方法 1:自動刪除孤立的子機碼

若要偵測並移除孤立的子機碼,請從下列 GitHub 位置執行此腳本:

Office TypeLib 補救

方法 2:手動刪除孤立的子機碼

如果步驟 1 中的 PowerShell 腳本未刪除孤立的子機碼,您也可以手動檢查孤立的專案。 受影響的裝置可能有類似下列範例的孤立子機碼:

HKEY_CLASSES_ROOT\WOW6432Node\TypeLib\GUID\1.9\0\Win32

注意:在此範例中, GUID 是子機碼特有的字串。

子機碼的值會指向 program Files (x86) 檔案路徑中遺失的 Office 可執行檔。 例如:

C:\Program Files (x86) \Microsoft Office\Root\Office16\EXCEL.EXE

也應該有相鄰的子機碼指向正確的64位程式檔位置。