Condividi tramite


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:

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

  1. 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

  1. Dal menu Progetto , fare clic su Aggiungi classe.

  2. 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.

  3. Aggiungere le direttive seguenti all'inizio del file.

    using System.Data;
    using System.Runtime.InteropServices;
    using Excel = Microsoft.Office.Interop.Excel;
    
  4. 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 metodo ImportData alla classe. Al fine di esporre l'interfaccia IDispatch , la classe AddInUtilities 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

  1. In Esplora soluzioni, espandere Excel.

  2. Fare clic con il pulsante destro del mouse su ThisAddIn.cs o ThisAddIn.vb, quindi selezionare Visualizza codice.

  3. Aggiungere il codice seguente alla classe ThisAddIn .

    private AddInUtilities utilities;
    
    protected override object RequestComAddInAutomationService()
    {
        if (utilities == null)
            utilities = new AddInUtilities();
    
        return utilities;
    }
    
  4. 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

  1. Premere F5 per eseguire il progetto.

  2. 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.

  3. 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.

  4. Nel gruppo Codice , selezionare Visual Basic.

    Viene aperto Microsoft Visual Basic Editor.

  5. Nella finestra, Progetto , fare doppio clic su ThisWorkbook.

    Viene aperto il file di codice relativo all'oggetto ThisWorkbook .

  6. 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
    
  7. Premere F5.

  8. 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.

  9. Uscire da Excel.

Passaggi successivi

Per altre informazioni sulla programmazione di componenti aggiuntivi VSTO, vedere questi argomenti: