Procedura dettagliata: Chiamare il codice in un componente aggiuntivo VSTO da VBA
Questa procedura dettagliata descrive come esporre un oggetto in un componente aggiuntivo VSTO ad altre soluzioni Microsoft Office, tra cui Visual Basic, Applications Edition (VBA) e i componenti aggiuntivi VSTO COM.
Si applica a: le informazioni contenute in questo argomento si applicano ai progetti di componente aggiuntivo VSTO. Per altre informazioni, vedere Funzionalità disponibili per app Office lication e tipo di progetto.
Benché la procedura dettagliata usi in particolare Excel, i concetti illustrati sono applicabili a qualsiasi modello di progetto di componente aggiuntivo VSTO disponibile in Visual Studio.
In questa procedura dettagliata sono illustrati i task seguenti:
Definizione di una classe che può essere esposta ad altre soluzioni Office.
Esposizione della classe ad altre soluzioni Office.
Chiamata di un metodo della classe dal codice VBA.
Nota
I nomi o i percorsi visualizzati per alcuni elementi dell'interfaccia utente di Visual Studio nelle istruzioni seguenti potrebbero essere diversi nel computer in uso. La versione di Visual Studio in uso e le impostazioni configurate determinano questi elementi. Per altre informazioni, vedere Personalizzare l'IDE.
Prerequisiti
Per completare questa procedura dettagliata, è necessario disporre dei componenti seguenti:
Una versione di Visual Studio che include Microsoft Office Developer Tools. Per altre informazioni, vedere Configurare un computer per sviluppare soluzioni Office.
Microsoft Excel
Creare il progetto di componente aggiuntivo VSTO
Il primo passaggio consiste nel creare un progetto di componente aggiuntivo VSTO per Excel.
Per creare un nuovo progetto
Creare un progetto di componente aggiuntivo VSTO per Excel con il nome ExcelImportData, usando il modello di progetto di componente aggiuntivo VSTO per Excel. Per altre informazioni, vedere How to: Create Office Projects in Visual Studio.
Visual Studio apre il file di codice ThisAddIn.cs o ThisAddIn.vb e aggiunge il progetto ExcelImportData a Esplora soluzioni.
Definire una classe che è possibile esporre ad altre soluzioni Office
Lo scopo di questa procedura dettagliata è chiamare il metodo ImportData
di una classe denominata AddInUtilities
nel componente aggiuntivo VSTO dal codice VBA. Il metodo consente di scrivere una stringa nella cella A1 del foglio di lavoro attuale.
Per esporre la classe AddInUtilities
ad altre soluzioni Office, è necessario rendere pubblica e visibile la classe a COM. Inoltre, è necessario esporre l'interfaccia IDispatch nella classe. Il codice riportato nella procedura illustra uno dei modi in cui è possibile soddisfare tali requisiti. Per altre informazioni, vedere Calling Code in VSTO Add-ins from Other Office Solutions.
Definire una classe che può essere esposta ad altre soluzioni Office
Dal menu Progetto , fare clic su Aggiungi classe.
Nella finestra di dialogo Aggiungi nuovo elemento , modificare il nome della nuova classe in AddInUtilities, quindi selezionare Aggiungi.
Il file AddInUtilities.cs o AddInUtilities.vb viene aperto nell'editor del codice.
Aggiungere le direttive seguenti all'inizio del file.
Sostituire la classe
AddInUtilities
con il codice seguente.[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 metodoImportData
alla classe. Al fine di esporre l'interfaccia IDispatch , la classeAddInUtilities
dispone anche dell'attributo ClassInterfaceAttribute e implementa un'interfaccia che può essere visualizzata da COM.
Esporre la classe ad altre soluzioni Office
Per esporre la AddInUtilities
classe 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 ad altre soluzioni Office
In Esplora soluzioni, espandere Excel.
Fare clic con il pulsante destro del mouse su ThisAddIn.cs o ThisAddIn.vb, quindi selezionare Visualizza codice.
Aggiungere il codice seguente alla classe
ThisAddIn
.Nel menu Compila scegliere Compila soluzione.
Verificare che la soluzione venga compilata senza errori.
Testare il componente aggiuntivo VSTO
È possibile chiamare la classe AddInUtilities
da numerose tipologie di soluzioni Office. In questa procedura dettagliata, il codice VBA verrà usato in una cartella di lavoro di Excel. Per altre informazioni sugli altri tipi di soluzioni Office che è possibile usare, vedere Call code in VSTO Add-ins from other Office solutions .For more information about the other types of Office solutions you can also use, see Call code in VSTO Add-ins from other Office solutions.
Per testare il componente aggiuntivo VSTO
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 a propria scelta, ad esempio, il desktop.
Sulla barra multifunzione fare clic sulla scheda Sviluppatore .
Nota
Se la scheda Sviluppatore non viene mostrata, è necessario abilitarne la visualizzazione. Per altre informazioni, vedere Procedura: Visualizzare la scheda sviluppatore sulla barra multifunzione.
Nel gruppo Codice , selezionare Visual Basic.
Viene aperto Microsoft Visual Basic Editor.
Nella finestra, Progetto , fare doppio clic su ThisWorkbook.
Viene aperto il file di codice relativo all'oggetto
ThisWorkbook
.Aggiungere il codice VBA seguente al file di codice. Questo codice ottiene innanzitutto un oggetto COMAddIn che rappresenta il componente aggiuntivo VSTO ExcelImportData . Il codice usa quindi la proprietà Object dell'oggetto COMAddIn per chiamare il
ImportData
metodo .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 Dati importati sia stato aggiunto alla cartella di lavoro. Inoltre, verificare che nella cella A1 sia presente la stringa Dati personali.
Uscire da Excel.
Passaggi successivi
Per altre informazioni sulla programmazione di componenti aggiuntivi VSTO, vedere questi argomenti:
Usare la classe
ThisAddIn
per automatizzare l'applicazione host ed eseguire altre attività nei progetti di componente aggiuntivo VSTO. Per altre informazioni, vedere Programmare componenti aggiuntivi VSTO.Creare un riquadro attività personalizzato in un componente aggiuntivo VSTO. Per altre informazioni, vedere Riquadri attività personalizzati e Procedura: Aggiungere un riquadro attività personalizzato a un'applicazione.
Personalizzare la barra multifunzione in un componente aggiuntivo VSTO. Per altre informazioni, vedere Panoramica della barra multifunzione e Procedura: Introduzione alla personalizzazione della barra multifunzione.
Contenuto correlato
- Programmare componenti aggiuntivi VSTO
- Chiamare il codice nei componenti aggiuntivi VSTO da altre soluzioni Office
- Sviluppare soluzioni Office
- Procedura: Creare progetti di Office in Visual Studio
- Architecture of VSTO Add-ins
- Personalizzare le funzionalità dell'interfaccia utente usando interfacce di estendibilità