Condividi tramite


Aggiornamento di progetti di Excel e Word di cui si esegue la migrazione a .NET Framework 4

Se si dispone di un progetto di Excel o Word in cui viene utilizzata una delle funzionalità seguenti, è necessario modificare il codice se il framework di destinazione viene impostato su .NET Framework 4:

  • Smart tag

  • Metodi GetVstoObject e HasVstoObject

  • Classi generate nei progetti a livello di documento

  • Controlli Windows Form nei documenti

  • Eventi di controllo del contenuto di Word

  • Classi OLEObject e OLEControl

  • Proprietà Controls.Item(Object)

  • Insiemi che derivano da CollectionBase

Inoltre, è necessario rimuovere Microsoft.Office.Tools.Excel.ExcelLocale1033Attribute dai progetti di Excel reindirizzati a .NET Framework 4. In Visual Studio questo attributo non viene automaticamente rimosso.

Rimozione dell'attributo ExcelLocale1033 dai progetti di Excel

Microsoft.Office.Tools.Excel.ExcelLocale1033Attribute è stato rimosso dalla porzione del Visual Studio 2010 Tools per Office Runtime utilizzata per soluzioni destinate a .NET Framework 4. Il Common Language Runtime (CLR) in .NET Framework 4 passa sempre l'ID delle impostazioni locali 1033 al modello a oggetti di Excel e non è più possibile utilizzarlo per disabilitare questo comportamento. Per ulteriori informazioni, vedere Formattazione di dati in Excel con varie impostazioni internazionali.

Per rimuovere ExcelLocale1033Attribute

  1. Con il progetto aperto in Visual Studio, aprire Esplora soluzioni.

  2. Nel nodo Proprietà (per C#) o Progetto (per Visual Basic), fare doppio clic sul file di codice AssemblyInfo per aprirlo nell'editor del codice.

    Nota

    Nei progetti Visual Basic, per visualizzare il file di codice AssemblyInfo è necessario fare clic sul pulsante Mostra tutti i file in Esplora soluzioni.

  3. Individuare Microsoft.Office.Tools.Excel.ExcelLocale1033Attribute e rimuoverlo dal file o impostarlo come commento.

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

Aggiornamento del codice che crea gli smart tag

Se si dispone di un progetto di Excel o Word in cui vengono creati smart tag, è necessario apportare le modifiche seguenti al codice se si modifica il framework di destinazione:

  • Modificare il codice mediante cui vengono creati oggetti smart tag e azione.

  • Modificare il codice che definisce una classe smart tag con un riconoscimento personalizzato.

Nota

Gli smart tag sono deprecati in Excel 2010 e Word 2010. Per ulteriori informazioni, vedere Cenni preliminari sugli smart tag.

Per ulteriori informazioni, vedere le istruzioni seguenti.

Creazione di oggetti smart tag e azione

È necessario modificare la modalità con cui si creano gli oggetti smart tag e azione nel codice. Nei progetti destinati a .NET Framework 3.5, i tipi smart tag e azione sono classi per le quali è possibile creare istanze direttamente, mentre nei progetti destinati a .NET Framework 4, questi tipi sono interfacce di cui non è possibile creare istanze direttamente.

Se il framework di destinazione del progetto viene aggiornato a .NET Framework 4, è necessario creare gli oggetti smart tag e azione tramite metodi forniti dalla proprietà Globals.Factory nel progetto. Per ulteriori informazioni, vedere Architettura degli smart tag.

Nella tabella seguente sono elencati i tipi smart tag e azione e il metodo da utilizzare per creare istanze di tali tipi nei progetti destinati a .NET Framework 4.

Tipo smart tag e azione

Metodo factory da utilizzare nei progetti .NET Framework 4.

Microsoft.Office.Tools.Excel.Action

Metodo CreateAction della classe Microsoft.Office.Tools.Excel.Factory.

Microsoft.Office.Tools.Excel.SmartTag

Metodo CreateSmartTag della classe Microsoft.Office.Tools.Excel.Factory.

Microsoft.Office.Tools.Word.Action

Metodo CreateAction della classe Microsoft.Office.Tools.Word.Factory.

Microsoft.Office.Tools.Word.SmartTag

Metodo CreateSmartTag della classe Microsoft.Office.Tools.Word.Factory.

Definizione delle classi smart tag con riconoscimenti personalizzati

Se si definisce una classe smart tag personalizzata con un riconoscimento personalizzato, è necessario modificare il codice. Nei progetti destinati a .NET Framework 3.5, la classe deriva dalla classe Microsoft.Office.Tools.Word.SmartTag o Microsoft.Office.Tools.Excel.SmartTag. Nei progetti destinati a .NET Framework 4, invece, si definisce una classe che implementa Microsoft.Office.Tools.Word.ISmartTagExtension o Microsoft.Office.Tools.Excel.ISmartTagExtension.

Per ulteriori informazioni, vedere Architettura degli smart tag.

Aggiornamento del codice che utilizza i metodi GetVstoObject e HasVstoObject

Nei progetti destinati a .NET Framework 3.5, il metodo GetVstoObject o HasVstoObject è disponibile come metodo di estensione in uno degli oggetti nativi seguenti nel progetto: Microsoft.Office.Interop.Word.Document, Microsoft.Office.Interop.Excel.Workbook, Microsoft.Office.Interop.Excel.Worksheet o Microsoft.Office.Interop.Excel.ListObject. Quando si chiamano questi metodi, non è necessario passare un parametro. Nell'esempio di codice riportato di seguito viene illustrato come utilizzare il metodo GetVstoObject in un componente aggiuntivo di Word destinato a .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();

Nei progetti destinati a .NET Framework 4, è necessario modificare il codice per accedere a questi metodi in uno dei modi seguenti:

  • È ancora possibile accedere a questi metodi come metodi di estensione in oggetti Microsoft.Office.Interop.Word.Document, Microsoft.Office.Interop.Excel.Workbook, Microsoft.Office.Interop.Excel.Worksheet o Microsoft.Office.Interop.Excel.ListObject. È tuttavia necessario passare l'oggetto restituito dalla proprietà Globals.Factory a questi metodi.

    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);
    
  • In alternativa, è possibile accedere a questi metodi nell'oggetto restituito dalla proprietà Globals.Factory. Quando si accede a questi metodi in questo modo, è necessario passare l'oggetto nativo che si desidera estendere al metodo.

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

Per ulteriori informazioni, vedere Estensione in fase di esecuzione di documenti di Word e di cartelle di lavoro di Excel in componenti aggiuntivi a livello di applicazione e Recupero di oggetti estesi da oggetti nativi di Office nelle personalizzazioni a livello di documento.

Aggiornamento del codice che utilizza le istanze delle classi generate nei progetti a livello di documento

Nei progetti a livello di documento destinati a .NET Framework 3.5, le classi generate nei progetti derivano dalle classi seguenti in Runtime di Visual Studio Tools per Office:

Nei progetti destinati a .NET Framework 4, i tipi in Runtime di Visual Studio Tools per Office elencati in precedenza sono interfacce, anziché classi. Le classi generate nei progetti destinati a .NET Framework 4 derivano dalle nuove classi di Runtime di Visual Studio Tools per Office indicate di seguito:

Se il codice nel progetto fa riferimento a un'istanza di una delle classi generate come classe base da cui deriva, è necessario modificare il codice.

Ad esempio, in un progetto cartella di lavoro di Excel destinato a .NET Framework 3.5 potrebbe essere presente un metodo di supporto che esegue alcune operazioni sulle istanze delle classi Sheetn generate nel progetto.

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

Se si modifica la destinazione del progetto a .NET Framework 4, è necessario apportare una delle modifiche seguenti al codice.

  • Modificare il codice che chiama il metodo DoSomethingToSheet per passare la proprietà Base di un oggetto Microsoft.Office.Tools.Excel.WorksheetBase nel progetto. Questa proprietà restituisce un oggetto Microsoft.Office.Tools.Excel.Worksheet.

    DoSomethingToSheet(Globals.Sheet1.Base)
    
    DoSomethingToSheet(Globals.Sheet1.Base);
    
  • Modificare il parametro del metodo DoSomethingToSheet per prevedere invece un oggetto 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.
    }
    

Aggiornamento del codice che utilizza i controlli Windows Form nei documenti

È necessario aggiungere un'istruzione using (C#) o Imports (Visual Basic) per lo spazio dei nomi Microsoft.Office.Tools.Excel o Microsoft.Office.Tools.Word all'inizio di qualsiasi file di codice che utilizza la proprietà Controls per aggiungere controlli Windows Form al documento o al foglio di lavoro a livello di codice.

Nei progetti destinati a .NET Framework 3.5, i metodi che aggiungono controlli Windows Form (ad esempio il metodo AddButton) sono definiti nelle classi Microsoft.Office.Tools.Excel.ControlCollection e Microsoft.Office.Tools.Word.ControlCollection.

Nei progetti destinati a .NET Framework 4, questi sono metodi di estensione e sono disponibili nella proprietà Controls. Per utilizzare questi metodi di estensione, il file di codice in cui vengono utilizzati i metodi deve contenere un'istruzione using o Imports per lo spazio dei nomi Microsoft.Office.Tools.Excel o Microsoft.Office.Tools.Word. Questa istruzione viene generata automaticamente nei nuovi progetti destinati a .NET Framework 4. Tuttavia, questa istruzione non viene aggiunta automaticamente nei progetti destinati a .NET Framework 3.5, pertanto è necessario aggiungerla quando si modifica la destinazione del progetto.

Per ulteriori informazioni, vedere Aggiunta di controlli ai documenti di Office in fase di esecuzione.

Aggiornamento del codice che gestisce gli eventi dei controlli del contenuto di Word

Nei progetti destinati a .NET Framework 3.5, gli eventi dei controlli del contenuto di Word vengono gestiti dal delegato EventHandler<TEventArgs> generico. Nei progetti destinati a .NET Framework 4, questi eventi vengono gestiti da altri delegati.

Nella tabella seguente vengono elencati gli eventi dei controlli del contenuto di Word e i delegati associati nei progetti destinati a .NET Framework 4.

Evento

Delegato da utilizzare nei progetti .NET Framework 4

Added

ContentControlAddedEventHandler

ContentUpdating

ContentControlContentUpdatingEventHandler

Deleting

ContentControlDeletingEventHandler

Entering

ContentControlEnteringEventHandler

Exiting

ContentControlExitingEventHandler

StoreUpdating

ContentControlStoreUpdatingEventHandler

Aggiornamento del codice che utilizza le classi OLEObject e OLEControl

Nei progetti destinati a .NET Framework 3.5, è possibile aggiungere controlli personalizzati (ad esempio controlli utente Windows Form) a un documento o a un foglio di lavoro tramite le classi Microsoft.Office.Tools.Excel.OLEObject e Microsoft.Office.Tools.Word.OLEControl.

Nei progetti destinati a .NET Framework 4 queste classi sono state sostituite dalle interfacce Microsoft.Office.Tools.Excel.ControlSite e Microsoft.Office.Tools.Word.ControlSite. È necessario modificare il codice che fa riferimento a Microsoft.Office.Tools.Excel.OLEObject e Microsoft.Office.Tools.Word.OLEControl per fare invece riferimento a Microsoft.Office.Tools.Excel.ControlSite e Microsoft.Office.Tools.Word.ControlSite. Tranne che per i nuovi nomi, questi controlli si comportano in modo analogo a quanto avviene nei progetti destinati a .NET Framework 3.5.

Per ulteriori informazioni, vedere Aggiunta di controlli ai documenti di Office in fase di esecuzione.

Aggiornamento del codice che utilizza la proprietà Controls.Item(Object)

Nei progetti destinati a .NET Framework 3.5 è possibile utilizzare la proprietà Item(Object) dell'insieme Microsoft.Office.Tools.Word.Document.Controls o Microsoft.Office.Tools.Excel.Worksheet.Controls per determinare se un documento o un foglio di lavoro dispone di un controllo specificato.

Nei progetti destinati a .NET Framework 4 la proprietà Item(Object) è stata rimossa da questi insiemi. Per determinare se un documento o un foglio di lavoro contiene un controllo specificato, utilizzare invece il metodo Contains(System.Object) dell'insieme Document.Controls o Worksheet.Controls.

Per ulteriori informazioni sull'insieme Controls di documenti e fogli di lavoro, vedere Aggiunta di controlli ai documenti di Office in fase di esecuzione.

Aggiornamento del codice che utilizza gli insiemi che derivano da CollectionBase

Nei progetti destinati a .NET Framework 3.5, diversi tipi di insiemi in Runtime di Visual Studio Tools per Office derivano dalla classe CollectionBase, ad esempio Microsoft.Office.Tools.SmartTagCollection, Microsoft.Office.Tools.Excel.ControlCollection e Microsoft.Office.Tools.Word.ControlCollection.

Nei progetti destinati a .NET Framework 4 questi tipi di insiemi sono interfacce che non derivano da CollectionBase. Alcuni membri non sono più disponibili in questi tipi di insiemi, ad esempio Capacity, List e InnerList.

Vedere anche

Concetti

Migrazione di soluzioni Office a .NET Framework 4

Architettura degli smart tag

Controlli del contenuto

Estensione in fase di esecuzione di documenti di Word e di cartelle di lavoro di Excel in componenti aggiuntivi a livello di applicazione

Recupero di oggetti estesi da oggetti nativi di Office nelle personalizzazioni a livello di documento

Aggiunta di controlli ai documenti di Office in fase di esecuzione

Accesso globale a oggetti nei progetti di Office

Cronologia delle modifiche

Data

Cronologia

Motivo

Maggio 2010

Aggiunta sezione sulla rimozione di Microsoft.Office.Tools.Excel.ExcelLocale1033Attribute dai progetti Excel.

Miglioramento delle informazioni.