Articolo originale pubblicato venerdì 9 settembre 2011

Presentato dall'esperto di compatibilità Curtis Sawin

Una delle sfide nella migrazione a Office 2010 consiste nel valutare l'impatto delle modifiche apportate al modello a oggetti nelle applicazioni di Office. I professionisti IT e gli sviluppatori temono che le macro create con una versione precedente di Excel, ad esempio, non funzionino in Excel 2010 a causa delle consistenti modifiche al modello a oggetti. Le macro non funzionanti sembrano quasi inevitabili quando si osserva l'elenco completo delle differenze nei modelli a oggetti tra la versione più recente delle applicazioni di Office 2010 e le controparti di Office 2007, 2003, XP e 2000 su MSDN (vedere i collegamenti riportati alla fine di questo articolo). La maggior parte delle modifiche, tuttavia, non determina alcun impatto e non incide sulle macro. Che cosa significa "la maggior parte"? Ecco un riepilogo:

  • I modelli a oggetti di Excel 2010, Word 2010, PowerPoint 2010, Outlook 2010 e Access 2010 includono nell'insieme oltre 22.000 elementi (proprietà, metodi e costanti)
  • Sono state introdotte 2.134 modifiche nei modelli a oggetti
  • 49 modifiche producono potenzialmente un impatto

49 modifiche con un potenziale impatto, distribuite su 5 applicazioni in 4 versioni precedenti. Tutto qui. Ecco un grafico riepilogativo dei risultati:

In questo articolo spieghiamo cosa intendiamo per modifiche prive di impatto e con impatto potenziale. RISORSA SUPPLEMENTARE: per riferimento futuro, abbiamo creato una tabella in cui sono elencate tutte le modifiche con impatto potenziale. La tabella è allegata anche in formato PDF alla fine di questo post.

Modifiche prive di impatto e con impatto potenziale

Nella documentazione di MSDN sono indicate tutte le modifiche al modello a oggetti per le singole applicazioni di Office 2010. Le modifiche sono organizzate in modo tale che per ogni versione precedente di Office siano elencati tutti i metodi o le proprietà che sono state modificate, rimosse o deprecate.

Ad esempio, nel modello a oggetti di Excel 2010 sono presenti circa 900 elementi diversi rispetto alle versioni precedenti. A prima vista, può sembrare un numero consistente e spaventoso. Nell'articolo di MSDN relativo alle modifiche del modello a oggetti di Excel 2010 rispetto alle versioni precedenti sono elencati tutti gli elementi che sono cambiati. L'articolo stampato contiene circa 90 pagine.

Elementi deprecati: nessun impatto

La maggior parte di queste modifiche corrisponde a elementi deprecati (indicati anche come nascosti). Che cos'è un "elemento deprecato" e in che modo inciderà sulle macro? Se un elemento è indicato come deprecato, non sarà disponibile nelle versioni future Office ed è necessario prevedere un aggiornamento del codice in futuro. Comunque, gli elementi deprecati continueranno a funzionare. Quindi, se avete un codice macro creato per una versione precedente di Office che contiene metodi, proprietà o costanti deprecate, non dovrete fare nulla per far funzionare quegli elementi in Office 2010. Nulla. Dei quasi 900 elementi modificati (882 per l'esattezza), 794 sono deprecati. Questo significa che circa 800 delle 900 modifiche nel modello a oggetti di Excel non avranno alcun impatto se tali elementi sono presenti nelle macro.

La questione degli elementi deprecati può quindi essere rimandata, ma non ignorata del tutto. Il codice che contiene tali elementi deve essere rivisto e aggiornato per fare in modo che quello che oggi è un codice deprecato non diventi un codice errato in futuro.

Elementi rimossi: impatto

Gli elementi "rimossi" rappresentano il punto più importante. Un elemento indicato come rimosso non è più presente nel modello a oggetti di Office 2010. Una macro che contiene elementi che sono stati rimossi in Office 2010 non funzionerà. Per Excel 2010, sono stati rimossi 9 elementi del modello a oggetti rispetto alle versioni precedenti. Questi elementi richiedono attenzione. Devono essere sostituiti.

Elementi modificati: quasi nessun impatto

Per elementi "modificati" si intendono i metodi e le proprietà che sono stati appunto modificati da una versione precedente. È possibile ad esempio che un metodo modificato restituisca un tipo di dati diverso oppure che una proprietà in precedenza "di sola lettura" sia diventata di "lettura/scrittura". Con una piccola analisi, abbiamo riscontrato che la maggior parte delle modifiche sono riferite all'accettazione di parametri aggiuntivi facoltativi da parte di un metodo o di una proprietà. Ad esempio, il metodo ListRows.Add fornisce un parametro facoltativo in Excel 2003, mentre in Excel 2010 ne fornisce due. L'aggiunta di un parametro facoltativo non incide in alcun modo sul suo utilizzo. Se questo metodo era utilizzato in Excel 2003 e forniva solo un parametro, lo stesso codice continuerà a funzionare in Excel 2010 senza modifiche.

In Excel 2010 sono stati modificati 97 elementi. Nessuno di questi comporta un potenziale impatto. Tutte le modifiche agli elementi non influiscono sul codice esistente che contiene gli elementi "modificati".

Quindi, su 882 metodi e proprietà diversi rispetto alle 4 versioni precedenti di Excel, solo 9 avranno un impatto.

Non tutti gli elementi modificati sono privi di impatto. In PowerPoint, ad esempio, il metodo Presentation.SaveAs utilizza un valore predefinito diverso per il parametro opzionale FileFormat. Il valore predefinito è cambiato da "1" (ppSaveAsPresentation) in PowerPoint 2003 a "11" (ppSaveAsDefault) in PowerPoint 2010. Quindi, se si utilizza questo metodo e non si fornisce esplicitamente un valore per il parametro FileFormat, è possibile che si ottengano risultati diversi quando si esegue una macro creata in PowerPoint 2003 anziché in PowerPoint 2010. Questa modifica può quindi avere un impatto a seconda del modo in cui si utilizza questo metodo.

Le modifiche al modello a oggetti non vengono rilevate automaticamente da OCCI?

È possibile utilizzare strumenti come Office Code Compatibility Inspector (OCCI) per analizzare le macro e stabilire se contengono codice che è stato modificato rispetto alle versioni precedenti. OCCI produrrà un report in cui è indicato il numero di elementi che sono stati modificati, deprecati o rimossi. Indicherà inoltre se sono utilizzati riferimenti esterni (particolarmente importante se la migrazione a Office 2010 avviene nel contesto di un aggiornamento del sistema operativo) e se si effettuano dichiarazioni non contrassegnate esplicitamente per il funzionamento in un ambiente Office a 64 bit. Di seguito è riportata una cattura di schermata dei risultati forniti da OCCI su una cartella di lavoro di Excel con una macro.

Tenete presente che OCCI utilizza il termine "redesigned" che corrisponde a "rimosso".


Dato che OCCI rileva tutte le modifiche, può essere necessario ordinare i risultati per determinare quali siano le informazioni più rilevanti dal punto di vista pratico. In sostanza, OCCI indica solo che "sono state apportate modifiche" senza specificare in dettaglio quali aspetti devono essere corretti immediatamente e quali in un secondo momento. La tabella seguente intende colmare questa lacuna. Vi sono elencate tutte le modifiche che possono avere un impatto e gli aspetti da valutare immediatamente. A seconda della modalità di utilizzo, è possibile che il codice che contiene questi elementi non richieda alcuna modifica. Potete quindi considerarla come una guida "rapida" per le macro, ma non fate eccessivo affidamento su alcuno strumento, neanche sulla tabella seguente. A rischio di sembrare ridondante, l'unico modo sicuro per stabilire se le macro funzionano consiste nell'eseguirle per verificane il funzionamento. 

Riepilogo

Nella tabella che segue sono elencate tutte le modifiche con impatto potenziale, compresi gli elementi rimossi e tutti gli elementi modificati che possono avere un impatto. Può essere utilizzata per identificare rapidamente il codice in uso. È possibile utilizzare altri strumenti come OCCI per rilevare tutte le modifiche, ma questa tabella fornisce informazioni più pratiche e fruibili, eliminando le modifiche al modello a oggetti che non incidono in alcun modo nella migrazione delle macro a Office 2010.

Una delle difficoltà che emergono quando ci si affida agli strumenti è data dal fatto che in genere forniscono dati che consentono di rispondere a domande di natura tecnica, ad esempio "Cosa è cambiato?", ma non a domande di business, ad esempio "Quale impatto avrà sulla mia soluzione?". Gli strumenti contribuiscono sicuramente ad automatizzare e accelerare le attività di risoluzione dei problemi, ma un eccessivo affidamento su di essi può determinare l'utilizzo dei dati che forniscono per rispondere alle domande sbagliate. Come sempre, il metodo migliore per verificare il funzionamento della soluzione quando si esegue l'aggiornamento a Office 2010 consiste nell'eseguire test a livello di utente finale che includono l'utilizzo pratico della soluzione stessa, possibilmente in un ambiente di testing.

 

La tabella riportata sopra è disponibile per il download in formato PDF facendo clic sul collegamento corrispondente alla fine di questo post.

Per ulteriori informazioni 

Tramite i collegamenti seguenti è possibile visualizzare le differenze nei vari modelli a oggetti.

 

Questo è un post di blog localizzato. L'articolo originale è disponibile in Understanding potentially impactful changes in the Office 2010 object model