針對 Office 解決方案中的問題進行疑難解答
適用於: Visualstudio
本文介紹如何針對在Visual Studio中開發 Office 解決方案時執行不同工作時可能會遇到的問題進行疑難解答。
建立、升級和開啟項目時的問題
當您建立或開啟 Office 專案時,可能會遇到下列問題。
問題 1:無法建立專案
如果您嘗試建立或開啟 Office 專案時發生錯誤,但 Visual Studio 沒有足夠的資訊來判斷原因,請嘗試關閉專案、結束 Visual Studio,然後重新啟動。
如果您嘗試建立檔層級專案,則可能已在 Excel 或 Word 中開啟另一份與新項目中檔同名的檔。 請確定已關閉所有其他 Excel 或 Word 實例。
問題 2:當您根據現有項目的檔建立新專案時,控件屬性會遺失
如果您根據現有專案中的檔建立新的 Office 專案,則不會將檔上任何控件的屬性複製到新專案中。 手動重設任何既存控件的屬性。 或者,您可以藉由建立現有專案的複本來保留控件屬性,而不是建立新專案,或將現有的專案載入設計工具中的新方案 () ,並將控件從現有檔複製並貼到新檔。
問題 3:當您根據現有活頁簿建立 Excel 活頁簿項目時發生錯誤
如果您根據現有的活頁簿建立新的 Excel 活頁簿專案,您可能會看到下列錯誤的組合。
- 從 Excel:「隱私權警告:本檔包含宏、ActiveX 控件、XML 擴充套件資訊或 Web 元件。 這些資訊可能包含文件檢查程式無法移除的個人資訊。」
- 從 Visual Studio:「Designer 無法正確載入」。
這些錯誤可能會發生,您嘗試建立的專案是以使用文件檢查程式移除其個人資訊的活頁簿為基礎。 若要避免此問題,請在建立專案之前執行下列步驟:
- 在 Excel 中開啟活頁簿。
- 在Excel中,開啟信任中心。
- 在 [ 隱私權選項] 索引 標籤上,清除 [ 儲存時從檔案屬性移除個人資訊 ] 複選框。
- 儲存活頁簿並關閉 Excel。
問題 4:移轉后無法開啟專案
將 Office 方案移轉至 Microsoft Office 2010 之後,就無法在僅安裝 2007 Microsoft Office 系統的開發電腦上開啟專案。 您可能會看到下列錯誤。
- 「方案中的一或多個專案未正確載入。 如需詳細資訊,請參閱輸出視窗。」
- 「無法建立專案,因為此電腦上未安裝與此專案類型相關聯的應用程式。 您必須安裝與此項目類型相關聯的 Microsoft Office 應用程式。」
若要解決此問題,請編輯 .vbproj 或 .csproj 檔案。 針對 Word 專案,請將 取代HostPackage="{763FDC83-64E5-4651-AC9B-28C4FEB985A1}"
為 HostPackage="{6CE98B71-D55A-4305-87A8-0D6E368D9600}"
。 針對 Excel 專案,將 取代 HostPackage="{B284B16A-C42C-4438-BDCD-B72F4AC43CFB}"
為 HostPackage="{825100CF-0BA7-47EA-A084-DCF3308DAF74}"
。 針對 Outlook 專案,將 取代 HostPackage="{D2B20FF5-A6E5-47E1-90E8-463C6860CB05}"
為 HostPackage="{20A848B8-E01F-4801-962E-25DB0FF57389}"
。
或者,請確定移轉的專案只會在已安裝 Microsoft Office 2010 的開發電腦上開啟。
問題 5:已升級的 Office 2003 檔層級專案中包含 Windows Forms 控件的錯誤
如果您升級 Microsoft Office 2003 檔層級專案,且檔包含 Windows Forms 控件,則升級的專案可能會發生編譯或運行時錯誤。 若要避免這個問題,請先在開發計算機上安裝Visual Studio 2005 Tools for Office Second Edition Runtime,再升級專案。 從 Microsoft 下載中心的 Microsoft Visual Studio 2005 Tools for Office Second Edition Runtime (VSTO 2005 SE) (x86) ,此版本的運行時間是可轉散發套件。
完成專案升級之後,如果其他任何 Office 解決方案未使用 Visual Studio 2005 Tools for Office Second Edition Runtime,您可以從開發計算機卸載它。
使用設計工具時的問題
當您在檔層級專案中使用檔、活頁簿或工作表設計工具時,可能會遇到下列問題。
問題 1:Designer 無法正確載入
在下列情況下,Visual Studio 無法開啟設計工具:
- Excel 或 Word 已開啟,並顯示模式對話方塊。 若要開啟設計工具,請檢查 Excel 或 Word 是否已開啟模式對話方塊,並關閉任何開啟的模式對話方塊。 如果沒有開啟強制回應對話框,在 Excel 或 Word 回應之前,可能還需要執行一些其他動作。
- 目前正在偵錯專案。 若要開啟設計工具,請停止或完成偵錯。
- 當 Excel 啟動時,安裝在開發電腦上的 Excel VSTO 載入宏會顯示對話方塊。 若要建立 Excel 檔層級專案,您必須先停用 VSTO 載入宏。
問題 2:控制件在檔或工作表上顯示為黑色矩形
如果您將檔或工作表上的控件分組,Visual Studio 就無法再辨識控件。 群組控件無法在 [ 屬性 ] 視窗中存取,而且會在檔或工作表上顯示為黑色矩形。 您必須取消控件的群組,才能還原其功能。
問題 3:在 Visual Studio 中看不到 Word 範本上的控件
如果您在 Visual Studio 設計工具中開啟 Word 範本,則可能看不到範本上與文字不符的控件。 這是因為 Visual Studio 會在 [標準] 檢視中開啟 Word 範本。 若要檢視控件,請選取 [檢視] 功能表,指向 [Microsoft Office Word 檢視],然後選取 [列印版面配置]。
問題 4:在 Visual Studio 設計工具中插入美工圖案命令不會執行任何動作
在 Visual Studio 設計工具中開啟 Excel 或 Word 時,按兩下功能區中 [圖例] 索引標籤上的 [美工圖案] 按鈕並不會開啟 [美工圖案] 工作窗格。 若要新增美工圖案,您必須開啟主項目資料夾中的活頁簿或文件復本, (不是位於Visual Studio外部 \ bin 資料夾) 的復本,請新增美工圖案,然後儲存活頁簿或檔。
撰寫程式代碼時的問題
當您在 Office 專案中撰寫程式代碼時,可能會遇到下列問題。
問題 1:使用 C 時無法存取 Office 物件的某些事件#
在某些情況下,當您嘗試存取 Office 主要 Interop 元件實例的特定事件, (在 Visual C# 專案中輸入 PIA) 類型時,可能會看到如下所示的編譯程序錯誤。
'Microsoft.Office.Interop.Excel._Application.NewWorkbook' 與 'Microsoft.Office.Interop.Excel.AppEvents_Event.NewWorkbook' 之間的模棱兩可
此錯誤表示您嘗試存取的事件名稱與物件的另一個屬性或方法相同。 若要存取事件,您必須將 對象轉換成其 事件介面。
具有事件的 Office PIA 類型會實作兩個介面:具有所有屬性和方法的核心介面,以及包含 物件所公開之事件的事件介面。 這些事件介面會使用命名慣例 _<objectname>Events<n>Event,例如 AppEvents_Event 和 ApplicationEvents2_Event。 如果您無法存取預期在物件上找到的事件,請將對象轉換成其事件介面。
例如, Application 物件具有 NewWorkbook 事件和 NewWorkbook 屬性。 若要處理 NewWorkbook 事件,請將 Application 轉換成 AppEvents_Event 介面。 下列程式代碼範例示範如何在 Excel 的文件層級專案中執行這項操作。
private void ThisWorkbook_Startup(object sender, System.EventArgs e)
{
((Excel.AppEvents_Event)this.Application).NewWorkbook +=
new Excel.AppEvents_NewWorkbookEventHandler(ThisWorkbook_NewWorkbook);
}
void ThisWorkbook_NewWorkbook(Excel.Workbook Wb)
{
// Perform some work here.
}
如需 Office PIA 中事件介面的詳細資訊,請參閱 Office 主要 Interop 元件中的類別和介面概觀。
問題 2:無法在以 .NET Framework 4 或 .NET Framework 4.5 為目標的項目中參考 Office PIA 類別
在以 .NET Framework 4 或 .NET Framework 4.5 為目標的專案中,預設不會編譯參考 Office PIA 中定義之類別的程式碼。 PIA 中的類別會使用命名慣例 <objectname>類別,例如 DocumentClass 和 WorkbookClass。 例如,Word VSTO 載入宏專案的下列程式代碼將不會編譯。
Word.DocumentClass document = (Word.DocumentClass) Globals.ThisAddIn.Application.ActiveDocument;
此程式代碼會導致下列編譯錯誤:
- Visual Basic:「使用 No-PIA 模式鏈接類別 'DocumentClass' 時,不允許參考其元件。」
- Visual C#:「Interop 類型為 'Microsoft.Office.Interop。Word。無法內嵌 DocumentClass' 。 請改用適用的介面。」
若要解決此錯誤,請修改程式代碼以改為參考對應的介面。 例如,請改為參考 介面的Document實例,而不是參考 DocumentClass 物件。
以 .NET Framework 4 或 .NET Framework 4.5 為目標的專案,預設會自動內嵌 Office PIA 中的所有 Interop 類型。 發生此編譯錯誤是因為內嵌 Interop 類型功能只適用於介面,而非類別。 如需 Office PIA 中介面和類別的詳細資訊,請參閱 Office 主要 Interop 元件中的類別和介面概觀。 如需 Office 專案中內嵌 Interop 類型功能的詳細資訊,請參閱 設計和建立 Office 方案。
問題 3:無法辨識 Office 類別的參考
某些類別名稱,例如 Application,位於多個命名空間中,例如 Microsoft.Office.Interop.Word 和 System.Windows.Forms。 基於這個理由,/專案範本頂端的 Importsusing 語句包含速記限定常數,例如:
使用 Import using /語句時,您必須使用 Word 或 Excel 限定符來區分 Office 類別的參考,例如:
如果您使用非限定宣告,則會收到錯誤,例如:
即使您已匯入 Word 或 Excel 命名空間,並可存取其中的所有類別,但您必須使用 Word 或 Excel 來完整限定所有類型,才能移除命名空間模棱兩可的情況。
建置項目時的問題
當您建置 Office 專案時,可能會遇到下列問題。
問題 1:無法建置以具有限制許可權之檔為基礎的檔層級專案
如果檔具有限制的許可權,Visual Studio 就無法建置檔層級專案。 如果您的專案包含具有限制許可權的檔,專案將不會編譯,而且您會在 [ 錯誤清單 ] 視窗中收到下列訊息。
無法新增自定義。
如果您想要包含具有限制許可權的檔,請在開發和建置解決方案時使用不受限制的檔。 然後,在發佈解決方案之後,將受限制的許可權套用至發佈位置中的檔。
問題 2:刪除 NamedRange 控制件之後發生編譯程序錯誤
如果您從不是設計工具中使用中工作表的工作表刪除 NamedRange 控件,則可能無法從專案中移除自動產生的程式代碼,而且可能會發生編譯程序錯誤。 若要確定已移除程式代碼,您應該一律選取包含 NamedRange 控件的工作表,使其成為使用中工作表,再刪除控件。 如果在刪除控制項時未刪除自動產生的程式碼,您可以啟用工作表並進行變更,讓工作表標示為已修改,讓設計工具刪除程式碼。 當您重建專案時,會移除程序代碼。
偵錯項目時的問題
當您偵錯 Office 專案時,可能會遇到下列問題。
問題 1:當您在開發計算機上發佈並安裝解決方案時,會出現卸載的提示
當您偵錯 Office 解決方案時,您可能會看到下列錯誤。
無法安裝自定義,因為目前已安裝另一個版本,而且無法從這個位置升級。
此錯誤表示您先前已在開發計算機上發佈並安裝 Office 解決方案。 若要防止訊息出現,請先從計算機上已安裝的程式清單中卸載解決方案,再偵錯解決方案。 或者,您可以在開發計算機上建立另一個用戶帳戶,以測試已發佈解決方案的安裝。
問題 2:在 UNC 網路位置建立的文件層級專案不會從 Visual Studio 執行
如果您在 UNC 網路位置建立 Excel 的檔案層級專案或 Word,則必須將檔的位置新增至 Excel 或 Word 中的信任位置清單。 否則,當您嘗試在 Visual Studio 中執行或偵錯專案時,將不會載入自定義。 如需信任位置的詳細資訊,請參閱 將信任授與檔。
問題 3:偵錯后未正確停止線程
Visual Studio 中的 Office 專案會遵循可讓調試程式正確關閉程式的線程命名慣例。 如果您在方案中建立線程,您應該將每個線程命名為前置詞VSTA_,以確保在停止偵錯時正確處理這些線程。 例如,您可以設定 Name
等候網路事件VSTA_NetworkListener之線程 的屬性。
問題 4:無法在開發電腦上執行或偵錯任何 Office 解決方案
如果您無法在開發電腦上執行或開發 Office 專案,您可能會看到下列錯誤訊息。
無法載入自定義,因為無法建立應用程式域。
Visual Studio 會使用 .NET Framework元件載入器 Fusion,在載入 Office 解決方案之前快取元件。 請確定 Visual Studio 可以寫入 Fusion 快取,然後再試一次。 如需詳細資訊,請參閱 陰影複製元件。
問題 5:使用 [編輯後繼續] 停止檔案層級專案中的調試程式時發生錯誤
如果您使用 [編輯後繼續] 來變更 Excel 檔案層級專案中的程式代碼,或在專案處於中斷模式時 Word,則如果您停止調試程式,可能會看到含有下列錯誤訊息的對話框。
以其目前狀態終止進程可能會造成非預期的結果,包括數據遺失和系統不穩定。
無論您在對話框中選取 [是] 或 [否],Visual Studio 都會終止 Excel 或 Word 程式,並停止調試程式。 若要停止偵錯專案而不顯示此對話框,請直接結束 Excel 或 Word,而不是停止 Visual Studio 中的調試程式。