Condividi tramite


Scrivere codice nelle soluzioni Office

Alcuni aspetti della scrittura del codice nei progetti di Office presentano delle differenze rispetto ad altri tipi di progetti in Visual Studio. Molte di queste differenze riguardano la modalità di esposizione dei modelli a oggetti di Office al codice gestito. Le altre differenze sono correlate alla creazione di progetti di Office.

Si applica a: le informazioni contenute in questo argomento si applicano ai progetti a livello di documento e ai progetti di componente aggiuntivo VSTO. Vedere Funzionalità disponibili per app Office lication e tipo di progetto.

Codice gestito e programmazione di Office

La tecnologia fondamentale che consente di creare una soluzione Microsoft Office integrata è costituita dall'automazione, che fa parte della tecnologia COM (Component Object Model). Grazie all'automazione è possibile usare codice per creare e controllare gli oggetti software esposti da qualsiasi applicazione, DLL o controllo ActiveX in grado di supportare le interfacce programmatiche.

Informazioni sugli assembly di interoperabilità primari

La maggior parte delle funzionalità delle applicazioni di Microsoft Office viene esposta all'automazione. Tuttavia, non è possibile usare direttamente il codice gestito (ad esempio Visual Basic o C#) per automatizzare le applicazioni di Office. Per automatizzare le applicazioni di Office mediante il codice gestito, è necessario usare gli assembly di interoperabilità primari di Office. Gli assembly di interoperabilità primari consentono l'interazione tra il codice gestito e il modello a oggetti COM delle applicazioni di Office.

Ogni applicazione di Microsoft Office dispone di un assembly di interoperabilità primario. Quando si crea un progetto di Office in Visual Studio, al progetto viene automaticamente aggiunto un riferimento all'assembly di interoperabilità primario appropriato. Per automatizzare le funzionalità di altre applicazioni di Office dal progetto, è necessario aggiungere manualmente un riferimento all'assembly di interoperabilità primario appropriato. Per altre informazioni, vedere Procedura: Impostare come destinazione app Office licazioni tramite assembly di interoperabilità primari.

Usare assembly di interoperabilità primari in fase di progettazione e runtime

Per eseguire la maggior parte delle attività di sviluppo, gli assembly di interoperabilità primari di Office devono essere installati e registrati nella Global Assembly Cache del computer di sviluppo. Per altre informazioni, vedere Configurare un computer per sviluppare soluzioni Office.

Le applicazioni personali di Office non sono necessarie nei computer degli utenti finali per eseguire soluzioni Office destinate a .NET Framework 4 o versione successiva. Per altre informazioni, vedere Progettare e creare soluzioni Office.

Usare i tipi negli assembly di interoperabilità primari

Gli assembly di interoperabilità primari di Office contengono una combinazione di tipi che espongono il modello a oggetti delle applicazioni di Office e i tipi aggiuntivi dell'infrastruttura che non possono essere usati direttamente nel codice. Per una panoramica dei tipi negli assembly di interoperabilità primari di Office, vedere Panoramica delle classi e delle interfacce negli assembly di interoperabilità primari di Office.

Poiché i tipi negli assembly di interoperabilità primari di Office corrispondono ai tipi nei modelli a oggetti COM, la modalità di utilizzo di questi tipi spesso è differente dagli altri tipi gestiti. Ad esempio, la modalità di chiamata dei metodi che hanno parametri facoltativi in un assembly di interoperabilità primario di Office varia in base al linguaggio di programmazione che si sta usando nel progetto. Per ulteriori informazioni, vedi gli argomenti seguenti:

Modello di programma dei progetti di Office

Tutti i progetti di Office includono una o più classi generate che forniscono il punto di ingresso per il codice. Queste classi forniscono anche accesso al modello a oggetti dell'applicazione host e accesso a funzionalità quali riquadri azioni e riquadri attività personalizzati.

Informazioni sulle classi generate

In progetti a livello di documento per Excel e Word, la classe generata assomiglia a un oggetto di primo livello nel modello a oggetti dell'applicazione. Ad esempio, la classe generata ThisDocument di un progetto a livello di documento di Word fornisce gli stessi membri della classe Document nel modello a oggetti di Word. Per altre informazioni sulle classi generate nei progetti a livello di documento, vedere Programmare personalizzazioni a livello di documento.

I progetti di componente aggiuntivo VSTO forniscono una classe generata denominata ThisAddIn. Questa classe non assomiglia a una classe del modello a oggetti dell'applicazione host. Questa classe rappresenta invece il componente aggiuntivo VSTO stesso e fornisce membri che è possibile usare per accedere al modello a oggetti dell'applicazione host e accedere ad altre funzionalità disponibili per i componenti aggiuntivi VSTO. Per altre informazioni, vedere Programmare componenti aggiuntivi VSTO.

Tutte le classi generate nei progetti di Office includono gestori eventi Startup e Shutdown . Per iniziare a scrivere codice, in genere viene aggiunto codice a tali gestori eventi. Per inizializzare il componente aggiuntivo VSTO, è possibile aggiungere codice al gestore eventi Startup . Per pulire le risorse usate dal componente aggiuntivo VSTO, è possibile aggiungere codice al gestore eventi Shutdown . Per altre informazioni, vedere Eventi nei progetti di Office.

Accedere alle classi generate in fase di esecuzione

Quando viene caricata una soluzione Office, il Strumenti di Visual Studio per il runtime di Office crea un'istanza di ognuna delle classi generate nel progetto. È possibile accedere a questi oggetti da qualsiasi codice del progetto tramite la classe Globals . Ad esempio, è possibile usare la Globals classe per chiamare il codice nella ThisAddIn classe da un gestore eventi di un pulsante della barra multifunzione in un componente aggiuntivo VSTO.

Per altre informazioni, vedere Accesso globale agli oggetti nei progetti di Office.

Considerazioni relative allo spazio dei nomi nelle soluzioni Office

Non è possibile modificare lo spazio dei nomi predefinito (o spazio dei nomi radice in Visual Basic) di un progetto di Office dopo averlo creato. Lo spazio dei nomi predefinito corrisponderà sempre al nome del progetto specificato durante la creazione del progetto. Se si rinomina il progetto, lo spazio dei nomi predefinito non viene modificato. Per altre informazioni sullo spazio dei nomi predefinito nei progetti, vedere Pagina applicazione, Progettazione progetti (C#) e Pagina applicazione, Progettazione progetti (Visual Basic).For more information about the default namespace in projects, see Application Page, Project Designer (C#) and Application Page, Project Designer (Visual Basic).

Modificare lo spazio dei nomi delle classi di elementi host nei progetti C#

Le classi dell'elemento host (ad esempio, le classi ThisAddIn, ThisWorkbooko ThisDocument ) hanno spazi dei nomi specifici nei progetti di Office di Visual C#. Per impostazione predefinita, lo spazio dei nomi per gli elementi host nel progetto corrisponde al nome del progetto specificato durante la creazione del progetto.

Per modificare lo spazio dei nomi degli elementi host in un progetto di Office di Visual C#, usare la proprietà Spazio dei nomi per elemento host . Per altre informazioni, vedere Proprietà nei progetti di Office.

Linguaggi di programmazione supportati nei progetti di Office

I modelli di progetto di Office in Visual Studio supportano solo i linguaggi di programmazione Visual Basic e Visual C#. Pertanto, questi modelli di progetto sono disponibili solo nei nodi Visual Basic e Visual C# della finestra di dialogo Nuovo progetto in Visual Studio. Per altre informazioni, vedere Procedura: Creare progetti di Office in Visual Studio.

Scelta del linguaggio e programmazione di Office

Microsoft Office e VBA (Visual Basic, Applications Edition) sono stati sviluppati per l'integrazione al fine di ottimizzare il flusso di lavoro di personalizzazione delle applicazioni. Visual Basic ha ereditato alcuni di tali sviluppi. Ad esempio, in Visual Basic vengono supportati i parametri facoltativi e quindi si scrive meno codice quando si chiamano alcuni metodi negli assembly di interoperabilità primari di Microsoft Office rispetto a Visual C#.

Programmare con Visual Basic e Visual C# nelle soluzioni Office

È possibile creare soluzioni Office usando Visual Basic o Visual C#. Poiché i modelli a oggetti di Microsoft Office sono stati progettati per l'utilizzo con Microsoft VBA (Visual Basic, Applications Edition), gli sviluppatori di Visual Basic possono usare agevolmente gli oggetti esposti dalle applicazioni di Microsoft Office. Gli sviluppatori di Visual C# possono usare gran parte delle stesse funzionalità usate dagli sviluppatori di Visual Basic, ma in alcuni casi devono scrivere codice aggiuntivo per usare i modelli a oggetti di Office. Esistono inoltre alcune differenze tra le funzionalità di programmazione di base usate nello sviluppo di applicazioni per Office e il codice gestito scritto in Visual Basic e C#.

Differenze principali tra Visual Basic e Visual C#

Nella tabella seguente sono illustrate le differenze principali tra Visual Basic e Visual C# nello sviluppo di applicazioni per Office.

Funzionalità Descrizione Supporto in Visual Basic Supporto in Visual C#
Parametri facoltativi Molti metodi di Microsoft Office hanno parametri che non sono richiesti quando si chiama il metodo. Se per il parametro non viene passato alcun valore, verrà usato un valore predefinito. Visual Basic supporta i parametri facoltativi. Visual C# supporta i parametri facoltativi nella maggior parte dei casi. Per altre informazioni, vedere Parametri facoltativi nelle soluzioni Office.
Passaggio di parametri per riferimento I parametri facoltativi nella maggior parte degli assembly di interoperabilità primari di Microsoft Office possono essere passati per valore. Tuttavia, in alcuni assembly di interoperabilità primari i parametri facoltativi che accettano i tipi riferimento devono essere passati per riferimento.

Per altre informazioni sui parametri di tipo valore e riferimento, vedere Passare argomenti per valore e per riferimento (Visual Basic) (per Visual Basic) e Pass parameters (Guida per programmatori C#).
Non è richiesta alcuna attività aggiuntiva per il passaggio di parametri in base al riferimento. Il compilatore di Visual Basic passa automaticamente i parametri per riferimento quando necessario. Nella maggior parte dei casi, il compilatore di Visual C# passa automaticamente i parametri per riferimento quando necessario. Per altre informazioni, vedere Parametri facoltativi nelle soluzioni Office.
Proprietà con parametri Alcune proprietà accettano parametri e fungono da funzioni di sola lettura. Visual Basic supporta le proprietà che accettano parametri. Visual C# supporta le proprietà che accettano parametri.
Associazione tardiva L'associazione tardiva comporta la determinazione delle proprietà degli oggetti in fase di esecuzione, anziché eseguire il cast delle variabili al tipo di oggetto in fase di progettazione. Visual Basic esegue l'associazione tardiva quando Option Strict non è attiva. Quando Option Strict è attiva, è necessario convertire in modo esplicito gli oggetti e usare i tipi nello spazio dei nomi System.Reflection per accedere ai membri ad associazione tardiva. Per altre informazioni, vedere Associazione tardiva nelle soluzioni Office. Visual C# esegue l'associazione tardiva nei progetti destinati a .NET Framework 4. Per altre informazioni, vedere Associazione tardiva nelle soluzioni Office.

Differenze principali tra lo sviluppo di Office e il codice gestito

Nella tabella seguente sono illustrate le differenze principali tra lo sviluppo di applicazioni per Office e il codice gestito scritto in Visual Basic e Visual C#.

Funzionalità Descrizione Supporto in Visual Basic e Visual C#
Indici di matrice Il limite di matrice inferiore delle raccolte nelle applicazioni di Microsoft Office inizia con 1. Visual Basic e Visual C# usano matrici in base 0. Per altre informazioni, vedere Matrici (Guida per programmatori C#) e Matrici in Visual Basic. Per accedere al primo elemento di una raccolta del modello a oggetti di un'applicazione di Microsoft Office, usare l'indice 1 anziché 0.