Procédure pas à pas : Appel de code dans un complément VSTO à partir de VBAWalkthrough: Call code in a VSTO Add-in from 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.This walkthrough demonstrates how to expose an object in a VSTO Add-in to other Microsoft Office solutions, including Visual Basic for Applications (VBA) and COM VSTO Add-ins.

S’applique à : les informations contenues dans cette rubrique s’applique à VSTO ajouter-dans les projets.Applies to: The information in this topic applies to VSTO Add-in projects. Pour plus d’informations, consultez fonctionnalités disponibles par type d’application et de projet Office.For more information, see Features available by Office application and project type.

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.Although this walkthrough uses Excel specifically, the concepts demonstrated by the walkthrough are applicable to any VSTO Add-in project template provided by Visual Studio.

Cette procédure pas à pas décrit les tâches suivantes :This walkthrough illustrates the following tasks:

  • Définition d'une classe pouvant être exposée à d'autres solutions OfficeDefining a class that can be exposed to other Office solutions.

  • Exposition de la classe à d'autres solutions OfficeExposing the class to other Office solutions.

  • Appel d'une méthode de la classe à partir du code VBACalling a method of the class from VBA code.

    Note

    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.Your computer might show different names or locations for some of the Visual Studio user interface elements in the following instructions. L’édition de Visual Studio dont vous disposez et les paramètres que vous utilisez déterminent ces éléments.The Visual Studio edition that you have and the settings that you use determine these elements. Pour plus d’informations, consultez Personnaliser l’IDE.For more information, see Personalize the IDE.

PrérequisPrerequisites

Pour exécuter cette procédure pas à pas, vous devez disposer des composants suivants :You need the following components to complete this walkthrough:

Créer le projet de complément VSTOCreate the VSTO Add-in project

La première étape consiste à créer un projet de complément VSTO pour Excel.The first step is to create a VSTO Add-in project for Excel.

Pour créer un projetTo create a new project

  1. Créez un projet de complément VSTO Excel nommé ExcelImportDataà l’aide du modèle de projet de complément VSTO Excel.Create an Excel VSTO Add-in project with the name ExcelImportData, using the Excel VSTO Add-in project template. Pour plus d'informations, consultez How to: Create Office Projects in Visual Studio.For more information, see How to: Create Office Projects in Visual Studio.

    Visual StudioVisual Studio ouvre le fichier de code ThisAddIn.cs ou ThisAddIn.vb et ajoute le projet ExcelImportData à l' Explorateur de solutions. opens the ThisAddIn.cs or ThisAddIn.vb code file and adds the ExcelImportData project to Solution Explorer.

Définissez une classe pouvant être exposée à d’autres solutions OfficeDefine a class that you can expose to other Office solutions

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.The purpose of this walkthrough is to call into the ImportData method of a class named AddInUtilities in your VSTO Add-in from VBA code. Cette méthode écrit une chaîne dans la cellule A1 de la feuille de calcul active.This method writes a string into cell A1 of the active worksheet.

Pour exposer la classe AddInUtilities à d'autres solutions Office, vous devez faire rendre la classe publique et visible par COM.To expose the AddInUtilities class to other Office solutions, you must make the class public and visible to COM. Vous devez également exposer le IDispatch interface dans la classe.You must also expose the IDispatch interface in the class. Le code de la procédure suivante vous montre une façon de respecter ces exigences.The code in the following procedure demonstrates one way to meet these requirements. Pour plus d'informations, consultez Calling Code in VSTO Add-ins from Other Office Solutions.For more information, see Calling Code in VSTO Add-ins from Other Office Solutions.

Pour définir une classe pouvant être exposée à d'autres solutions OfficeTo define a class that you can expose to other Office solutions

  1. Dans le menu Projet , cliquez sur Ajouter une classe.On the Project menu, click Add Class.

  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.In the Add New Item dialog box, change the name of the new class to AddInUtilities, and click Add.

    Le fichier AddInUtilities.cs ou AddInUtilities.vb s'ouvre dans l'éditeur de code.The AddInUtilities.cs or AddInUtilities.vb file opens in the Code Editor.

  3. Ajoutez les instructions suivantes au début du fichier.Add the following statements to the top of the file.

    using System.Data;
    using System.Runtime.InteropServices;
    using Excel = Microsoft.Office.Interop.Excel;
    
    Imports System.Data
    Imports System.Runtime.InteropServices
    Imports Excel = Microsoft.Office.Interop.Excel
    
  4. Remplacez la classe AddInUtilities par le code suivant :Replace the AddInUtilities class with the following code.

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

    Ce code rend la classe AddInUtilities visible par COM et ajoute la méthode ImportData à la classe.This code makes the AddInUtilities class visible to COM, and it adds the ImportData method to the class. Pour exposer la IDispatch interface, le AddInUtilities classe a également la ClassInterfaceAttribute attribut et implémente une interface qui est visible par COM.To expose the IDispatch interface, the AddInUtilities class also has the ClassInterfaceAttribute attribute, and it implements an interface that is visible to COM.

Exposer la classe à d’autres solutions OfficeExpose the class to other Office solutions

Pour exposer la classe AddInUtilities à d'autres solutions Office, substituez la méthode RequestComAddInAutomationService dans la classe ThisAddIn .To expose the AddInUtilities class to other Office solutions, override the RequestComAddInAutomationService method in the ThisAddIn class. Dans la substitution, retournez une instance de la classe AddInUtilities .In your override, return an instance of the AddInUtilities class.

Pour exposer la classe AddInUtilities à d'autres Solutions OfficeTo expose the AddInUtilities class to other Office Solutions

  1. Dans l' Explorateur de solutions, développez Excel.In Solution Explorer, expand Excel.

  2. Cliquez avec le bouton droit sur ThisAddIn.cs ou ThisAddIn.vb, puis cliquez sur Afficher le code.Right-click ThisAddIn.cs or ThisAddIn.vb, and then click View Code.

  3. Ajoutez le code suivant à la classe ThisAddIn .Add the following code to the ThisAddIn class.

    private AddInUtilities utilities;
    
    protected override object RequestComAddInAutomationService()
    {
        if (utilities == null)
            utilities = new AddInUtilities();
    
        return utilities;
    }
    
    Private utilities As AddInUtilities
    
    Protected Overrides Function RequestComAddInAutomationService() As Object
        If utilities Is Nothing Then
            utilities = New AddInUtilities()
        End If
        Return utilities
    End Function
    
  4. Dans le menu Générer , cliquez sur Générer la solution.On the Build menu, click Build Solution.

    Vérifiez que la solution se génère sans erreur.Verify that the solution builds without errors.

Tester le complément VSTOTest the VSTO Add-in

Vous pouvez exécuter un appel dans la classe AddInUtilities à partir de différents types de solutions Office.You can call into the AddInUtilities class from several different types of Office solutions. Dans cette procédure pas à pas, vous allez utiliser du code VBA dans un classeur Excel.In this walkthrough, you will use VBA code in an Excel workbook. Pour plus d’informations sur les autres types de solutions Office utilisables, consultez appeler du code dans des Compléments VSTO à partir d’autres solutions Office.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.

Pour tester votre complément VSTOTo test your VSTO Add-in

  1. Appuyez sur F5 pour exécuter votre projet.Press F5 to run your project.

  2. Dans Excel, enregistrez le classeur actif en tant que classeur Excel prenant en charge les macros (*.xlsm)In Excel, save the active workbook as an Excel Macro-Enabled Workbook (*.xlsm). dans un emplacement pratique, tel que le Bureau.Save it in a convenient location, such as the desktop.

  3. Dans le ruban, cliquez sur l'onglet Développeur .On the Ribbon, click the Developer tab.

    Note

    Si l'onglet Développeur n'est pas visible, vous devez tout d'abord l'afficher.If the Developer tab is not visible, you must first show it. Pour plus d’informations, consultez Comment : afficher l’onglet Développeur sur le ruban.For more information, see How to: Show the developer tab on the Ribbon.

  4. Dans le groupe Code , cliquez sur Visual Basic.In the Code group, click Visual Basic.

    Visual Basic Editor s'ouvre.The Visual Basic Editor opens.

  5. Dans la fenêtre Projet , double-cliquez sur ThisWorkbook.In the Project window, double-click ThisWorkbook.

    Le fichier de code de l'objet ThisWorkbook s'ouvre.The code file for the ThisWorkbook object opens.

  6. Ajoutez le code VBA suivant au fichier de code.Add the following VBA code to the code file. Ce code obtient d’abord un objet COMAddIn qui représente le ExcelImportData complément VSTO.This code first gets a COMAddIn object that represents the ExcelImportData VSTO Add-in. Ensuite, le code utilise la propriété d’objet de l’objet COMAddIn pour appeler le ImportData (méthode).Then, the code uses the Object property of the COMAddIn object to call the ImportData method.

    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.Press F5.

  8. Assurez-vous qu'une nouvelle feuille de calcul Imported Data a été ajoutée au classeur.Verify that a new Imported Data sheet has been added to the workbook. Vérifiez également que la cellule A1 contient la chaîne This is my data.Also verify that cell A1 contains the string This is my data.

  9. Quittez Excel.Exit Excel.

Étapes suivantesNext steps

Pour en savoir plus sur la programmation de compléments VSTO, consultez les rubriques suivantes :You can learn more about programming VSTO Add-ins from these topics:

Voir aussiSee also

Programmer des Compléments VSTO Program VSTO Add-ins
Appeler du code dans des Compléments VSTO à partir d’autres solutions Office Call code in VSTO Add-ins from other Office solutions
Développer des solutions Office Develop Office solutions
Comment : créer des projets Office dans Visual Studio How to: Create Office projects in Visual Studio
Architecture des Compléments VSTO Architecture of VSTO Add-ins
Personnaliser les fonctionnalités d’interface utilisateur à l’aide des interfaces d’extensibilitéCustomize UI features by using extensibility interfaces