Sdílet prostřednictvím


Aktualizace projektů Excelu a Wordu, které migrujete do rozhraní .NET Framework 4.5

Pokud máte excelový nebo wordový projekt, který používá některou z následujících funkcí, musíte kód upravit, pokud se cílová architektura změní na rozhraní .NET Framework 4 nebo novější:

Odebrání atributu ExcelLocale1033 z projektů Aplikace Excel

Byla Microsoft.Office.Tools.Excel.ExcelLocale1033Attribute odebrána z části sady Visual Studio 2010 Tools for Office Runtime, která se používá pro řešení cílí na rozhraní .NET Framework 4 nebo novější. Modul CLR (Common Language Runtime) v rozhraní .NET Framework 4 a novější vždy předává ID národního prostředí 1033 do objektového modelu Excelu a tento atribut už nemůžete použít k zakázání tohoto chování. Další informace naleznete v tématu Globalizace a lokalizace řešení aplikace Excel.

Odebrání aplikace ExcelLocale1033Attribute

  1. Když je projekt otevřený v sadě Visual Studio, otevřete Průzkumník řešení.

  2. V uzlu Vlastnosti (pro C#) nebo v uzlu Můj projekt (pro Visual Basic) poklikejte na soubor kódu AssemblyInfo a otevřete ho v editoru kódu.

    Poznámka:

    V projektech jazyka Visual Basic je nutné kliknout na tlačítko Zobrazit všechny soubory v Průzkumník řešení zobrazit soubor kódu AssemblyInfo.

  3. Microsoft.Office.Tools.Excel.ExcelLocale1033Attribute Vyhledejte soubor a buď ho odeberte ze souboru, nebo ho okomentujte.

    [assembly: ExcelLocale1033Proxy(true)]
    

Odebrání odkazu na třídu ExcelLocal1033Proxy

Projekty vytvořené pomocí microsoft Visual Studio 2005 Tools for the systém Microsoft Office System vytvoří instanci excelového Application objektu Microsoft.Office.Tools.Excel.ExcelLocale1033Proxy pomocí třídy. Tato třída byla odebrána z části sady Visual Studio 2010 Tools for Office runtime, která se používá pro řešení cílí na rozhraní .NET Framework 4 nebo novější. Proto je nutné odebrat nebo okomentovat řádek kódu, který odkazuje na tuto třídu.

Odebrání odkazu na třídu ExcelLocal1033Proxy

  1. Otevřete projekt v sadě Visual Studio a otevřete Průzkumník řešení.

  2. V Průzkumník řešení otevřete místní nabídku pro ThisAddin.cs (pro C#) nebo ThisAddin.vb (pro Visual Basic) a pak zvolte Zobrazit kód.

  3. V Editoru VSTO generated code kódu v oblasti odeberte nebo okomentujte následující řádek kódu.

    this.Application = (Excel.Application)Microsoft.Office.Tools.Excel.ExcelLocale1033Proxy.Wrap(typeof(Excel.Application), this.Application);
    
    

Aktualizace kódu, který používá metody GetVstoObject a HasVstoObject

V projektech, které cílí na rozhraní .NET Framework 3.5, GetVstoObject jsou metody nebo HasVstoObject metody k dispozici jako rozšiřující metody na jednom z následujících nativních objektů v projektu: Document, , WorksheetWorkbook, nebo ListObject. Při volání těchto metod nemusíte předávat parametr. Následující příklad kódu ukazuje použití GetVstoObject metoda ve Word VSTO Add-in, který cílí na rozhraní .NET Framework 3.5.

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

V projektech, které cílí na rozhraní .NET Framework 4 nebo novější, je nutné upravit kód pro přístup k těmto metodám jedním z následujících způsobů:

  • K těmto metodám můžete stále přistupovat jako rozšiřující metody pro Document, Workbook, Worksheetnebo ListObject objekty. Nyní však musíte předat objekt vrácený Globals.Factory vlastností těmto metodám.

    Microsoft.Office.Tools.Word.Document vstoDocument =
        Globals.ThisAddIn.Application.ActiveDocument.GetVstoObject(Globals.Factory);
    
  • Alternativně můžete k těmto metodám přistupovat u objektu, který je vrácen vlastností Globals.Factory . Při přístupu k těmto metodám tímto způsobem musíte předat nativní objekt, který chcete rozšířit na metodu.

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

    Další informace naleznete v tématu Rozšíření wordových dokumentů a excelových sešitů v doplňkech VSTO za běhu.

Aktualizace kódu, který používá instance vygenerovaných tříd v projektech na úrovni dokumentu

V projektech na úrovni dokumentů, které cílí na rozhraní .NET Framework 3.5, jsou generované třídy v projektech odvozeny z následujících tříd v sadě Visual Studio Tools for Office runtime:

  • ThisDocument: Document

  • ThisWorkbook: Workbook

  • Sheetn:Worksheet

  • Chartn:ChartSheet

    V projektech, které cílí na rozhraní .NET Framework 4 nebo novější, typy v sadě Visual Studio Tools for Office Runtime uvedené výše jsou rozhraní místo tříd. Generované třídy v projektech, které cílí na rozhraní .NET Framework 4 nebo novější, jsou odvozeny z následujících nových tříd v sadě Visual Studio Tools for Office runtime:

  • ThisDocument: DocumentBase

  • ThisWorkbook: WorkbookBase

  • Sheetn:WorksheetBase

  • Chartn:ChartSheetBase

    Pokud kód v projektu odkazuje na instanci jedné z vygenerovaných tříd jako základní třídy, ze které je odvozena, musíte kód upravit.

    Například v projektu excelového sešitu, který cílí na rozhraní .NET Framework 3.5, můžete mít pomocnou metodu, která provádí určitou práci na instancích vygenerovaných Sheetn tříd v projektu.

private void DoSomethingToSheet(Microsoft.Office.Tools.Excel.Worksheet worksheet)
{
    // Do something to the worksheet object.
}

Pokud projekt změníte na rozhraní .NET Framework 4 nebo novější, musíte v kódu provést jednu z následujících změn:

  • Upravte libovolný kód, který volá metodu DoSomethingToSheet , aby předal Base vlastnost WorksheetBase objektu v projektu. Tato vlastnost vrátí Worksheet objekt.

    DoSomethingToSheet(Globals.Sheet1.Base);
    
  • DoSomethingToSheet Upravte parametr metody tak, aby místo toho očekával WorksheetBase objekt.

    private void DoSomethingToSheet (Microsoft.Office.Tools.Excel.WorksheetBase worksheet)
    {
        // Do something to the worksheet object.
    }
    

Aktualizace kódu, který používá ovládací prvky model Windows Forms v dokumentech

Do horní části libovolného souboru kódu, který používá vlastnost Controls k přidání ovládacích prvků model Windows Forms do dokumentu nebo listu, musíte přidat příkaz Microsoft.Office.Tools.Excel Using (C#) nebo Imports (Visual Basic) nebo Microsoft.Office.Tools.Word obor názvů .

V projektech, které cílí na rozhraní .NET Framework 3.5, jsou metody, které přidávají ovládací prvky model Windows Forms (například metoduAddButton), definovány v třídách ControlCollection ControlCollection.

V projektech, které cílí na rozhraní .NET Framework 4 nebo novější, jsou tyto metody rozšiřující metody, které jsou k dispozici ve vlastnosti Controls. Chcete-li použít tyto rozšiřující metody, musí mít soubor kódu, ve kterém použijete metody using nebo Imports příkaz pro objekt Microsoft.Office.Tools.Excel nebo Microsoft.Office.Tools.Word obor názvů. Tento příkaz se generuje automaticky v nových projektech, které cílí na rozhraní .NET Framework 4 nebo novější. Tento příkaz se ale nepřidá automaticky do projektů, které cílí na rozhraní .NET Framework 3.5, takže ho musíte přidat při opětovném cílení projektu.

Další informace naleznete v tématu Přidání ovládacích prvků do dokumentů Office za běhu.

Aktualizace kódu, který zpracovává události ovládacího prvku obsahu Wordu

V projektech, které cílí na rozhraní .NET Framework 3.5, jsou události ovládacích prvků obsahu aplikace Word zpracovávány obecným EventHandler<TEventArgs> delegátem. V projektech, které cílí na rozhraní .NET Framework 4 nebo novější, se tyto události zpracovávají jinými delegáty.

Následující tabulka uvádí události ovládacího prvku obsahu Aplikace Word a delegáty, které jsou k nim přidruženy v projektech, které cílí na rozhraní .NET Framework 4 nebo novější.

Událost Delegování na použití v projektech .NET Framework 4 a novějších
Added ContentControlAddedEventHandler
ContentUpdating ContentControlContentUpdatingEventHandler
Deleting ContentControlDeletingEventHandler
Entering ContentControlEnteringEventHandler
Exiting ContentControlExitingEventHandler
StoreUpdating ContentControlStoreUpdatingEventHandler

Aktualizace kódu, který používá OLEObject a OLEControl třídy

V projektech, které cílí na rozhraní .NET Framework 3.5, můžete přidat vlastní ovládací prvky (například model Windows Forms uživatelských ovládacích prvků) do dokumentu nebo listu pomocí těchto Microsoft.Office.Tools.Excel.OLEObject tříd.Microsoft.Office.Tools.Word.OLEControl

V projektech, které cílí na rozhraní .NET Framework 4 nebo novější, byly tyto třídy nahrazeny rozhranímiControlSite.ControlSite Je nutné upravit kód odkazující na Microsoft.Office.Tools.Excel.OLEObject a Microsoft.Office.Tools.Word.OLEControl místo toho odkazovat na ControlSite a ControlSite. Kromě nových názvů se tyto ovládací prvky chovají stejně jako v projektech, které cílí na rozhraní .NET Framework 3.5.

Další informace naleznete v tématu Přidání ovládacích prvků do dokumentů Office za běhu.

Aktualizace kódu, který používá vlastnost Controls.Item(Object)

V projektech, které cílí na rozhraní .NET Framework 3.5, můžete použít vlastnost Item(Object) sady Microsoft.Office.Tools.Word.Document.Controls nebo Microsoft.Office.Tools.Excel.Worksheet.Controls kolekce k určení, zda má dokument nebo list zadaný ovládací prvek.

V projektech, které cílí na rozhraní .NET Framework 4 nebo novější, byla vlastnost Item(Object) z těchto kolekcí odebrána. Chcete-li zjistit, zda dokument nebo list obsahuje zadaný ovládací prvek, použijte místo toho metodu Contains(System.Object) Controls kolekce.Controls

Další informace o kolekci dokumentů a listů ovládacích prvků naleznete v tématu Přidání ovládacích prvků do dokumentů Office za běhu.

Aktualizace kódu, který používá kolekce odvozené z KolekceBase

V projektech, které cílí na rozhraní .NET Framework 3.5, je několik typů kolekcí v sadě Visual Studio Tools for Office runtime odvozeno od CollectionBase třídy, například Microsoft.Office.Tools.SmartTagCollection, Microsoft.Office.Tools.Excel.ControlCollectiona Microsoft.Office.Tools.Word.ControlCollection.

V projektech, které cílí na rozhraní .NET Framework 4 nebo novější, jsou tyto typy kolekcí nyní rozhraní, která nejsou odvozena z CollectionBase. Někteří členové již nejsou k dispozici pro tyto typy kolekcí, například Capacity, Lista InnerList.