Procedura dettagliata: chiamata di codice in un componente aggiuntivo a livello di applicazione da VBA
In questa procedura dettagliata viene illustrato come esporre un oggetto in un componente aggiuntivo a livello di applicazione alle altre soluzioni Microsoft Office, inclusi i componenti aggiuntivi VBA (Visual Basic, Applications Edition) e COM.
Si applica a: le informazioni fornite in questo argomento sono valide per i progetti a livello di applicazione per Microsoft Office 2010 e Microsoft Office System 2007. Per ulteriori informazioni, vedere Funzionalità disponibili in base ai tipi di progetto e applicazioni di Office.
Sebbene in questa procedura dettagliata si utilizzi in modo specifico Excel, i concetti illustrati sono applicabili a qualsiasi modello di progetto di componente aggiuntivo fornito da Visual Studio.
In questa procedura dettagliata vengono illustrate le seguenti attività:
Definizione di una classe che può essere esposta alle altre soluzioni Office.
Esposizione della classe alle altre soluzioni Office.
Chiamata di un metodo della classe dal codice VBA.
Nota
Nel computer in uso è possibile che vengano visualizzati nomi o percorsi diversi per alcuni elementi dell'interfaccia utente di Visual Studio nelle istruzioni seguenti. La versione di Visual Studio in uso e le impostazioni configurate determinano questi elementi. Per ulteriori informazioni vedere Impostazioni di Visual Studio.
Prerequisiti
Per completare la procedura dettagliata, è necessario disporre dei componenti seguenti:
-
Una versione di Visual Studio 2010 che include gli strumenti per sviluppatori di Microsoft Office. Per ulteriori informazioni, vedere [Configurazione di un computer per sviluppare soluzioni Office](bb398242\(v=vs.100\).md).
- Excel 2007 o Excel 2010.
Per una versione video di questo argomento, vedere Video How to: Calling Code in an Application-Level Add-in from VBA (la pagina potrebbe essere in inglese).
Creazione del progetto per un componente aggiuntivo
Il primo passaggio consiste nella creazione di un progetto per un componente aggiuntivo per Excel.
Per creare un nuovo progetto
Creare un progetto per un componente aggiuntivo per Excel con il nome ExcelImportData, utilizzando il modello di progetto per componente aggiuntivo di Excel. Per ulteriori informazioni, vedere Procedura: creare progetti di Office in Visual Studio.
Tramite Visual Studio verrà aperto il file di codice ThisAddIn.cs o ThisAddIn.vb e il progetto ExcelImportData verrà aggiunto in Esplora soluzioni.
Definizione di una classe che può essere esposta alle altre soluzioni Office
Lo scopo di questa procedura dettagliata è chiamare il metodo ImportData di una classe denominata AddInUtilities nel componente aggiuntivo dal codice VBA. Questo metodo consente di scrivere una stringa nella cella A1 del foglio di lavoro attivo.
Per esporre la classe AddInUtilities alle altre soluzioni Office, è necessario rendere la classe pubblica e visibile a COM. È anche necessario esporre l'interfaccia IDispatch nella classe. Il codice nella procedura descritta di seguito illustra una modalità per soddisfare questi requisiti. Per ulteriori informazioni, vedere Chiamata di codice nei componenti aggiuntivi a livello di applicazione da altre soluzioni Office.
Per definire una classe che può essere esposta alle altre soluzioni Office
Scegliere Aggiungi classe dal menu Progetto.
Nella finestra di dialogo Aggiungi nuovo elemento modificare il nome della nuova classe in AddInUtilities e scegliere Aggiungi.
Il file AddInUtilities.cs o AddInUtilities.vb viene aperto nell'editor di codice.
Aggiungere le seguenti istruzioni all'inizio del file.
Imports System.Data Imports System.Runtime.InteropServices Imports Excel = Microsoft.Office.Interop.Excel
using System.Data; using System.Runtime.InteropServices; using Excel = Microsoft.Office.Interop.Excel;
Sostituire la classe AddInUtilities con il codice seguente.
<ComVisible(True)> _ Public Interface IAddInUtilities Sub ImportData() End Interface <ComVisible(True)> _ <ClassInterface(ClassInterfaceType.None)> _ Public Class AddInUtilities Implements IAddInUtilities ' This method tries to write a string to cell A1 in the active worksheet. Public Sub ImportData() Implements IAddInUtilities.ImportData Dim activeWorksheet As Excel.Worksheet = Globals.ThisAddIn.Application.ActiveSheet If activeWorksheet IsNot Nothing Then Dim range1 As Excel.Range = activeWorksheet.Range("A1") range1.Value2 = "This is my data" End If End Sub End Class
[ComVisible(true)] public interface IAddInUtilities { void ImportData(); } [ComVisible(true)] [ClassInterface(ClassInterfaceType.None)] public class AddInUtilities : IAddInUtilities { // This method tries to write a string to cell A1 in the active worksheet. public void ImportData() { Excel.Worksheet activeWorksheet = Globals.ThisAddIn.Application.ActiveSheet as Excel.Worksheet; if (activeWorksheet != null) { Excel.Range range1 = activeWorksheet.get_Range("A1", System.Type.Missing); range1.Value2 = "This is my data"; } } }
Questo codice rende visibile la classe AddInUtilities a COM e aggiunge il metodo ImportData alla classe. Per esporre l'interfaccia IDispatch, la classe AddInUtilities dispone anche dell'attributo ClassInterfaceAttribute e implementa un'interfaccia che è visibile in COM.
Esposizione della classe alle altre soluzioni Office
Per esporre la classe AddInUtilities alle altre soluzioni Office, eseguire l'override del metodo RequestComAddInAutomationService nella classe ThisAddIn. Nell'override, restituire un'istanza della classe AddInUtilities.
Per esporre la classe AddInUtilities alle altre soluzioni Office
In Esplora soluzioni espandere Excel.
Fare clic con il pulsante destro del mouse su ThisAddIn.cs o su ThisAddIn.vb e scegliere Visualizza codice.
Aggiungere il codice seguente alla classe ThisAddIn.
Private utilities As AddInUtilities Protected Overrides Function RequestComAddInAutomationService() As Object If utilities Is Nothing Then utilities = New AddInUtilities() End If Return utilities End Function
private AddInUtilities utilities; protected override object RequestComAddInAutomationService() { if (utilities == null) utilities = new AddInUtilities(); return utilities; }
Scegliere Compila soluzione dal menu Compila.
Verificare che la soluzione venga compilata senza errori.
Verifica del componente aggiuntivo
È possibile chiamare la classe AddInUtilities da alcuni tipi diversi di soluzioni Office. In questa procedura dettagliata, si utilizzerà il codice VBA in una cartella di lavoro di Excel. Per ulteriori informazioni sugli altri tipi di soluzioni Office utilizzabili, vedere Chiamata di codice nei componenti aggiuntivi a livello di applicazione da altre soluzioni Office.
Per verificare il componente aggiuntivo
Premere F5 per eseguire il progetto.
In Excel, salvare la cartella di lavoro attiva come Cartella di lavoro con attivazione macro di Excel (* .xlsm). Salvarla in un percorso comodo, ad esempio il desktop.
Sulla barra multifunzione, fare clic sulla scheda Sviluppo.
Nota
Se la scheda Sviluppo non è visibile, è necessario prima visualizzarla. Per ulteriori informazioni, vedere Procedura: visualizzare la scheda Sviluppo nella barra multifunzione.
Nel gruppo Codice, fare clic su Visual Basic.
Viene aperto Visual Basic Editor.
Nella finestra Progetto, fare doppio clic su ThisWorkbook.
Viene aperto il file di codice per l'oggetto ThisWorkbook.
Aggiungere al file di codice il seguente codice VBA. Il codice ottiene innanzitutto un oggetto COMAddIn che rappresenta il componente aggiuntivo ExcelImportData. Quindi utilizza la proprietà Object dell'oggetto COMAddIn per chiamare il metodo ImportData.
Sub CallVSTOMethod() Dim addIn As COMAddIn Dim automationObject As Object Set addIn = Application.COMAddIns("ExcelImportData") Set automationObject = addIn.Object automationObject.ImportData End Sub
Premere F5.
Verificare che un nuovo foglio di dati importati sia stato aggiunto alla cartella di lavoro. Verificare inoltre che la cella A1 contenga la stringa This is my data.
Uscire da Excel.
Passaggi successivi
Per ulteriori informazioni sulla programmazione dei componenti aggiuntivi, vedere gli argomenti seguenti:
Utilizzo della classe ThisAddIn per automatizzare l'applicazione host ed eseguire altre attività nei progetti per componenti aggiuntivi. Per ulteriori informazioni, vedere Programmazione di componenti aggiuntivi a livello di applicazione.
Creare un riquadro attività personalizzato in un componente aggiuntivo. Per ulteriori informazioni, vedere Cenni preliminari sui riquadri attività personalizzati e Procedura: aggiungere un riquadro attività personalizzato a un'applicazione.
Personalizzare la barra multifunzione in un componente aggiuntivo. Per ulteriori informazioni, vedere°Cenni preliminari sulla barra multifunzione e Procedura: iniziare a personalizzare la barra multifunzione.
Vedere anche
Attività
Procedura: creare progetti di Office in Visual Studio
Concetti
Chiamata di codice nei componenti aggiuntivi a livello di applicazione da altre soluzioni Office
Architettura dei componenti aggiuntivi a livello di applicazione
Altre risorse
Programmazione di componenti aggiuntivi a livello di applicazione