Procédure pas à pas : appel de code dans un complément d'application à partir de VBA
Cette procédure pas à pas explique comment exposer un objet d'un complément d'application à d'autres solutions Microsoft Office, y compris des compléments VBA (Visual Basic for Applications) et COM.
**S'applique à :**Les informations contenues dans cette rubrique s'appliquent aux projets de niveau application pour Microsoft Office 2013 Preview et Microsoft Office 2010. Pour en savoir plus, consultez Fonctionnalités disponibles par type d'application et de projet Office.
Bien que cette procédure utilise spécifiquement Excel, les concepts présentés ici s'appliquent à tous les modèles de projets de complément fournis par Visual Studio.
Cette procédure pas à pas décrit les tâches suivantes :
Définition d'une classe susceptible d'ê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 votre ordinateur affiche des noms ou des emplacements différents pour certains des éléments d'interface utilisateur de Visual Studio 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 Paramètres Visual Studio.
Composants requis
Pour exécuter cette procédure pas à pas, vous devez disposer des composants suivants :
-
Une édition de Visual Studio 2012 qui inclut les outils de développement Microsoft Office. Pour plus d'informations, consultez [Configuration d'un ordinateur pour développer des solutions Office](bb398242\(v=vs.110\).md).
- Excel 2013 ou Excel 2010.
Pour obtenir une version vidéo de cette rubrique, consultez la Vidéo : Comment appeler du code dans un complément d'application à partir de VBA (page éventuellement en anglais).
Création du projet de complément
La première étape consiste à créer un projet de complément pour Excel.
Pour créer un projet
Créez un projet de complément Excel nommé ImporterDonnéesExcel, à l'aide du modèle de projet de complément Excel.Pour plus d’informations, consultez Comment : créer des projets Office dans Visual Studio.
Visual Studio ouvre le fichier de code ThisAddIn.cs ou ThisAddIn.vb et ajoute le projet ImporterDonnéesExcel à l'Explorateur de solutions.
Définition d'une classe susceptible d'être exposée à d'autres solutions Office
Cette procédure pas à pas a pour but d'appeler la méthode ImportData d'une classe nommée AddInUtilities dans votre complément à 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 explique comment respecter ces exigences.Pour plus d’informations, consultez Appel de code dans des compléments d'application à partir d'autres solutions Office.
Pour définir une classe susceptible d'être exposée à d'autres solutions Office
Dans le menu Projet, cliquez sur Ajouter une classe.
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.
Ajoutez les instructions suivantes au début du fichier.
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;
Remplacez la classe AddInUtilities par le code suivant.
<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"; } } }
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 elle implémente une interface qui est visible à COM.
Exposition de la classe à d'autres solutions Office
Pour exposer la classe AddInUtilities à d'autres solutions Office, substituez la méthode RequestComAddInAutomationService de la classe ThisAddIn.Dans le cas de cette substitution, retournez une instance de la classe AddInUtilities.
Pour exposer la classe AddInUtilities à d'autres solutions Office
Dans l'Explorateur de solutions, développez Excel.
Cliquez avec le bouton droit sur ThisAddIn.cs ou ThisAddIn.vb, puis cliquez sur Afficher le code.
Ajoutez le code suivant à la 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; }
Dans le menu Générer, cliquez sur Générer la solution.
Vérifiez que la solution est générée sans erreur.
Test du complément
Vous pouvez appeler la classe AddInUtilities à partir de plusieurs types de solutions Office.Cette procédure pas à pas utilise le code VBA dans un classeur Excel.Pour plus d'informations sur les autres types de solutions Office utilisables, consultez Appel de code dans des compléments d'application à partir d'autres solutions Office.
Pour tester votre complément
Appuyez sur F5 pour exécuter votre projet.
Dans Excel, enregistrez le classeur actif en tant que Classeur Excel prenant en charge les macros (*.xlsm)dans un emplacement commode, tel que le Bureau.
Dans le ruban, cliquez sur l'onglet Développeur.
[!REMARQUE]
Si l'onglet Développeur n'est pas visible, vous devez préalablement l'afficher.Pour plus d’informations, consultez Comment : afficher l'onglet Développeur sur le ruban.
Dans le groupe Code, cliquez sur Visual Basic.
Visual Basic Editor s'ouvre.
Dans la fenêtre Projet, double-cliquez sur ThisWorkbook.
Le fichier de code de l'objet ThisWorkbook s'ouvre.
Ajoutez le code VBA suivant au fichier de code.Dans un premier temps, ce code reçoit un objet COMAddIn représentant le complément ImporterDonnéesExcel.Il utilise ensuite la propriété Object de l'objet COMAddIn pour appeler la méthode ImportData.
Sub CallVSTOMethod() Dim addIn As COMAddIn Dim automationObject As Object Set addIn = Application.COMAddIns("ExcelImportData") Set automationObject = addIn.Object automationObject.ImportData End Sub
Appuyez sur F5.
Vérifiez qu'une nouvelle feuille Données importées a été ajoutée au classeur.Vérifiez également que la cellule A1 contient la chaîne Ce sont mes données.
Quittez Excel.
Étapes suivantes
Pour en savoir plus sur la programmation de compléments, consultez les rubriques ci-dessous :
Utiliser la classe ThisAddIn pour automatiser l'application hôte et effectuer d'autres tâches dans les projets de complément.Pour plus d’informations, consultez Programmation de compléments d'application.
Créez un volet de tâches personnalisé dans un complément.Pour plus d'informations, consultez Volets de tâches personnalisés et Comment : ajouter un volet de tâches personnalisé à une application.
Personnalisez le ruban dans un complément.Pour plus d'informations, consultez Vue d'ensemble du ruban et Comment : démarrer avec la personnalisation du ruban.
Voir aussi
Tâches
Comment : créer des projets Office dans Visual Studio
Concepts
Appel de code dans des compléments d'application à partir d'autres solutions Office
Architecture des compléments d'application