Sdílet prostřednictvím


Aktualizace projektů Excel a Word při migraci na rozhraní .NET Framework 4 nebo .NET Framework 4.5

Máte-li projekt aplikace Excel nebo Word, který používá některý z následujících funkcí, je třeba upravit váš kód, pokud ke změně cílové rozhraní .NET Framework 4 nebo .NET Framework 4,5:

  • Metody GetVstoObject a HasVstoObject

  • Generované třídy v projekty na úrovni dokumentu

  • Ovládací prvky model Windows Forms v dokumentech

  • Události ovládacího prvku obsahu aplikace Word

  • Objekt OLE a OLEControl tříd

  • Vlastnost Controls.Item(Object)

  • Kolekce, které jsou odvozeny z CollectionBase

Musíte odstranit také Microsoft.Office.Tools.Excel.ExcelLocale1033Attribute a odkazy Microsoft.Office.Tools.Excel.ExcelLocale1033Proxy třídy z projektů aplikace Excel, které jsou pro rekompilované .NET Framework 4 nebo .NET Framework 4,5. Visual Studio nedojde k odebrání tohoto atributu nebo referenční třídy za vás.

Odebrání atributu ExcelLocale1033 z projektů aplikace Excel

Microsoft.Office.Tools.Excel.ExcelLocale1033Attribute Byla odebrána z části nástroje sady Visual Studio 2010 for Office Runtime, který se používá pro řešení, které se zaměřují .NET Framework 4 nebo .NET Framework 4,5.Common language runtime (CLR) v .NET Framework 4 a .NET Framework 4,5 vždy průchodů locale ID 1033 objektový model aplikace Excel, a již tento atribut lze použít k zakázání tohoto chování.Další informace naleznete v tématu Globalizace a lokalizace řešení pro Excel.

Chcete-li odebrat ExcelLocale1033Attribute

  1. V aplikaci project otevřít v aplikaci Visual Studio otevřete Průzkumníku.

  2. Ve skupinovém rámečku Vlastnosti uzel (C#) nebo Můj projekt uzel (Visual Basic), poklepejte na soubor kódu AssemblyInfo otevřít v editoru kódu.

    [!POZNÁMKA]

    Projekty jazyka Visual Basic, musíte klepnutím na Zobrazit všechny soubory tlačítka v Průzkumníku Chcete-li zobrazit kód souboru AssemblyInfo.

  3. Vyhledejte Microsoft.Office.Tools.Excel.ExcelLocale1033Attribute a buď je odebrat ze souboru nebo jej komentář.

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

Odebrání odkazu na třídu ExcelLocal1033Proxy

Projekty, které byly vytvořeny pomocí sady Microsoft Visual Studio 2005 Tools for the Microsoft Office System vytvořit instanci aplikace Excel Application pomocí objektu Microsoft.Office.Tools.Excel.ExcelLocale1033Proxy třídy.Tato třída byla odebrána z části nástroje sady Visual Studio 2010 for Office Runtime, která byla použita pro řešení, které se zaměřují .NET Framework 4 nebo .NET Framework 4,5.Proto musí odebrat nebo řádek kódu, který odkazuje na tuto třídu.

Chcete-li odebrat odkaz na třídu ExcelLocal1033Proxy

  1. Otevřete projekt v sadě Visual Studio a poté otevřete Průzkumníku.

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

  3. V editoru kódu v VSTO generated code region, odebrat nebo následující řádek kódu.

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

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

V projektech cílených na rozhraní.NET Framework 3.5 GetVstoObject nebo HasVstoObject metody jsou k dispozici jako rozšiřující metody na jednu z následujících nativní objekty v projektu: Document, Workbook, Worksheet, nebo ListObject.Při volání těchto metod není nutné předat parametr.Následující příklad kódu demonstruje použití GetVstoObject metoda v doplňku aplikace Word, který je cílen na rozhraní.NET Framework 3.5.

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

V projektech cílených .NET Framework 4 nebo .NET Framework 4,5, je třeba změnit váš kód pro přístup k tyto metody jedním z následujících způsobů:

  • Tyto metody lze stále přístup jako rozšiřující metody na Document, Workbook, Worksheet, nebo ListObject objekty.Však musí nyní předáte objekt vrácený Globals.Factory vlastností těchto metod.

    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);
    
  • Můžete také získat přístup k tyto metody na objekt, který je vrácen Globals.Factory vlastnost.Přistupujete-li tyto metody tímto způsobem, musí předat nativní objekt, který chcete rozšířit do metody.

    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);
    

Další informace naleznete v tématu Rozšíření dokumentů aplikace Word a sešitů aplikace Excel v doplňcích na úrovni aplikace za běhu.

Aktualizace kódu, který používá instance tříd generované v projekty na úrovni dokumentu

Projekty na úrovni dokumentu, které jsou cíleny na rozhraní.NET Framework 3.5, odvozovat generované třídy v rámci projektu následující třídy v Visual Studio Tools for Office runtime:

V projektech cílených .NET Framework 4 nebo .NET Framework 4,5, typy v Visual Studio Tools for Office runtime výše uvedené jsou rozhraní namísto třídy.Generované třídy v projektech, které se zaměřují .NET Framework 4 nebo .NET Framework 4,5 jsou odvozeny z následující nové třídy v Visual Studio Tools for Office runtime:

Pokud kód v projektu odkazuje na instanci jednoho generované třídy jako základní třídu, která dědí z, je třeba změnit kód.

V sešitu aplikace Excel projekt, který je cílen na rozhraní.NET Framework 3.5, může například mít pomocnou metodu, která provádí některé práce na výskyty generované Sheetn tříd v projektu.

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.
}

Je-li změnit cílový projekt tak, aby .NET Framework 4 nebo .NET Framework 4,5, je třeba provést jednu z následujících změn kódu:

  • Upravit kód, který volá DoSomethingToSheet metody Base vlastnost WorksheetBase objektů v projektu.Tato vlastnost vrací Worksheet objektu.

    DoSomethingToSheet(Globals.Sheet1.Base)
    
    DoSomethingToSheet(Globals.Sheet1.Base);
    
  • Změnit DoSomethingToSheet parametr metody lze očekávat WorksheetBase namísto objektu.

    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.
    }
    

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

Je nutné přidat using (C#) nebo Imports prohlášení (Visual Basic) Microsoft.Office.Tools.Excel nebo Microsoft.Office.Tools.Word na začátek souboru kódu, který používá obor názvů Controls vlastnost, kterou chcete přidat do dokumentu nebo listu programově prvky model Windows Forms.

V projektech cílených na rozhraní.NET Framework 3.5, metody, které přidat ovládací prvky model Windows Forms (jako je například AddButton metoda) jsou definovány v ControlCollection a ControlCollection třídy.

V projektech cílených .NET Framework 4 nebo .NET Framework 4,5, tyto metody jsou rozšiřujících metod, které jsou k dispozici na Controls vlastnost.Použití těchto metod rozšíření, musíte mít soubor kódu, ve kterém můžete použít metody using nebo Imports prohlášení Microsoft.Office.Tools.Excel nebo Microsoft.Office.Tools.Word oboru názvů.Toto prohlášení je vytvořen automaticky v nových projektech, které se zaměřují .NET Framework 4 nebo .NET Framework 4,5.Však toto prohlášení není automaticky přidáno v projektech cílených na rozhraní.NET Framework 3.5, takže je třeba přidat, je-li změnit cílový projekt.

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 obsahu ovládacího prvku aplikace Word

V projektech cílených na rozhraní.NET Framework 3.5 události ovládacích prvků obsahu v aplikaci Word jsou zpracovávány pomocí obecného EventHandler delegovat.V projektech cílených .NET Framework 4 nebo .NET Framework 4,5, tyto události jsou zpracovávány pomocí jiných delegátů.

V následující tabulce jsou uvedeny události ovládacího prvku obsahu aplikace Word a delegátů, které jsou spojeny s nimi v projektech cílených .NET Framework 4 nebo .NET Framework 4,5.

Událost

Delegát pro použití v .NET Framework 4 a .NET Framework 4,5 projekty

Added

ContentControlAddedEventHandler

ContentUpdating

ContentControlContentUpdatingEventHandler

Deleting

ContentControlDeletingEventHandler

Entering

ContentControlEnteringEventHandler

Exiting

ContentControlExitingEventHandler

StoreUpdating

ContentControlStoreUpdatingEventHandler

Aktualizace kódu, který používá objekt OLE a OLEControl tříd

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

V projektech cílených .NET Framework 4 nebo .NET Framework 4,5, byly nahrazeny tyto třídy ControlSite a ControlSite rozhraní.Je nutné upravit kód, který odkazuje na Microsoft.Office.Tools.Excel.OLEObject a Microsoft.Office.Tools.Word.OLEControl místo toho odkazuje na ControlSite a ControlSite.Tyto ovládací prvky než nové názvy chovat stejným způsobem jako v projektech cílených 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 cílených na rozhraní.NET Framework 3.5, můžete použít Item(Object) vlastnost Microsoft.Office.Tools.Word.Document.Controls nebo Microsoft.Office.Tools.Excel.Worksheet.Controls kolekce, chcete-li zjistit, zda dokument nebo sešit určený ovládací prvek.

V projektech cílených .NET Framework 4 nebo .NET Framework 4,5, Item(Object) vlastnost byla odebrána z těchto kolekcí.Chcete-li zjistit, zda dokument nebo sešit obsahuje zadaný ovládací prvek, použijte Contains(System.Object) metoda Document.Controls nebo Worksheet.Controls kolekce místo.

Další informace týkající Controls kolekce dokumentů a listy, viz Přidání ovládacích prvků do dokumentů Office za běhu.

Aktualizace kódu, který používá kolekcí, které jsou odvozeny z CollectionBase

V projektech cílených na rozhraní.NET Framework 3.5, zadá několik kolekcí Visual Studio Tools for Office runtime jsou odvozeny z CollectionBase třídy, jako například Microsoft.Office.Tools.SmartTagCollection, Microsoft.Office.Tools.Excel.ControlCollection, a Microsoft.Office.Tools.Word.ControlCollection.

V projektech cílených .NET Framework 4 nebo .NET Framework 4,5, tyto typy kolekcí jsou nyní rozhraní, které nejsou odvozeny z CollectionBase.Někteří členové již nejsou k dispozici na tyto typy kolekcí, jako například Capacity, List, a InnerList.

Viz také

Koncepty

Migrace řešení Office na rozhraní .NET Framework 4 nebo .NET Framework 4.5

Ovládací prvky obsahu

Rozšíření dokumentů aplikace Word a sešitů aplikace Excel v doplňcích na úrovni aplikace za běhu

Přidání ovládacích prvků do dokumentů Office za běhu

Globální přístup k objektům v projektech pro systém Office