Udostępnij za pośrednictwem


Aktualizowanie projektów programu Excel i word migrowanych do programu .NET Framework 4.5

Jeśli masz projekt programu Excel lub Word, który korzysta z dowolnej z następujących funkcji, musisz zmodyfikować kod, jeśli struktura docelowa zostanie zmieniona na program .NET Framework 4 lub nowszy:

Usuwanie atrybutu ExcelLocale1033 z projektów programu Excel

Element Microsoft.Office.Tools.Excel.ExcelLocale1033Attribute został usunięty z części środowiska uruchomieniowego programu Visual Studio 2010 Tools for Office, który jest używany w przypadku rozwiązań przeznaczonych dla programu .NET Framework 4 lub nowszego. Środowisko uruchomieniowe języka wspólnego (CLR) w programie .NET Framework 4 i nowszym zawsze przekazuje ustawienia regionalne o identyfikatorze 1033 do modelu obiektów programu Excel i nie można już użyć tego atrybutu, aby wyłączyć to zachowanie. Aby uzyskać więcej informacji, zobacz Globalizacja i lokalizacja rozwiązań programu Excel.

Aby usunąć atrybut ExcelLocale1033Attribute

  1. Po otwarciu projektu w programie Visual Studio otwórz Eksplorator rozwiązań.

  2. W węźle Właściwości (dla języka C#) lub w węźle Mój projekt (dla języka Visual Basic) kliknij dwukrotnie plik kodu AssemblyInfo, aby otworzyć go w edytorze kodu.

    Uwaga

    W projektach Visual Basic należy kliknąć przycisk Pokaż wszystkie pliki w Eksplorator rozwiązań, aby wyświetlić plik kodu AssemblyInfo.

  3. Znajdź plik Microsoft.Office.Tools.Excel.ExcelLocale1033Attribute i usuń go z pliku lub oznacz jako komentarz.

    [assembly: ExcelLocale1033Proxy(true)]
    

Usuwanie odwołania do klasy ExcelLocal1033Proxy

Projekty utworzone przy użyciu programu Microsoft Visual Studio 2005 Tools for the Microsoft Office System tworzą wystąpienie obiektu programu Excel Application przy użyciu Microsoft.Office.Tools.Excel.ExcelLocale1033Proxy klasy . Ta klasa została usunięta z części środowiska uruchomieniowego programu Visual Studio 2010 Tools for Office używanego w przypadku rozwiązań przeznaczonych dla programu .NET Framework 4 lub nowszego. W związku z tym należy usunąć lub oznaczyć jako komentarz wiersz kodu, który odwołuje się do tej klasy.

Aby usunąć odwołanie do klasy ExcelLocal1033Proxy

  1. Otwórz projekt w programie Visual Studio, a następnie otwórz Eksplorator rozwiązań.

  2. W Eksplorator rozwiązań otwórz menu skrótów dla pliku ThisAddin.cs (dla języka C#) lub ThisAddin.vb (dla języka Visual Basic), a następnie wybierz pozycję Wyświetl kod.

  3. W Edytorze VSTO generated code kodu w regionie usuń lub oznacz jako komentarz następujący wiersz kodu.

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

Aktualizowanie kodu używającego metod GetVstoObject i HasVstoObject

W projektach przeznaczonych dla programu .NET Framework 3.5 GetVstoObject metody lub HasVstoObject są dostępne jako metody rozszerzenia w jednym z następujących obiektów natywnych w projekcie: Document, , WorkbookWorksheetlub ListObject. Podczas wywoływania tych metod nie trzeba przekazywać parametru. W poniższym przykładzie kodu pokazano, jak używać metody GetVstoObject w dodatku programu Word VSTO przeznaczonym dla programu .NET Framework 3.5.

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

W projektach przeznaczonych dla programu .NET Framework 4 lub nowszego należy zmodyfikować kod, aby uzyskać dostęp do tych metod w jeden z następujących sposobów:

  • Nadal można uzyskać dostęp do tych metod jako metod rozszerzeń w Documentobiektach , Workbook, Worksheetlub ListObject . Jednak należy teraz przekazać obiekt zwrócony przez Globals.Factory właściwość do tych metod.

    Microsoft.Office.Tools.Word.Document vstoDocument =
        Globals.ThisAddIn.Application.ActiveDocument.GetVstoObject(Globals.Factory);
    
  • Alternatywnie można uzyskać dostęp do tych metod w obiekcie zwracanym przez Globals.Factory właściwość . Gdy uzyskujesz dostęp do tych metod w ten sposób, musisz przekazać obiekt macierzysty, który chcesz rozszerzyć na metodę.

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

    Aby uzyskać więcej informacji, zobacz Rozszerzanie dokumentów programu Word i skoroszytów programu Excel w dodatku VSTO w czasie wykonywania.

Aktualizowanie kodu, który używa wystąpień wygenerowanych klas w projektach na poziomie dokumentu

W projektach na poziomie dokumentu przeznaczonych dla programu .NET Framework 3.5 wygenerowane klasy w projektach pochodzą z następujących klas w środowisku uruchomieniowym Visual Studio Tools dla pakietu Office:

  • ThisDocument: Document

  • ThisWorkbook: Workbook

  • Sheetn: Worksheet

  • Chartn: ChartSheet

    W projektach przeznaczonych dla programu .NET Framework 4 lub nowszego typy w środowisku uruchomieniowym Visual Studio Tools dla pakietu Office wymienionym powyżej są interfejsami, a nie klasami. Wygenerowane klasy w projektach przeznaczonych dla programu .NET Framework 4 lub nowszego pochodzą z następujących nowych klas w środowisku uruchomieniowym Visual Studio Tools dla pakietu Office:

  • ThisDocument: DocumentBase

  • ThisWorkbook: WorkbookBase

  • Sheetn: WorksheetBase

  • Chartn: ChartSheetBase

    Jeśli kod w projekcie odwołuje się do wystąpienia jednej z wygenerowanych klas jako klasy bazowej, z której pochodzi, należy zmodyfikować kod.

    Na przykład w projekcie skoroszytu programu Excel przeznaczonym dla programu .NET Framework 3.5 może istnieć metoda pomocnika wykonująca pewną pracę na wystąpieniach wygenerowanych Sheetn klas w projekcie.

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

W przypadku ponownego utworzenia projektu w programie .NET Framework 4 lub nowszym należy wprowadzić jedną z następujących zmian w kodzie:

  • Zmodyfikuj dowolny kod, który wywołuje DoSomethingToSheet metodę , aby przekazać Base właściwość WorksheetBase obiektu w projekcie. Ta właściwość zwraca Worksheet obiekt.

    DoSomethingToSheet(Globals.Sheet1.Base);
    
  • Zmodyfikuj DoSomethingToSheet parametr metody, aby oczekiwać WorksheetBase obiektu.

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

Aktualizowanie kodu korzystającego z kontrolek formularzy systemu Windows w dokumentach

Należy dodać instrukcję using (C#) lub Import (Visual Basic) dla Microsoft.Office.Tools.Excel przestrzeni nazw lub Microsoft.Office.Tools.Word na początku dowolnego pliku kodu, który używa właściwości Controls, aby programowo dodać kontrolki Formularze systemu Windows do dokumentu lub arkusza.

W projektach przeznaczonych dla programu .NET Framework 3.5 metody, które dodają kontrolki Windows Forms (takie jak AddButton metoda), są definiowane w ControlCollection klasach i ControlCollection .

W projektach przeznaczonych dla programu .NET Framework 4 lub nowszego te metody są metodami rozszerzenia dostępnymi we właściwości Controls. Aby użyć tych metod rozszerzeń, plik kodu, w którym są używane metody, musi mieć instrukcję using lub Import dla Microsoft.Office.Tools.Excel przestrzeni nazw lub Microsoft.Office.Tools.Word . Ta instrukcja jest generowana automatycznie w nowych projektach przeznaczonych dla programu .NET Framework 4 lub nowszego. Jednak ta instrukcja nie jest dodawana automatycznie w projektach przeznaczonych dla programu .NET Framework 3.5, dlatego należy dodać ją podczas ponownego tworzenia projektu.

Aby uzyskać więcej informacji, zobacz Dodawanie kontrolek do dokumentów pakietu Office w czasie wykonywania.

Aktualizowanie kodu obsługującego zdarzenia kontroli zawartości programu Word

W projektach przeznaczonych dla programu .NET Framework 3.5 zdarzenia kontrolek zawartości programu Word są obsługiwane przez delegata ogólnego EventHandler<TEventArgs> . W projektach przeznaczonych dla programu .NET Framework 4 lub nowszego te zdarzenia są obsługiwane przez innych delegatów.

W poniższej tabeli wymieniono zdarzenia sterowania zawartością programu Word i delegaty skojarzone z nimi w projektach przeznaczonych dla programu .NET Framework 4 lub nowszego.

Wydarzenie Delegowanie do użycia w projektach .NET Framework 4 i nowszych
Added ContentControlAddedEventHandler
ContentUpdating ContentControlContentUpdatingEventHandler
Deleting ContentControlDeletingEventHandler
Entering ContentControlEnteringEventHandler
Exiting ContentControlExitingEventHandler
StoreUpdating ContentControlStoreUpdatingEventHandler

Aktualizowanie kodu używającego klas OLEObject i OLEControl

W projektach przeznaczonych dla programu .NET Framework 3.5 można dodawać kontrolki niestandardowe (takie jak kontrolki użytkownika formularzy systemu Windows) do dokumentu lub arkusza przy użyciu Microsoft.Office.Tools.Excel.OLEObject klas i Microsoft.Office.Tools.Word.OLEControl .

W projektach przeznaczonych dla programu .NET Framework 4 lub nowszego te klasy zostały zastąpione przez ControlSite interfejsy i ControlSite . Należy zmodyfikować kod odwołujący się do Microsoft.Office.Tools.Excel.OLEObject i Microsoft.Office.Tools.Word.OLEControl , aby zamiast tego odwoływać się do ControlSite i ControlSite. Poza nowymi nazwami te kontrolki zachowują się tak samo jak w projektach przeznaczonych dla programu .NET Framework 3.5.

Aby uzyskać więcej informacji, zobacz Dodawanie kontrolek do dokumentów pakietu Office w czasie wykonywania.

Aktualizowanie kodu używającego właściwości Controls.Item(Object)

W projektach przeznaczonych dla programu .NET Framework 3.5 można użyć właściwości Item(Object) microsoft.Office.Tools.Word.Document.Controls lub kolekcji, aby określić, czy dokument lub Microsoft.Office.Tools.Excel.Worksheet.Controls arkusz ma określoną kontrolkę.

W projektach przeznaczonych dla programu .NET Framework 4 lub nowszego właściwość Item(Object) została usunięta z tych kolekcji. Aby określić, czy dokument lub arkusz zawiera określoną kontrolkę, należy zamiast tego użyć metody Controls Contains(System.Object) kolekcji lub Controls .

Aby uzyskać więcej informacji na temat kolekcji kontrolek dokumentów i arkuszy, zobacz Dodawanie kontrolek do dokumentów pakietu Office w czasie wykonywania.

Aktualizowanie kodu korzystającego z kolekcji pochodzących z kolekcji CollectionBase

W projektach przeznaczonych dla programu .NET Framework 3.5 kilka typów kolekcji w środowisku uruchomieniowym Visual Studio Tools dla pakietu Office pochodzi z CollectionBase klasy, takiej jak Microsoft.Office.Tools.SmartTagCollection, Microsoft.Office.Tools.Excel.ControlCollectioni Microsoft.Office.Tools.Word.ControlCollection.

W projektach przeznaczonych dla programu .NET Framework 4 lub nowszego te typy kolekcji są teraz interfejsami, które nie pochodzą z programu CollectionBase. Niektóre elementy członkowskie nie są już dostępne dla tych typów kolekcji, takich jak Capacity, Listi InnerList.