Microsoft Office 程式碼相容性檢查使用者指南
適用版本: Office 2010
上次修改主題的時間: 2016-11-29
Microsoft Office 程式碼相容性檢查程式可協助您對 Microsoft Visual Basic for Application (VBA) 巨集及增益集中的相容性問題進行疑難排解。
您可以使用 Microsoft Office 程式碼相容性檢查程式來檢查您在舊版 Microsoft Office 中建立的 VBA 程式碼,以及協助您在與 64 位元版 Microsoft Office 2010 相容的程式碼中進行 Windows 應用程式開發介面 (API) 呼叫。
本文內容:
關於檢查
安裝
檢查 VBA 程式碼
檢查 VSTO 程式碼
使用檢查
其他資源
關於檢查
Microsoft Office 程式碼相容性檢查程式的設計,是為了協助大型企業或小型企業更新 Visual Basic for Applications (VBA) 與 Visual Studio Tools for Office 程式碼,使之能夠相容於 Office 2010。檢查程式並不會更正程式碼。它只會檢查程式碼,然後對參考已變更或過時之物件模型中之項目的特定程式碼行標示註解 (在 VBA 程式碼中,此工具亦會就 64 位元的相容性對 Declare 陳述式標示註解)。之後您即可依據這些註解修改程式碼,或是使用註解中所提供的連結,在網路上檢視特定程式碼行的相關主題。
請注意,您可以自行決定是否需要修改程式碼。
Office 程式碼相容性檢查包含下列幾項主要功能:
其共有四個增益集 (每個應用程式各一個),分別會載入 Excel 2010、PowerPoint 2010、Word 2010 及 Visual Studio 2008 之中,
以每位使用者或每份文件為基礎執行。在 VBA 中,使用者是在 [開發人員] 索引標籤中開啟文件及執行此工具。在 Visual Studio 專案中,開發人員則是從 [工具] 功能表執行此工具。
其會利用單純的文字搜尋、尋找
parentObject.Property
組合等方式,在目前的文件或 Visual Studio Solution 中搜尋專案,並就 64 位元的相容性掃描 Declare 陳述式 (在 VBA 中)。如有發現其他潛在問題,檢查亦會在程式碼中標示註解。
其會在檢查完成之後,顯示其所偵測到之問題的摘要及詳細報告。
此工具無法用於檢查 Microsoft Outlook 或 Microsoft Access 的程式碼,但可以用於檢查與 Outlook 物件模型互動的 Excel、PowerPoint 及 Word 程式碼。
安裝
請遵循下列步驟安裝 Office 程式碼相容性檢查:
從 Office 2010 工具:相容性檢查程式 (可能為英文網頁) (https://go.microsoft.com/fwlink/?linkid=171093\&clcid=0x404) (可能為英文網頁) 下載 OCCI Update 1 版。將它儲存至您的桌面或其他方便的位置,然後瀏覽至該檔案並開啟它來開始安裝。
您可以選擇只安裝 Visual Studio 增益集。
您可以選擇只安裝 Office 增益集。
您也可以選擇安裝兩者。
請按照提示的方式作業,然後選擇 [完成] 來完成安裝。
顯示 [開發人員] 索引標籤
對要使用此工具的各 Office 應用程式執行下列作業:
若尚未開啟 Excel 2010、PowerPoint 2010 或 Word 2010,請予開啟。
在 [檔案] 索引標籤上,選擇 [選項]。
選擇 [自訂功能區]。
從對話方塊左側的 [由此選擇命令] 下,選擇 [常用命令]。
從對話方塊右側的 [自訂功能區] 下,選擇 [主要索引標籤],然後選擇 [開發人員] 核取方塊。
選擇 [確定]。
啟用 VBA 專案存取
對要使用此工具的各 Office 應用程式執行下列作業:
若尚未開啟 Excel 2010、PowerPoint 2010 或 Word 2010,請予開啟。
在 [檔案] 索引標籤上,選擇 [選項]。
選擇 [信任中心]。
選擇 [信任中心設定]。
在 [巨集設定] 索引標籤上,選取 [信任存取 VBA 專案物件模型]。
檢查 VBA 程式碼
若要檢查文件的相容性,請遵循下列步驟:
在 Excel 2010、PowerPoint 2010 或 Word 2010 中開啟文件。
在 [開發人員] 索引標籤上,選擇 [檢查 VBA 程式碼]。
圖 1. [開發人員] 索引標籤上的程式碼相容性檢查選項
在 [檢查 VBA 專案] 對話方塊中,視需要選取或取消選取選項,然後選擇 [檢查]。
圖 2. [檢查 VBA 專案] 對話方塊
選擇 [檢查 VBA 專案],以檢查 VBA 專案的物件模型中是否有項目已被變更或移除。
您的專案若只會在 Office 2010 上執行,或是可能在執行 64 位元 Office 2010 的系統上執行,請選擇 [檢查 Declare 陳述式]。
選擇 [新增註解] 可以在工具識別出可能有相容性問題的程式碼中加入註解。檢查程式所加入的註解與下列範例類似。
'<VBA_INSPECTOR> ' <DEPRECATION> ' <MESSAGE>Potentially contains ... </MESSAGE> ' <ITEM>AnswerWizard.ResetFileList</ITEM> ' <URL>https://go.microsoft.com/fwlink/?linkid=171730&clcid=0x404
選擇 [詳細報告] 可以在檢查程序結束時建立報告。此報告為文字檔,與下列範例類似。
SUMMARY: ======== Document scanned: c:\TestFile.xls Date Scanned: Thursday, November 12, 2009 Total lines scanned: 101 Total items found: 1 Deprecated items: 0 Changed items: 1 Redesigned items: 0 Declare statements: 0 DETAILS: ======== MODULE: Module1 FUNCTION: Macro1 LINE: 19 TYPE: CHANGE ITEM: Workbook.VBProject URL: https://go.microsoft.com/fwlink/?linkid=170116&clcid=0x404: For Each comp In ActiveWorkbook.VBProject.VBComponents
當檢查完成掃描之後,會顯示與下列類似的摘要報告。
圖 2a. 程式碼相容性檢查摘要
掃描的行總數 – 文件中已掃描的 VBA 程式碼行數總計。
找到的項目總數 – 檢查在程式碼中找到的問題項目數總計,包括要更新的 Declare 陳述式、已變更的項目、已過時的項目,以及受設計變更影響的項目。
過時的項目 – 程式碼中已從物件模型移除的項目,或物件模型不再支援的項目。您的程式碼若相依於過時的物件,請務必重寫該部分的程式碼。
變更的項目 – 程式碼中使用命令語法已有所變更的項目。您的程式碼如有使用過期的語法,必須更新程式碼。
重新設計的項目 – 程式碼中使用相同語法的既有項目,但其更新後設計可能會讓程式碼產生未預期的結果。例如,格式化特定文字方塊可能會因為使用新的文字服務而有所變更,因此程式碼可能仍會建立文字方塊,但方塊中的文字配置可能會不同於舊版。
Declare 陳述式 – 在 VBA 程式碼中偵測到,然後又新增 PTRSAFE 關鍵字針對 64 位元相容性進行更新的 Windows API 陳述式數總計。
檢查 Visual Studio 程式碼
若要檢查文件的相容性,請遵循下列步驟:
在 Visual Studio Tools for Office 中開啟所要檢查的方案。
在 [工具] 功能表上,選擇 [檢查 VSTO 程式碼]。
圖 3. [VSTO 工具] 功能表
在 [檢查 VSTO 專案] 對話方塊中,視需要選取或取消選取選項,然後選擇 [檢查]。
圖 4. [檢查 VSTO 專案] 對話方塊
選取 [檢查 Visual Studio Tools for Office Source (VB.NET 及 C#)],以檢查您的 Visual Studio Tools for Office 專案中是否存有已變更或移除之物件模型的項目。
選擇 [新增註解] 可以在工具識別出可能有相容性問題的程式碼中加入註解。檢查程式所加入的註解與下列範例類似。
//<VSTO_INSPECTOR> // <DEPRECATION> // <MESSAGE>Potentially contains removed items...</MESSAGE> // <ITEM>[mso]AnswerWizard.ResetFileList</ITEM> // <URL>https://go.microsoft.com/fwlink/?linkid=171730&clcid=0x404
選擇 [詳細報告] 可以在檢查程序結束時建立報告。此報告為文字檔,與下列範例類似。
SUMMARY: ======== Solution scanned: ExcelAddIn1 Date scanned: Thursday, November 12, 2009 Total lines scanned: 43 Total items found: 3 Deprecated items: 3 Changed items: 0 Redesigned items: 0 DETAILS: ======== MODULE: ThisAddIn.cs FUNCTION: ThisAddIn_Startup LINE: 17 TYPE: DEPRECATION APP: mso ITEM: AnswerWizard URL: https://go.microsoft.com/fwlink/?linkid=171730&clcid=0x404: xlApp.AnswerWizard.ResetFileList(); MODULE: ThisAddIn.cs FUNCTION: ThisAddIn_Startup LINE: 19 TYPE: DEPRECATION APP: xls ITEM: SmartTagRecognizers URL: https://go.microsoft.com/fwlink/?linkid=170614&clcid=0x404: xlApp.SmartTagRecognizers.Recognize = true; MODULE: ThisAddIn.cs FUNCTION: ThisAddIn_Startup LINE: 22 TYPE: DEPRECATION APP: xls ITEM: SmartTags URL: https://go.microsoft.com/fwlink/?linkid=170617&clcid=0x404: MessageBox.Show(r.SmartTags.Count.ToString());
選擇 [備份] 可以在檢查程式碼之前,先備份您的專案檔案。
當檢查完成掃描之後,會顯示與下列類似的摘要報告。
圖 5. 程式碼相容性檢查摘要
掃描的行總數 – 文件中已掃描的 Visual Basic .NET 或 C# 程式碼行數總計。
找到的項目總數 – 檢查在程式碼中找到的問題項目數總計,包括已變更的項目、已過時的項目,以及受設計變更所影響的項目。
過時的項目 – 程式碼中已從物件模型移除的項目,或物件模型不再支援的項目。您的程式碼若相依於過時的物件,請務必重寫該部分的程式碼。
變更的項目 – 程式碼中使用命令語法已有所變更的項目。您的程式碼如有使用過期的語法,必須更新程式碼。
重新設計的項目 – 程式碼中使用相同語法的既有項目,但其更新後設計可能會讓程式碼產生未預期的結果。例如,格式化特定文字方塊可能會因為使用新的文字服務而有所變更,因此程式碼可能仍會建立文字方塊,但方塊中的文字配置可能會不同於舊版。
Declare 陳述式 – 在 VBA 程式碼中偵測到,然後又新增 PTRSAFE 關鍵字針對 64 位元相容性進行更新的 Windows API 陳述式數總計。
使用檢查
若檢查在程式碼中偵測到 [已變更]、[已過時] 或 [已重新設計] 的項目,您必須對程式碼進行除錯,並解決所發現的問題。建議為程式碼執行完整的測試,藉以檢查每項特性。當您對程式碼進行除錯時,請注意程式碼行上方中斷您程式碼的 Office 程式碼相容性檢查註解。這些註解可以協助您判別特定程式碼行的基本問題。若您無法立即確知問題所在,可以將註解中的 URL 貼到瀏覽器中,以取得更多的資訊。
移除 VBA 中的註解
若要在完成程序並確認程式碼與 Office 2010 的相容性之後,移除程式碼內的註解,請在 Office 2010 應用程式的 [開發人員] 索引標籤中,選擇 [移除註解]。
如此檢查即會從您的 VBA 專案中移除其所標示的所有註解,然後通知所移除的項目數量。
圖 6. 指出已移除之項目數量的訊息
移除 Visual Studio 中的註解
若要在完成程序並確認程式碼與 Office 2010 的相容性之後,移除程式碼內的註解,請在 Visual Studio 中,從 [工具] 功能表中選擇 [移除 VSTO 檢查程式註解]。
如此檢查即會從您的 Visual Studio Tools for Office 專案中移除其所標示的所有註解,然後通知所移除的項目數量。
圖 6a. 指出已移除之項目數量的訊息