共用方式為


更新您要移轉至 .NET Framework 4 的 Excel 和 Word 專案

更新:2010 年 5 月

如果您擁有的 Excel 或 Word 專案使用下列任何功能,則必須在目標 Framework 變更為 .NET Framework 4 時修改程式碼:

  • 智慧標籤

  • GetVstoObject 和 HasVstoObject 方法

  • 文件層級專案中產生的類別

  • 文件上的 Windows Form 控制項

  • Word 內容控制項事件

  • OLEObject 和 OLEControl 類別

  • Controls.Item(Object) 屬性

  • 衍生自 CollectionBase 的集合

您還必須從目標重設為 .NET Framework 4 的 Excel 專案中移除 Microsoft.Office.Tools.Excel.ExcelLocale1033Attribute。Visual Studio 不會自動替您移除此屬性。

從 Excel 專案移除 ExcelLocale1033 屬性

Microsoft.Office.Tools.Excel.ExcelLocale1033Attribute 已從 Visual Studio 2010 Tools for Office Runtime 中針對以 .NET Framework 4 為目標的方案使用的部分移除。 .NET Framework 4 中的 Common Language Runtime (CLR) 會固定將地區設定 ID 1033 傳遞至 Excel 物件模型,而您將無法再使用此屬性停用此行為。 如需詳細資訊,請參閱使用各種地區設定,在 Excel 中格式化資料

移除 ExcelLocale1033Attribute

  1. 在 Visual Studio 中的專案仍開啟時,開啟 [方案總管]。

  2. 在 [屬性] 節點 (適用 C#) 或 [我的專案] 節點 (適用 Visual Basic) 下,按兩下 AssemblyInfo 程式碼檔,在程式碼編輯器中開啟該檔案。

    注意事項注意事項

    在 Visual Basic 專案中,您必須按一下 [方案總管] 中的 [顯示所有檔案] 按鈕,才能查看 AssemblyInfo 程式碼檔。

  3. 尋找 Microsoft.Office.Tools.Excel.ExcelLocale1033Attribute,然後將它從檔案中移除,或將它變成沒有作用的註解。

    <Assembly: ExcelLocale1033Proxy(True)>
    
    [assembly: ExcelLocale1033Proxy(true)]
    

更新用於建立智慧標籤的程式碼

如果您擁有的 Excel 或 Word 專案會建立智慧標籤,則必須在變更目標 Framework 之後對程式碼進行下列變更:

  • 修改建立智慧標籤和動作物件的任何程式碼。

  • 修改使用自訂辨識器定義智慧標籤類別的任何程式碼。

注意事項注意事項

智慧標籤在 Excel 2010 和 Word 2010 中已被取代。 如需詳細資訊,請參閱智慧標籤概觀

如需詳細資訊,請參閱下列指示。

建立智慧標籤和動作物件

您必須修改在程式碼中建立智慧標籤和動作物件的方式。 在目標為 .NET Framework 3.5 的專案中,智慧標籤和動作類型是您可以直接執行個體化的類別。 在目標為 .NET Framework 4 的專案中,這些類型是您無法直接執行個體化的介面。

如果您專案的目標 Framework 變更為 .NET Framework 4,則必須使用專案中 Globals.Factory 屬性提供的方法建立智慧標籤和動作物件。 如需詳細資訊,請參閱智慧標籤架構

下表列出智慧標籤和動作類型,以及用來建立目標為 .NET Framework 4 的專案中各種類型執行個體的方法。

智慧標籤和動作類型

在 .NET Framework 4 專案中使用的 Factory 方法

Microsoft.Office.Tools.Excel.Action

Microsoft.Office.Tools.Excel.Factory 類別的 CreateAction 方法。

Microsoft.Office.Tools.Excel.SmartTag

Microsoft.Office.Tools.Excel.Factory 類別的 CreateSmartTag 方法。

Microsoft.Office.Tools.Word.Action

Microsoft.Office.Tools.Word.Factory 類別的 CreateAction 方法。

Microsoft.Office.Tools.Word.SmartTag

Microsoft.Office.Tools.Word.Factory 類別的 CreateSmartTag 方法。

使用自訂辨識器定義智慧標籤類別

如果您使用自訂辨識器定義自己的智慧標籤類別,則必須修改程式碼。 在目標為 .NET Framework 3.5 的專案中,您會從 Microsoft.Office.Tools.Word.SmartTagMicrosoft.Office.Tools.Excel.SmartTag 類別中衍生類別。 在目標為 .NET Framework 4 的專案中,您會改為定義實作 Microsoft.Office.Tools.Word.ISmartTagExtensionMicrosoft.Office.Tools.Excel.ISmartTagExtension 介面的類別。

如需詳細資訊,請參閱智慧標籤架構

更新使用 GetVstoObject 和 HasVstoObject 方法的程式碼

在目標為 .NET Framework 3.5 的專案中,GetVstoObjectHasVstoObject 方法可做為專案中下列其中一個原生物件上的擴充方法提供:Microsoft.Office.Interop.Word.DocumentMicrosoft.Office.Interop.Excel.WorkbookMicrosoft.Office.Interop.Excel.WorksheetMicrosoft.Office.Interop.Excel.ListObject。 當您呼叫這些方法時,不需要傳遞參數。 下列程式碼範例示範如何在目標為 .NET Framework 3.5 的 Word 增益集中使用 GetVstoObject 方法。

Dim vstoDocument as Microsoft.Office.Tools.Word.Document = _
    Globals.ThisAddIn.Application.ActiveDocument.GetVstoObject()
Microsoft.Office.Tools.Word.Document vstoDocument = 
    Globals.ThisAddIn.Application.ActiveDocument.GetVstoObject();

在目標為 .NET Framework 4 的專案中,您必須修改程式碼,以下列其中一種方式存取這些方法:

  • 您仍然可以將這些方法當做 Microsoft.Office.Interop.Word.DocumentMicrosoft.Office.Interop.Excel.WorkbookMicrosoft.Office.Interop.Excel.WorksheetMicrosoft.Office.Interop.Excel.ListObject 物件上的擴充方法存取。 不過,您現在必須將 Globals.Factory 屬性傳回的物件傳遞至這些方法。

    Dim vstoDocument as Microsoft.Office.Tools.Word.Document = _
        Globals.ThisAddIn.Application.ActiveDocument.GetVstoObject(Globals.Factory)
    
    Microsoft.Office.Tools.Word.Document vstoDocument = 
        Globals.ThisAddIn.Application.ActiveDocument.GetVstoObject(Globals.Factory);
    
  • 或者,您可以在 Globals.Factory 屬性傳回的物件上存取這些方法。 如果您以此方式存取這些方法,則必須將要擴充的原生物件傳遞至方法。

    Dim vstoDocument as Microsoft.Office.Tools.Word.Document = _
        Globals.Factory.GetVstoObject(Globals.ThisAddIn.Application.ActiveDocument)
    
    Microsoft.Office.Tools.Word.Document vstoDocument = 
        Globals.Factory.GetVstoObject(Globals.ThisAddIn.Application.ActiveDocument);
    

如需詳細資訊,請參閱在應用程式層級增益集的執行階段中擴充 Word 文件和 Excel 活頁簿在文件層級自訂中取得原生 Office 物件的擴充物件

更新在文件層級專案中使用所產生類別之執行個體的程式碼

在以 .NET Framework 3.5 為目標的文件層級專案中,專案中產生的類別是衍生自 Visual Studio Tools for Office Runtime 中的下列類別:

在目標為 .NET Framework 4 的專案中,上列 Visual Studio Tools for Office Runtime 中的類型是介面,而不是類別。 在目標為 .NET Framework 4 的專案中產生的類別,是衍生自 Visual Studio Tools for Office Runtime 中的下列新類別:

如果專案中的程式碼參考其中一個產生之類別的執行個體,做為從中衍生的基底類別,則您必須修改程式碼。

例如,在目標為 .NET Framework 3.5 的 Excel 活頁簿專案中,可能會有在專案中產生之 Sheetn 類別的執行個體上執行某些工作的 Helper 方法。

Private Sub DoSomethingToSheet(ByVal worksheet As Microsoft.Office.Tools.Excel.Worksheet)
    ' Do something to the worksheet object.
End Sub
private void DoSomethingToSheet(Microsoft.Office.Tools.Excel.Worksheet worksheet)
{
    // Do something to the worksheet object.
}

如果您要讓專案改以 .NET Framework 4 為目標,則必須對程式碼進行下列其中一項變更:

  • 修改呼叫 DoSomethingToSheet 方法在專案中傳遞 Microsoft.Office.Tools.Excel.WorksheetBase 物件之 Base 屬性的任何程式碼。 這個屬性會傳回 Microsoft.Office.Tools.Excel.Worksheet 物件。

    DoSomethingToSheet(Globals.Sheet1.Base)
    
    DoSomethingToSheet(Globals.Sheet1.Base);
    
  • 修改 DoSomethingToSheet 方法參數,改為預期 Microsoft.Office.Tools.Excel.WorksheetBase 物件。

    Private Sub DoSomethingToSheet(ByVal worksheet As Microsoft.Office.Tools.Excel.WorksheetBase)
        ' Do something to the worksheet object.
    End Sub
    
    private void DoSomethingToSheet (Microsoft.Office.Tools.Excel.WorksheetBase worksheet)
    {
        // Do something to the worksheet object.
    }
    

更新在文件上使用 Windows Form 控制項的程式碼

您必須針對 Microsoft.Office.Tools.ExcelMicrosoft.Office.Tools.Word 命名空間,將 using (C#) 或 Imports (Visual Basic) 陳述式加入至任何程式碼檔案的頂端,這類檔案會使用 Controls 屬性,以程式設計的方式將 Windows Form 控制項加入至文件或工作表。

在目標為 .NET Framework 3.5 的專案中,加入 Windows Form 控制項的方法 (例如 AddButton 方法) 是在 Microsoft.Office.Tools.Excel.ControlCollectionMicrosoft.Office.Tools.Word.ControlCollection 類別中定義。

在目標為 .NET Framework 4 的專案中,這些方法是 Controls 屬性上提供的擴充方法。 若要使用這些擴充方法,您在其中使用方法的程式碼檔案中,必須有用於 Microsoft.Office.Tools.ExcelMicrosoft.Office.Tools.Word 命名空間的 using 或 Imports 陳述式。 此陳述式會在目標為 .NET Framework 4 的新專案中自動產生。 不過,此陳述式不會自動加入至目標為 .NET Framework 3.5 的專案中,因此您必須在改變專案目標時將它加入。

如需詳細資訊,請參閱在執行階段將控制項加入至 Office 文件

更新用於處理 Word 內容控制項事件的程式碼

在目標為 .NET Framework 3.5 的專案中,Word 內容控制項事件是由泛型 EventHandler<TEventArgs> 委派處理。 在目標為 .NET Framework 4 的專案中,這些事件則是由其他委派處理。

下表列出目標為 .NET Framework 4 之專案中的 Word 內容控制項事件,以及與這些事件相關聯的委派。

事件

.NET Framework 4 專案中使用的委派

Added

ContentControlAddedEventHandler

ContentUpdating

ContentControlContentUpdatingEventHandler

Deleting

ContentControlDeletingEventHandler

Entering

ContentControlEnteringEventHandler

Exiting

ContentControlExitingEventHandler

StoreUpdating

ContentControlStoreUpdatingEventHandler

更新使用 OLEObject 和 OLEControl 類別的程式碼

在目標為 .NET Framework 3.5 的專案中,您可以使用 Microsoft.Office.Tools.Excel.OLEObjectMicrosoft.Office.Tools.Word.OLEControl 類別將自訂控制項 (例如 Windows Form 使用者控制項) 加入至文件或工作表。

在目標為 .NET Framework 4 的專案中,這些類別已被 Microsoft.Office.Tools.Excel.ControlSiteMicrosoft.Office.Tools.Word.ControlSite 介面取代。 您必須將參考 Microsoft.Office.Tools.Excel.OLEObjectMicrosoft.Office.Tools.Word.OLEControl 的程式碼修改為參考 Microsoft.Office.Tools.Excel.ControlSiteMicrosoft.Office.Tools.Word.ControlSite。 除了新名稱之外,這些控制項的行為與在目標為 .NET Framework 3.5 的專案中相同。

如需詳細資訊,請參閱在執行階段將控制項加入至 Office 文件

更新使用 Controls.Item(Object) 屬性的程式碼

在目標為 .NET Framework 3.5 的專案中,您可以使用 Microsoft.Office.Tools.Word.Document.ControlsMicrosoft.Office.Tools.Excel.Worksheet.Controls 集合的 Item(Object) 屬性,判斷文件或工作表是否有指定的控制項。

在目標為 .NET Framework 4 的專案中,Item(Object) 屬性已從這些集合中移除。 若要判斷文件或工作表是否包含指定的控制項,請改用 Document.ControlsWorksheet.Controls 集合的 Contains(System.Object) 方法。

如需文件和工作表之 Controls 集合的詳細資訊,請參閱在執行階段將控制項加入至 Office 文件

更新使用衍生自 CollectionBase 之集合的程式碼

在目標為 .NET Framework 3.5 的專案中,Visual Studio Tools for Office Runtime 中有數個集合型別衍生自 CollectionBase 類別,例如 Microsoft.Office.Tools.SmartTagCollectionMicrosoft.Office.Tools.Excel.ControlCollectionMicrosoft.Office.Tools.Word.ControlCollection

在目標為 .NET Framework 4 的專案中,現在這些集合型別是介面,而這些介面不是衍生自 CollectionBase。 這些集合型別上的某些成員已不再使用,例如 CapacityListInnerList

請參閱

概念

將 Office 方案移轉至 .NET Framework 4

智慧標籤架構

內容控制項

在應用程式層級增益集的執行階段中擴充 Word 文件和 Excel 活頁簿

在文件層級自訂中取得原生 Office 物件的擴充物件

在執行階段將控制項加入至 Office 文件

全域存取 Office 專案中的物件

變更記錄

日期

記錄

原因

2010 年 5 月

新增有關從 Excel 專案中移除 Microsoft.Office.Tools.Excel.ExcelLocale1033Attribute 的章節。

資訊加強。