Procédure pas à pas : appeler du code dans un complément VSTO à partir de VBA

Cette procédure pas à pas montre comment exposer un objet dans un complément VSTO à d’autres solutions Microsoft Office, notamment des compléments VSTO VBA (Visual Basic pour Applications) et COM.

S’applique à : les informations contenues dans cette rubrique s’appliquent aux projets de complément VSTO. Pour plus d’informations, consultez Fonctionnalités disponibles par application Office lication et le type de projet.

Bien que cette procédure pas à pas utilise spécifiquement Excel, les concepts présentés ici s'appliquent à tous les modèles de projet de complément VSTO fournis par Visual Studio.

Cette procédure pas à pas décrit les tâches suivantes :

  • Définition d'une classe pouvant être exposée à d'autres solutions Office

  • Exposition de la classe à d'autres solutions Office

  • Appel d'une méthode de la classe à partir du code VBA

    Remarque

    Il est possible que pour certains des éléments de l'interface utilisateur de Visual Studio, votre ordinateur affiche des noms ou des emplacements différents de ceux indiqués dans les instructions suivantes. L'édition de Visual Studio dont vous disposez et les paramètres que vous utilisez déterminent ces éléments. Pour plus d’informations, consultez Personnaliser l’IDE.

Prérequis

Vous devez disposer des éléments suivants pour exécuter cette procédure pas à pas :

Créer le projet de complément VSTO

La première étape consiste à créer un projet de complément VSTO pour Excel.

Pour créer un projet

  1. Créez un projet de complément VSTO Excel nommé ExcelImportDataà l’aide du modèle de projet de complément VSTO Excel. Pour plus d'informations, consultez How to: Create Office Projects in Visual Studio.

    Visual Studio ouvre le fichier de code ThisAddIn.cs ou ThisAddIn.vb et ajoute le projet ExcelImportData à Explorateur de solutions.

Définir une classe que vous pouvez exposer à d’autres solutions Bureau

L'objectif de cette procédure pas à pas est d'appeler la méthode ImportData d'une classe nommée AddInUtilities dans votre complément VSTO à partir du code VBA. Cette méthode écrit une chaîne dans la cellule A1 de la feuille de calcul active.

Pour exposer la classe AddInUtilities à d'autres solutions Office, vous devez faire rendre la classe publique et visible par COM. Vous devez également exposer l'interface IDispatch dans la classe. Le code de la procédure suivante vous montre une façon de respecter ces exigences. Pour plus d'informations, consultez Calling Code in VSTO Add-ins from Other Office Solutions.

Pour définir une classe pouvant être exposée à d'autres solutions Office

  1. Dans le menu Projet , cliquez sur Ajouter une classe.

  2. Dans la boîte de dialogue Ajouter un nouvel élément , remplacez le nom de la nouvelle classe par AddInUtilities, puis cliquez sur Ajouter.

    Le fichier AddInUtilities.cs ou AddInUtilities.vb s'ouvre dans l'éditeur de code.

  3. Ajoutez les directives suivantes au début du fichier.

    using System.Data;
    using System.Runtime.InteropServices;
    using Excel = Microsoft.Office.Interop.Excel;
    
  4. Remplacez la classe AddInUtilities par le code suivant :

    [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";
            }
        }
    }
    

    Ce code rend la classe AddInUtilities visible par COM et ajoute la méthode ImportData à la classe. Pour exposer l'interface IDispatch , la classe AddInUtilities possède également l'attribut ClassInterfaceAttribute et implémente une interface visible par COM.

Exposer la classe à d’autres solutions Bureau

Pour exposer la classe AddInUtilities à d'autres solutions Office, substituez la méthode RequestComAddInAutomationService dans la classe ThisAddIn . Dans la substitution, retournez une instance de la classe AddInUtilities .

Pour exposer la classe AddInUtilities à d'autres Solutions Office

  1. Dans l' Explorateur de solutions, développez Excel.

  2. Cliquez avec le bouton droit sur ThisAddIn.cs ou ThisAddIn.vb, puis cliquez sur Afficher le code.

  3. Ajoutez le code suivant à la classe ThisAddIn .

    private AddInUtilities utilities;
    
    protected override object RequestComAddInAutomationService()
    {
        if (utilities == null)
            utilities = new AddInUtilities();
    
        return utilities;
    }
    
  4. Dans le menu Générer, cliquez sur Générer la solution.

    Vérifiez que la solution se génère sans erreur.

Tester le complément VSTO

Vous pouvez exécuter un appel dans la classe AddInUtilities à partir de différents types de solutions Office. Dans cette procédure pas à pas, vous allez utiliser du code VBA dans un classeur Excel. Pour plus d’informations sur les autres types de solutions Bureau que vous pouvez également utiliser, consultez Code d’appel dans les compléments VSTO à partir d’autres solutions Bureau.

Pour tester votre complément VSTO

  1. Appuyez sur F5 pour exécuter votre projet.

  2. Dans Excel, enregistrez le classeur actif en tant que classeur Excel prenant en charge les macros (*.xlsm) dans un emplacement pratique, tel que le Bureau.

  3. Dans le ruban, cliquez sur l'onglet Développeur .

    Remarque

    Si l'onglet Développeur n'est pas visible, vous devez tout d'abord l'afficher. Pour plus d’informations, consultez Guide pratique pour afficher l’onglet Développeur du ruban.

  4. Dans le groupe Code , cliquez sur Visual Basic.

    Visual Basic Editor s'ouvre.

  5. Dans la fenêtre Projet , double-cliquez sur ThisWorkbook.

    Le fichier de code de l'objet ThisWorkbook s'ouvre.

  6. Ajoutez le code VBA suivant au fichier de code. Ce code obtient d’abord un objet COMAddIn qui représente le complément VSTO ExcelImportData . Ensuite, le code utilise la propriété Object de l’objet COMAddIn pour appeler la ImportData méthode.

    Sub CallVSTOMethod()
        Dim addIn As COMAddIn
        Dim automationObject As Object
        Set addIn = Application.COMAddIns("ExcelImportData")
        Set automationObject = addIn.Object
        automationObject.ImportData
    End Sub
    
  7. Appuyez sur F5.

  8. Assurez-vous qu'une nouvelle feuille de calcul Imported Data a été ajoutée au classeur. Vérifiez également que la cellule A1 contient la chaîne This is my data.

  9. Quittez Excel.

Étapes suivantes

Pour en savoir plus sur la programmation de compléments VSTO, consultez les rubriques suivantes :