共用方式為


執行階段中 Office 的疑難排解

更新:2007 年 11 月

如果在建置方案時出現來自 Microsoft Office 的錯誤訊息,或者使用者回報有錯誤訊息,這可能是由於下列某一個常見問題所引起的。

無法載入 Common Language Runtime 或 Microsoft .NET Framework

這個問題造成下列錯誤訊息出現:

<application> 無法載入 Common Language Runtime。請聯繫您的系統管理員,以取得進一步協助。

使用者電腦上的 Microsoft .NET Framework 版本必須與用於開發方案之電腦上的版本相同或者更新。如需安裝 .NET Framework 和 Common Language Runtime 的詳細資訊,請參閱 Microsoft .NET Framework 下載 網頁。

自訂巨集需要 Common Language Runtime

這個問題造成下列錯誤訊息出現:

此文件中的自訂巨集需要版本 2.0 的 Common Language Runtime。請聯繫您的系統管理員,以取得進一步協助。

這裡的自訂巨集表示 Managed 組件。使用者安裝的 Microsoft .NET Framework 版本可能和您的方案不相容。使用者電腦所安裝的 Microsoft .NET Framework 版本必須與用於開發方案之電腦上的版本相同或者更新。安裝可以和現有的版本並存。如需安裝 .NET Framework 和 Common Language Runtime 的詳細資訊,請參閱 Microsoft .NET Framework 下載 網頁。

安全性原則不允許組件執行

這個問題造成下列錯誤訊息出現:

目前的 .NET 安全性原則不允許 <assembly> 從資料夾 <path> 執行。請勿在您的電腦中變更安全性原則。.NET 安全性原則是由您的管理員或撰寫自訂巨集的開發人員所控制的。您仍然可以編輯與儲存文件。請連絡您的管理員或此文件的作者,以取得進一步的協助。

這裡的自訂巨集表示 Managed 組件。組件不一定可以信任而且可能有害。如果您確定組件是安全的,您必須在使用者的 .NET 安全性原則中授與它完全信任,它才會執行。如需詳細資訊,請參閱 HOW TO:將使用權限授與資料夾和組件 (2003 系統)

安全性原則不允許文件載入組件

這個問題造成下列錯誤訊息出現:

目前的 .NET 安全性原則不允許 <document> 載入自訂巨集。請勿在您的電腦中變更安全性原則。.NET 安全性原則是由您的管理員或撰寫自訂巨集的開發人員所控制的。您仍然可以編輯與儲存文件。請連絡您的管理員或此文件的作者,以取得進一步的協助。

這裡的自訂巨集表示 Managed 組件。主要的可能原因是,這個文件是從未受信任的位置或從電子郵件附件開啟的,而且可能有害。如果您確定這個文件是安全的,請將它儲存到使用者電腦上然後再開啟它。儲存到電腦上之後,文件會放在擁有完全信任的「我的電腦」區域。如果文件是電子郵件的附件,它是放在未受完全信任「網際網路」區域中。

另一種可能原因是,電腦上曾經安裝過正確的 Microsoft .NET Framework 版本,但是在執行這個方案前已經移除了。如果使用者同時安裝了兩個 .NET Framework 版本,然後又移除其中一個版本,這種情況就會出現這項安全性訊息,而不是說明未安裝所需 .NET Framework 版本的訊息。若要執行方案,您必須安裝 .NET Framework。

如需詳細資訊,請參閱執行 Office 方案的安全性需求 (2003 系統)

當專案組件受到完全信任時,卻出現安全性例外狀況

如果您確定主要專案組件受到完全信任,但是卻收到安全性例外狀況,這可能是有參考的組件正嘗試執行沒有必要使用權限的動作。您必須以手動方式授與參考的組件任何必要的使用權限。

如果專案是在開發電腦上建置的,則會將執行使用權限授與專案輸出資料夾中所有參考的組件。只有主要專案組件才會自動獲得完全信任。

找不到或無法載入組件

這個問題造成下列錯誤訊息出現:

找不到或無法載入自訂組件。您仍然可以編輯與儲存文件。請連絡您的管理員或此文件的作者,以取得進一步的協助。

若要解決這個錯誤,請嘗試下列選項:

  • 檢查使用者是否擁有這個組件位置的存取權限,以及所指名的組件是否存在。如需詳細資訊,請參閱 Office 方案中的組件概觀

  • 如果組件可以使用,請檢查 Word 或 Excel 是否正在執行已明確載入與 Visual Studio Tools for Office Runtime 不相容之 .NET Framework Common Language Runtime (CLR) 版本的自訂,例如增益集、智慧標籤或智慧文件。若要解決這個問題,請停用任何會明確載入不符合方案所用執行階段之 .NET Framework CLR 版本的自訂。

    執行中的應用程式只能載入一個 .NET Framework CLR 的執行個體。如果自訂強制 Word 或 Excel 載入較早的 .NET Framework CLR 版本,則 Visual Studio Tools for Office 方案將會無法載入。

  • 檢查自訂組件中是否有未處理的例外狀況,導致組件無法載入。請使用設定為中斷 Common Language Runtime 例外狀況的偵錯工具來偵錯您的方案,或是在 [選項] 對話方塊中選取 [例外狀況為跨 AppDomain 或 Managed/原生界限時中斷] 選項。如需詳細資訊,請參閱 HOW TO:處理 Office 專案中的錯誤選項對話方塊、偵錯、一般

組件無法初始化

這個問題造成下列錯誤訊息出現:

無法正確初始化 <project> 中的自訂巨集。您仍然可以編輯與儲存文件。請連絡您的管理員或此文件的作者,以取得進一步的協助。

這裡的自訂巨集表示 Managed 組件。

出現這個錯誤訊息的可能原因包括:

  • 主要 Office 專案組件只受到部分信任。比方說,如果您在某個網路共用資料夾中建立專案,但該資料夾在電腦層級安全性原則中只有「內部網路區域」使用權限,那麼即使已在使用者層級授與其完全信任,您仍然會看到這個訊息。載入組件時並不會出現安全性警告,但是由於電腦層級的原則更為嚴格,因此這個組件沒有必要的使用權限來存取 Office 物件模型 (需要完全信任),而且組件也不會初始化。如果您要使用不是儲存在本機電腦上的組件,網路系統管理員必須在電腦層級授與完全信任。如需詳細資訊,請參閱執行 Office 方案的安全性需求 (2003 系統)

  • 所參考 COM 元件的主要 Interop 組件未在加入這項參考之前安裝在全域組件快取中。Visual Studio 產生的 Interop 組件不一定能在所有情況下完全發揮作用,而且所產生的組件會放在專案目錄中,而不是放在全域組件快取中。

若要參考正確的 Interop 組件

  1. 找出專案中 [Copy Local] 屬性設定為 True 之 COM 元件 (例如 Office 應用程式) 的所有參考。

  2. 以滑鼠右鍵按一下參考,然後按一下快速鍵功能表上的 [移除]。

  3. 執行 [新增或移除程式],並且在全域組件快取中安裝元件的主要 Interop 組件。如需詳細資訊,請參閱 HOW TO:安裝 Office 主要 Interop 組件

  4. 在 Visual Studio 中開啟您的專案,並且加入這個元件的新參考。如需詳細資訊,請參閱 HOW TO:透過主要 Interop 組件以 Office 應用程式為目標

離線時無法使用組件

發生這種情況時,會顯示下列訊息:

在 <path> 中的自訂巨集無法離線使用。要連線下載自訂資訊?這可能會影響其他在您電腦上執行的應用程式,例如 Internet Explorer。

這裡的自訂巨集指的是 Managed 組件。如果電腦處於離線模式,而且快取中沒有組件的複本,就會顯示這個訊息。若要離線工作,必須符合下列條件:

  • 組件必須放在 Web 伺服器上

  • 組件必須透過自訂屬性中的 HTTP 或 HTTPS 路徑存取

若要快取符合上述準則的組件,您至少必須連線一次並且開啟 Office 文件下載這個組件的複本。然後這個組件就可以在離線時使用了。如需詳細資訊,請參閱 Office 方案的離線模型 (2003 系統)HOW TO:部署文件供離線使用 (2003 系統)

其他程式可能會受影響,因為電腦只能有一個離線和連線模式。如果您在 Internet Explorer 的 [檔案] 功能表選取 [離線工作],所有應用程式都會離線。

連線時無法使用組件

發生這種情況時,會顯示下列訊息:

在 <path> 中的自訂巨集無法連線使用,但可使用本機的複本。要離線並使用快取的複本?這可能會影響其他在您電腦上執行的應用程式,例如 Internet Explorer。

這裡的自訂巨集指的是 Managed 組件。如果您的電腦沒有連接到網路 (或者網路關閉),而電腦是處於連線模式,就會出現這個訊息。按一下 [確定] 會讓電腦進入離線模式,並且使用快取的組件複本。您必須在這個對話方塊按一下 [確定] 或是在 Internet Explorer 的 [檔案] 功能表上選取 [離線工作],將電腦設定成離線模式才能使用快取的組件。如需詳細資訊,請參閱 Office 方案的離線模型 (2003 系統)HOW TO:部署文件供離線使用 (2003 系統)

其他程式可能會受影響,因為電腦只能有一個離線和連線模式。如果您將電腦設定成離線模式,所有應用程式都會離線。

無法載入組件

這個問題造成下列錯誤訊息出現:

無法從組件 <assemblyname> 載入型別 <projectname>。

如果您模糊化方案程式碼,則可能會出現這個訊息。模糊化程式碼會變更所有類別的名稱。不過,資訊清單中會參考原始類別名稱,而模糊工具不會變更資訊清單。

為避免發生這個錯誤,請將工作表的名稱和活頁簿類別加入模糊工具的不重新命名類別清單中。

地區設定導致某些 Excel 方法傳回錯誤

如果使用者的地區設定中所選取的地區與 Microsoft Office Excel 2003 所安裝之語言設定不符,則當使用者呼叫特定的 Excel 方法與屬性時,可能會收到以下錯誤:

類型 'System.Runtime.InteropServices.COMException' 很可能於 mscorlib.dll 發生例外狀況。

其他資訊:發生例外狀況於:0x800A03EC。

-或-

類型 'System.Runtime.InteropServices.COMException' 很可能於 ExcelProject.dll 發生例外狀況。

其他資訊:格式太舊或是型別程式庫無效。

如需更正這個問題的詳細資訊,請參閱 Office 方案的全球化與當地語系化

Office 文件開啟時未發生錯誤,但程式碼不執行

程式碼未執行而且未出現錯誤訊息的原因包括:

  • 全域組件快取中未安裝 Office 主要 Interop 組件,可能是因為電腦上未安裝 .NET Framework,或組件在 Office 安裝程式中標記為 [無法使用]。

  • 所使用的 Word 或 Excel 版本不支援 Visual Studio Tools for Office 方案。使用者必須從支援 Visual Studio Tools for Office 的 Microsoft Office 2003 版本安裝 Word 和 (或) Excel。如需詳細資訊,請參閱 HOW TO:安裝 Visual Studio Tools for Office 以開發 Microsoft Office 2003

  • 使用者從 HTTP 或 HTTPS 位置開啟文件,而且未在 Windows 檔案總管中選取 .doc 或 .xls 檔的 [在同一個視窗內瀏覽] 選項。Internet Explorer 會使用這個選項來判斷文件是裝載在目前的視窗內或另一個視窗內中。如果文件裝載在另一個視窗中,自訂就不會載入並執行。若要存取 Word 或 Excel 文件的 [在同一個視窗內瀏覽] 選項,請開啟 Windows 檔案總管,按一下 [工具] 功能表,然後按一下 [資料夾選項]。在 [檔案類型] 索引標籤上,選取檔案類型清單中的 [DOC] 或 [XLS],再按一下 [進階],並確認已選取 [在同一個視窗內瀏覽]。

  • Word 文件會在同一部電腦的 Visual Studio 中開啟。關閉 Visual Studio 並重新開啟文件。

如需詳細資訊,請參閱在文件層級專案中進行偵錯

巨集安全性設定為高,但程式碼仍然會執行

即使在使用者的 Office 應用程式中將 [安全性] 設定為 [高],使用 Managed 程式碼擴充建立的 Microsoft Office 2003 方案仍然會執行。這是因為 Managed 組件程式碼的安全性是由 Microsoft .NET Framework 控管,而不是由 Microsoft Office Word 2003 或 Microsoft Office Excel 2003 控管。不過,有幾種方式可以開啟含有 Managed 程式碼擴充的文件或活頁簿,而不需要執行組件程式碼。如需詳細資訊,請參閱 HOW TO:不執行程式碼即開啟 Office 方案

當非強制回應表單上出現未處理的例外狀況時,Excel 與 Word 會非預期地結束

如果 Excel 或 Word 在使用者於非強制回應表單上觸發事件後非預期地結束,請檢查程式碼中是否存在任何可能引發未處理的例外狀況之處。加入錯誤處理可以防止可能的資料遺失。

Outlook 增益集未載入或停用

有幾種可能情況需要檢查 Outlook 增益集是否未能正確載入:

  • 如果 Microsoft Office Outlook 意外結束,或是正在初始化增益集時發生錯誤,Outlook 可能會停用增益集。如需詳細資訊,請參閱 HOW TO:重新啟用已停用的增益集

  • 如果增益集資訊清單檔與增益集組件不是位於同一個目錄中,則可能會無法載入 Outlook 增益集。如果您將資訊清單檔部署到不同的目錄,則必須更新增益集資訊清單檔中 asmv2:installFrom 項目的 codebase 屬性,以指向增益集組件的位置。

  • Outlook 可能正在執行已明確載入與 Visual Studio Tools for Office Runtime 不相容之 .NET Framework Common Language Runtime (CLR) 版本的增益集。若要解決這個問題,請停用任何會明確載入不相容之 .NET Framework 版本的增益集。

    執行中的應用程式只能載入一個 .NET Framework 執行個體。如果增益集強制 Outlook 載入較早的 .NET Framework 版本,則使用 Visual Studio Tools for Office 所建立的增益集將會無法載入。

您可以藉由設定環境變數,讓 Visual Studio Tools for Office 顯示詳細的錯誤訊息並將所有動作寫入記錄檔,以取得其他疑難排解資訊。如需詳細資訊,請參閱在應用程式層級專案中進行偵錯

無法使用 COM 增益集對話方塊安裝 Outlook 增益集

請勿使用 [COM 增益集] 對話方塊安裝使用 Visual Studio Tools for Office 建立的 Outlook 增益集,請改用 Outlook 專案範本隨附的部署專案。Outlook 增益集會使用名為 AddinLoader.dll 的 Proxy .dll 檔擴充 Outlook 的功能。Proxy 可讓 Managed 組件透過 COM 與 Outlook 進行溝通。如需詳細資訊,請參閱部署應用程式層級增益集 (2003 系統)

無法在 Outlook 增益集中加入自訂屬性頁

如果您的 Outlook 增益集為 Outlook 的 [選項] 對話方塊或 Outlook 資料夾的 [屬性] 對話方塊建立自訂屬性頁,則必須對 COM 明確顯示自訂屬性頁 (根據預設,COM 看不到組件)。否則,您的增益集將無法建立自訂屬性頁,且您可能會在對增益集偵錯時收到 COMException

對 COM 顯示自訂屬性頁的方式有兩種:

  • ComVisibleAttribute 加入在專案中實作自訂屬性頁的類別。如需將屬性套用至類別的詳細資訊,請參閱套用屬性

  • 使用 Visual Studio 對 COM 顯示整個增益集組件。

    若要使用 Visual Studio 對 COM 顯示增益集組件

    1. 在 Visual Studio 中,以滑鼠右鍵按一下 [方案總管] 中的專案,然後按一下 [屬性]。

    2. 按一下 [應用程式] 索引標籤。

    3. 按一下 [組件資訊] 按鈕。

    4. 選取 [讓組件成為 COM-Visible] 核取方塊。

    5. 按一下 [確定]。

Outlook 增益集中從未引發 Quit 事件

如果您為 Outlook 增益集中 Microsoft.Office.Tools.Outlook.Application 類別的 Quit 事件建立事件處理常式,這個事件處理常式將永遠不會執行。當您關閉 Outlook 的執行個體,而該執行個體正在執行 Visual Studio Tools for Office 所建立的增益集時,增益集會在收到 Quit 事件之前卸載。或者,您可以將 Outlook 關閉時要執行的程式碼放置於專案中的 ThisAddIn_Shutdown 事件處理常式。如需詳細資訊,請參閱 2007 Microsoft Office 增益集專案範本2003 Microsoft Office 增益集專案範本

Close 方法會導致 Word 與 Excel 非預期地結束

當您從非強制回應的表單呼叫 Excel Workbook 物件或 Word Document 物件的 Close 方法時,應用程式可能會在非預期的情況下結束。所有開啟的文件或活頁簿都會關閉,而資料就可能會遺失。如果 Microsoft Office Outlook 使用 Word 做為其電子郵件編輯器,則所有開啟的電子郵件可能會關閉。如果您在處理 AppDomain.DomainUnload 事件時顯示 Windows Form 或訊息方塊,也可能會發生這種情形。

若要解決這個問題,請不要從非強制回應表單或非強制回應表單的事件中呼叫 Close 方法。請改用下列的程序。

  • 如果您必須從表單關閉文件,則使用強制回應表單 (例如使用 ShowDialog 而非 Show)。

  • 如果您必須使用非強制回應表單,請確定在嘗試關閉文件或活頁簿之前,非強制回應表單是關閉的,而且表單參考已完全終結。下列程式碼示範一個範例:

    Dim form1 As SampleForm
    
    Sub OpenForm()
        form1 = New SampleForm
        form1.Show()  ' Show the form modelessly.
    End Sub
    
    Sub ForceShutdown()
    
        ' Completely close the form if it is still running.
        ' Note that hiding the form might not work by itself.
    
        If (Not form1 Is Nothing) Then
            form1.Close()
            form1.Dispose()
            form1 = Nothing
        End If
    
        Me.Close()
    End Sub
    
    SampleForm form1;
    
    private void OpenForm()
    {
        form1 = new SampleForm();
        form1.Show();  // Show form modelessly.
    }
    
    private void ForceShutdown()
    {
        // Completely close the form if it is still running.
        // Note that hiding the form might not work by itself.
    
        if (form1 != null)
        {
            form1.Close();
            form1.Dispose();
            form1 = null;
        }
        object saveChanges = Word.WdSaveOptions.wdSaveChanges; 
        this.Close(ref saveChanges, ref missing, ref missing);
    }
    

如需在 C# 中傳遞 missing 參數的詳細資訊,請參閱了解 Office 方案中的選擇性參數

設定 SaveAs 對話方塊的 Cancel 參數時,會傳回不正確的警告或造成 Word 非預期地結束

如果在 ThisDocument 的 DocumentBeforeSave 事件處理常式中顯示 [SaveAs] 對話方塊,並將 Cancel 參數設為 false,則應用程式可能會非預期結束。如果將 Cancel 參數設為 true,則會出現錯誤訊息,表示 Autosave 已停用。

分割 Excel 工作表視窗時,Windows Form 控制項發生無法預期的行為

如果您分割含有 Windows Form 控制項的工作表視窗,控制項在兩個視窗中的行為可能不相同。例如,如果您執行程式碼來變更工作表上 TextBox 的 BackColor 屬性,變更可能只會出現在其中一個視窗。

將 Excel 主控制項傳遞到方法時擲回 InvalidCastException

Excel 中的某些方法和屬性需要您傳遞原生 (Native) Office 物件給它們。如果 ExcelLocale1033Attribute 屬性設定為 false,而且您傳入以原生 Office 物件為基礎的主控制項,則它就會擲回 InvalidCastException。您可以使用主控制項的 InnerObject 屬性,將基礎原生 Office 物件傳遞給這些方法和屬性。如需 Excel 中當地語系化問題的詳細資訊,請參閱使用各種地區設定,在 Excel 中格式化資料

如果顯示強制回應對話方塊,ListObject 的資料繫結便會失敗

如果 Excel 在繫結至 ListObject 的資料集更新時顯示強制回應對話方塊,ListObject 的資料繫結 (Data Binding) 便會失敗。當 ListObject 遺失資料繫結時,會引發 DataBindingFailure 事件。若要再次將 ListObject 繫結至資料來源,請處理 DataBindingFailure 事件並呼叫 SetDataBinding 方法。

按兩下部署資訊清單會導致錯誤

如果按兩下部署資訊清單,會顯示下列訊息:

無法繼續。應用程式的格式不正確。請洽詢應用程式廠商以取得協助。

與 ClickOnce 部署不同的是,您不能用按兩下部署資訊清單的方式執行 Visual Studio Tools for Office 方案。若要執行方案,請開啟 Office 應用程式。如果是 Word 和 Excel,請在應用程式中開啟方案文件。或者,您也可以按兩下文件檔。

如需部署 Visual Studio Tools for Office 方案的詳細資訊,請參閱部署文件層級自訂 (2003 系統)部署應用程式層級增益集 (2003 系統)。如需部署資訊清單的詳細資訊,請參閱 Office 方案的部署資訊清單 (2003 系統)

請參閱

工作

設計階段的 Visual Studio 疑難排解

概念

Office 程式設計的一般工作

其他資源

Office 方案疑難排解