Condividi tramite


Aggiornamento da Visual Studio Tools per Office, versione 2003

Aggiornamento: novembre 2007

Dopo aver eseguito l'aggiornamento da Visual Studio Tools per Office, versione 2003 a Microsoft Visual Studio 2005 Tools per Microsoft Office System (Visual Studio Tools per Office), è necessario eseguire manualmente alcune operazioni di aggiornamento relative ai progetti a livello di documento.

Nel nuovo sistema di progetto i modelli del codice di progetto sono cambiati in modo significativo. Il progetto aggiornato si basa sulla nuova struttura di progetto, tuttavia il codice rimane nel file di codice originale basato sul modello del codice di progetto della versione precedente. Per consentire l'esecuzione della soluzione subito dopo l'aggiornamento, la nuova classe di progetto crea un'istanza della vecchia classe importata, ovvero della classe originale che per impostazione predefinita era denominata OfficeCodeBehind. Per completare l'aggiornamento, è quindi necessario spostare il codice dalla vecchia classe OfficeCodeBehind alla nuova classe di documento, cartella di lavoro o foglio seguendo la procedura descritta in questo argomento.

Nuovo sistema di progetto e nuova struttura

Il sistema di progetto in Visual Studio Tools per Office, versione 2003 era caratterizzato da un unico file di classe principale per il codice. Il nuovo sistema di progetto presenta una struttura contenitore in Esplora soluzioni che rappresenta il documento o la cartella di lavoro. I file di classe per il codice si trovano nella struttura contenitore. In questi file di classe sono nascosti file contenenti il codice generato da Visual Studio Tools per Office. È consigliabile non modificare il codice nei file nascosti, in quanto possono essere rigenerati durante lo sviluppo con conseguente perdita delle modifiche apportate.

Modelli di progetto e cartelle di lavoro di Excel

I modelli di progetto e le cartelle di lavoro di Excel contengono ora un file di classe distinto per ciascun foglio di lavoro e un file di classe per l'intera cartella di lavoro. Il codice specifico di un foglio di lavoro, ad esempio il codice utilizzato in risposta a un controllo presente in un foglio di lavoro deve essere inserito nella classe del foglio. Per impostazione predefinita, alle classi relative ai nuovi documenti viene assegnato il nome Sheet1.vb, Sheet1.cs, Sheet2.vb o Sheet2.cs e così via. Il codice che interessa l'intera cartella di lavoro, ad esempio l'evento Open della cartella di lavoro, l'evento BeforeClose e il codice del riquadro delle azioni, deve essere inserito nella classe della cartella di lavoro. Per impostazione predefinita, a questa classe viene assegnato il nome ThisWorkbook.vb o ThisWorkbook.cs.

Modelli di progetto e documenti di Word

I modelli di progetto e i documenti di Word sono caratterizzati da un unico file di codice che contiene tutto il codice relativo al documento. Per impostazione predefinita, a questa classe viene assegnato il nome ThisDocument.vb o ThisDocument.cs.

Per ulteriori informazioni, vedere Modelli di progetto di Office.

Processo di aggiornamento

Quando si aggiorna il progetto, vengono effettuate le attività seguenti:

  • Il progetto viene aggiornato sulla base del nuovo formato di file e della nuova struttura del progetto.

  • Il documento esistente viene copiato nella nuova cartella del progetto.

  • Le proprietà del documento personalizzate _AssemblyName0 e _AssemblyLocation0 vengono rimosse per impedire l'esecuzione di estensioni di codice gestito esistenti. Queste proprietà vengono aggiunte di nuovo durante la compilazione del progetto.

  • Il file di codice principale originale viene aggiunto ma incorpora dei commenti che illustrano le modifiche; il nome del file viene inoltre modificato da <DocumentName> in <DocumentName>(old).

  • Tutti i file del progetto originale vengono aggiunti al nuovo progetto.

  • Tutti i riferimenti esistenti vengono aggiunti al nuovo progetto.

Nessuna parte del codice esistente viene migrata nelle nuove classi. Il metodo _Startup della vecchia classe principale viene invece chiamato dal metodo Startup della nuova classe principale. In questo modo viene creata un'istanza della vecchia classe per consentire l'esecuzione della soluzione con modalità simili a quelle della versione precedente.

Il nome predefinito della classe in <DocumentName>(old) è OfficeCodeBehind. In un progetto Word aggiornato il nome predefinito della classe principale è ThisDocument. In un progetto Excel aggiornato i nomi predefiniti delle classi principali sono ThisWorkbook per la classe che include codice eseguito a livello di cartella di lavoro e Sheet1, Sheet2 e via di seguito per codice eseguito a livello di foglio di lavoro.

Per completare l'aggiornamento, è necessario:

  • Spostare il codice manualmente dalla vecchia classe (il cui nome predefinito era OfficeCodeBehind) alle nuove classi di documento, di cartella di lavoro e di foglio di lavoro, quindi eliminare il vecchio file di codice. Se tuttavia si desidera mantenere il codice esistente senza apportare modifiche, è possibile lasciare il vecchio file di codice ed eseguirlo chiamandolo dalle nuove classi. L'eventuale nuovo codice aggiunto tramite gli strumenti verrà inserito nelle nuove classi.

  • Aggiornare il codice come descritto di seguito.

  • Sostituire tutti i controlli ActiveX con i controlli gestiti.

Facoltativamente, è anche possibile:

  • Effettuare il refactoring del codice C#.

Spostamento di codice dalla vecchia classe principale alla nuova classe

È consigliabile spostare il codice dalla vecchia classe nelle nuove classi in modo da sfruttare i vantaggi offerti dagli strumenti inclusi in Visual Studio. Le nuove classi verranno utilizzate automaticamente quando si genera il codice con tali strumenti. Se ad esempio si fa doppio clic su un pulsante aggiunto al documento per accedere al codice, il gestore eventi predefinito verrà aggiunto alla nuova classe.

Se si esegue l'aggiornamento di una soluzione Excel, è importante individuare correttamente la classe che deve contenere ciascun metodo su cui ci si sposta. Se il metodo si riferisce in genere alla cartella di lavoro e/o a tutti i fogli di lavoro, il codice deve essere inserito nella classe ThisWorkbook. Se il codice riguarda un singolo foglio, ad esempio il codice relativo a un controllo in un foglio, tale codice deve essere inserito nella classe dello specifico foglio.

Per iniziare subito, il codice generato nella nuova classe ThisDocument o ThisWorkbook contiene dei metodi segnaposto con commenti. È possibile utilizzare questi metodi in uno dei seguenti modi:

  • Estrarre tutto il codice dalla vecchia classe e inserirlo nelle nuove classi che vengono fornite insieme alla soluzione aggiornata.

  • Scrivere codice nei nuovi metodi per chiamare quelli vecchi inclusi nella vecchia classe. In questo caso sarà necessario modificare i metodi della vecchia classe in modo che non siano più privati.

Esempi

Di seguito sono riportati esempi di metodi segnaposto che consentono di creare un'istanza della vecchia classe e di chiamarne i metodi:

Private Sub ThisDocument_Startup(ByVal sender As Object, ByVal e As System.EventArgs) _
    Handles Me.Startup

    OldCode = New OfficeCodeBehind()
    OldCode._Startup(Me.ThisApplication, Me)
End Sub

''Private Sub ThisDocument_Open() Handles MyBase.Open
''    OldCode.ThisDocument_Open()
''End Sub
''
''Private Sub ThisDocument_Close() Handles MyBase.CloseEvent
''    OldCode.ThisDocument_Close()
''End Sub
private void ThisDocument_Startup(object sender, System.EventArgs e)
{
    OldCode = new OfficeCodeBehind();
    OldCode._Startup(this.Application, this);
}

//private void ThisDocument_Open()
//{
//    OldCode.ThisDocument_Open()
//}
//
//private void ThisDocument_Close(ref bool Cancel)
//{
//    OldCode.ThisDocument_Close(ref Cancel)
//}

Dopo volta completato lo spostamento del codice nelle nuove classi, eliminare quella vecchia.

Aggiornamento del codice

Potrebbe essere necessario apportare alcune modifiche al codice esistente se esso fa riferimento a un oggetto Application, chiama alcuni eventi o metodi oppure si basa sull'evento Open.

Qualifica dell'applicazione

In Visual Studio Tools per Office, versione 2003 l'utilizzo non qualificato di Application faceva riferimento al tipo System.Windows.Forms.Application. In Visual Studio Tools per Office fa riferimento all'oggetto Application di Word o di Excel. Per ottenere gli stessi risultati, è quindi necessario aggiornare qualsiasi riferimento non completo a Application con lo spazio dei nomi completo System.Windows.Forms.Application. Se ad esempio si utilizza codice quale Application.Run(New Form1) per aprire un form, sarà necessario riscriverlo come System.Windows.Forms.Application.Run(New Form1).

Ridenominazione di eventi e metodi

In Word ed Excel alcuni eventi vengono esposti con gli stessi nomi di alcuni metodi del modello a oggetti. I documenti di Word dispongono, ad esempio, di un evento Close e di un metodo Close. Il codice di soluzione di Visual Studio Tools per Office richiede un nome diverso per uno dei membri. È pertanto necessario sostituire i riferimenti esistenti ai membri seguenti con i nuovi nomi.

Word.Document

  • Invece dell'evento Close, utilizzare CloseEvent.

  • Invece dell'evento Sync, utilizzare SyncEvent.

Excel.Worksheet

Excel.Workbook

Excel.Chart

Gestione dell'evento Open

I progetti aggiornati non generano l'evento Open per le cartelle di lavoro di Excel o l'evento Open per i documenti di Word. Se il codice si basa sull'evento Open, è necessario spostare il codice sul gestore eventi ThisWorkbook_Open() nella nuova classe ThisWorkbook per le cartelle di lavoro di Excel o sul gestore eventi ThisDocument_Open() nella nuova classe ThisDocument per i documenti di Word. In alternativa, è possibile chiamare il gestore eventi Open dal metodo _Startup della classe OfficeCodeBehind originale.

Sostituzione di controlli ActiveX con controlli gestiti

Se nel documento o nella cartella di lavoro sono stati utilizzati controlli ActiveX, è necessario eliminarli e sostituirli con controlli gestiti della Casella degli strumenti di Visual Studio. I controlli ActiveX presentano delle limitazioni nei nuovi progetti Visual Studio Tools per Office. Non è ad esempio consentita l'associazione dei dati ai controlli ActiveX ed è necessario utilizzare uno speciale assembly di interoperabilità per creare codice specifico. Per questo motivo, l'utilizzo dei controlli ActiveX non è supportato nei nuovi progetti Visual Studio Tools per Office.

Refactoring del codice (solo C# )

In Visual Studio sono disponibili degli strumenti che consentono di organizzare e disporre il codice C# creato in base a un processo noto come refactoring. Quando il file di codice viene aperto nell'editor di codice in Visual Studio viene aggiunto un menu Effettua refactoring contenente questi strumenti. Per ulteriori informazioni, vedere Refactoring.

Vedere anche

Attività

Procedura: aggiornare soluzioni da Visual Studio Tools per Office

Concetti

Cenni preliminari sugli assembly nelle soluzioni Office

Aggiornamento e migrazione di soluzioni Office