Procédure pas à pas : Appeler du code à partir de VBA dans un projet Visual BasicWalkthrough: Call code from VBA in a Visual Basic project

Cette procédure pas à pas montre comment appeler une méthode dans une personnalisation au niveau du document pour Microsoft Office Word à partir d'un code VBA (Visual Basic pour Applications) dans le document.This walkthrough demonstrates how to call a method in a document-level customization for Microsoft Office Word from Visual Basic for Applications (VBA) code in the document. Cette procédure comporte trois étapes de base : l'ajout d'une méthode dans la classe d'élément hôte ThisDocument , l'exposition de la méthode au code VBA, puis l'appel de la méthode à partir du code VBA dans le document.The procedure involves three basic steps: add a method to the ThisDocument host item class, expose the method to VBA code, and then call the method from VBA code in the document.

S’applique à : Les informations contenues dans cette rubrique s’appliquent aux projets de niveau document pour Excel et Word.Applies to: The information in this topic applies to document-level projects for Excel and Word. 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 Word, les concepts présentés ici s'appliquent également aux projets de niveau document pour Excel.Although this walkthrough uses Word specifically, the concepts demonstrated by the walkthrough also apply to document-level projects for Excel.

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

  • Création d'un document contenant du code VBA.Creating a document that contains VBA code.

  • Approbation de l'emplacement du document à l'aide du Centre de gestion de la confidentialité dans Word.Trusting the location of the document by using the Trust Center in Word.

  • Ajout d'une méthode à la classe d'élément hôte ThisDocument .Adding a method to the ThisDocument host item class.

  • Exposition de la méthode au code VBA.Exposing the method to VBA code.

  • Appel de la méthode à partir du code VBACalling the method 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 Visual Studio.For more information, see Personalize the Visual Studio 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 un document qui contient du code VBACreate a document that contains VBA code

La première étape consiste à créer un document prenant en charge les macros et contenant une macro VBA simple.The first step is to create a macro-enabled document that contains a simple VBA macro. Le document doit contenir un projet VBA avant que vous créiez un projet Visual Studio basé sur ce document.The document must contain a VBA project before you create a Visual Studio project that is based on that document. Dans le cas contraire, Visual Studio ne peut pas modifier le projet VBA pour permettre au code VBA d'appeler dans l'assembly de personnalisation.Otherwise, Visual Studio cannot modify the VBA project to enable VBA code to call into the customization assembly.

Si vous disposez déjà d'un document contenant du code VBA que vous souhaitez utiliser, vous pouvez ignorer cette étape.If you already have a document that contains VBA code that you want to use, you can skip this step.

Pour créer un document contenant du code VBATo create a document that contains VBA code

  1. Démarrez Word.Start Word.

  2. Enregistrer le document actif en tant que mot prenant en charge Document (*.docm) portant le nom DocumentAvecVBA.Save the active document as a Word Macro-Enabled Document (*.docm) with the name DocumentWithVBA. Enregistrez-le dans un emplacement approprié, 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 ThisDocument.In the Project window, double-click ThisDocument.

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

  6. Ajoutez le code VBA suivant au fichier de code.Add the following VBA code to the code file. Ce code définit une fonction simple qui ne fait rien.This code defines a simple function that does nothing. Le seul objectif de cette fonction consiste à s'assurer qu'un projet VBA existe dans le document.The only purpose of this function is to ensure that a VBA project exists in the document. Cela est nécessaire pour les étapes ultérieures de cette procédure.This is required for later steps in this walkthrough.

    Sub EmptySub()  
    End Sub  
    
  7. Enregistrez le document et quittez Word.Save the document and exit Word.

Créer le projetCreate the project

Vous pouvez maintenant créer un projet au niveau du document pour Word qui utilise le document prenant en charge les macros que vous avez créé précédemment.Now you can create a document-level project for Word that uses the macro-enabled document you created earlier.

Pour créer un projetTo create a new project

  1. Démarrez Visual StudioVisual Studio.Start Visual StudioVisual Studio.

  2. Dans le menu Fichier , pointez sur Nouveau, puis cliquez sur Projet.On the File menu, point to New, and then click Project. Si votre interface IDE est définie pour utiliser les paramètres de développement Visual Basic, dans le menu Fichier , cliquez sur Nouveau projet.If your IDE is set to use Visual Basic development settings, on the File menu, click New Project.

  3. Dans le volet Modèles, développez Visual Basicpuis Office/SharePoint.In the templates pane, expand Visual Basic, and then expand Office/SharePoint.

  4. Sélectionnez le nœud Compléments Office .Select the Office Add-ins node.

  5. Dans la liste des modèles de projet, sélectionnez le projet Document Word 2010 ou Document Word 2013 .In the list of project templates, select the Word 2010 Document or Word 2013 Document project.

  6. Dans la zone Nom , tapez AppelCodeDeVBA.In the Name box, type CallingCodeFromVBA.

  7. Cliquez sur OK.Click OK.

    L' Assistant Projet Visual Studio Tools pour Office s'ouvre.The Visual Studio Tools for Office Project Wizard opens.

  8. Sélectionnez Copier un document existant, puis, dans la zone Chemin d'accès complet du document existant , spécifiez l'emplacement du document DocumentAvecVBA que vous avez créé précédemment.Select Copy an existing document, and, in the Full path of the existing document box, specify the location of the DocumentWithVBA document that you created earlier. Si vous utilisez votre propre document prenant en charge les macros, spécifiez l'emplacement de ce document à la place.If you are using your own macro-enabled document, specify the location of this document instead.

  9. Cliquez sur Terminer.Click Finish.

    Visual StudioVisual Studio ouvre le document DocumentAvecVBA dans le concepteur et ajoute le projet AppelCodeDeVBA dans l' Explorateur de solutions. opens the DocumentWithVBA document in the designer and adds the CallingCodeFromVBA project to Solution Explorer.

Faites confiance à l’emplacement du documentTrust the location of the document

Avant d'exposer le code dans votre solution au code VBA dans le document, vous devez approuver VBA dans le document à exécuter.Before you can expose code in your solution to VBA code in the document, you must trust VBA in the document to run. Pour ce faire, plusieurs méthodes sont possibles.There are several ways to do this. Pour cette procédure pas à pas, approuvez l'emplacement du document dans le Centre de gestion de la confidentialité dans Word.For this walkthrough, trust the location of the document in the Trust Center in Word.

Pour approuver l'emplacement du documentTo trust the location of the document

  1. Démarrez Word.Start Word.

  2. Cliquez sur l'onglet Fichier .Click the File tab.

  3. Cliquez sur le bouton Options Word .Click the Word Options button.

  4. Dans le volet des catégories, cliquez sur Centre de gestion de la confidentialité.In the categories pane, click Trust Center.

  5. Dans le volet d'informations, cliquez sur Paramètres du Centre de gestion de la confidentialité.In the details pane, click Trust Center Settings.

  6. Dans le volet des catégories, cliquez sur Emplacements approuvés.In the categories pane, click Trusted Locations.

  7. Dans le volet d'informations, cliquez sur Ajouter un nouvel emplacement.In the details pane, click Add new location.

  8. Dans la boîte de dialogue Emplacement approuvé de Microsoft Office , accédez au dossier qui contient le projet AppelCodeDeVBA .In the Microsoft Office Trusted Location dialog box, browse to the folder that contains the CallingCodeFromVBA project.

  9. Sélectionnez Les sous-dossiers de cet emplacement sont également approuvés.Select Subfolders of this location are also trusted.

  10. Dans la boîte de dialogue Emplacement approuvé de Microsoft Office , cliquez sur OK.In the Microsoft Office Trusted Location dialog box, click OK.

  11. Dans la boîte de dialogue Centre de gestion de la confidentialité , cliquez sur OK.In the Trust Center dialog box, click OK.

  12. Dans la boîte de dialogue Options Word , cliquez sur OK.In the Word Options dialog box, click OK.

  13. Quittez Word.Exit Word.

Ajoutez une méthode à la classe ThisDocumentAdd a method to the ThisDocument class

Maintenant que le projet VBA est configuré, ajoutez une méthode à la classe d'élément hôte ThisDocument que vous pouvez appeler à partir du code VBA.Now that the VBA project is set up, add a method to the ThisDocument host item class that you can call from VBA code.

Pour ajouter une méthode à la classe ThisDocumentTo add a method to the ThisDocument class

  1. Dans l' Explorateur de solutions, cliquez avec le bouton droit sur ThisDocument.vb, puis cliquez sur Afficher le code.In Solution Explorer, right-click ThisDocument.vb, and then click View Code.

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

  2. Ajoutez la méthode suivante à la classe ThisDocument .Add the following method to the ThisDocument class. Cette méthode crée une table de deux lignes et deux colonnes au début du document.This method creates a table with two rows and two columns at the beginning of the document. Les paramètres spécifient le texte qui est affiché dans la première ligne.The parameters specify the text that is displayed in the first row. Plus loin dans cette procédure pas à pas, vous appellerez cette méthode à partir du code VBA figurant dans le document.Later in this walkthrough, you will call this method from VBA code in the document.

    Public Sub CreateTable(ByVal firstColumnHeader As String, _
        ByVal secondColumnHeader As String)
    
        Me.Paragraphs(1).Range.InsertParagraphBefore()
        Dim table1 As Word.Table = Me.Tables.Add(Me.Paragraphs(1).Range, 2, 2)
    
        With table1
            .Style = "Table Professional"
            .Cell(1, 1).Range.Text = firstColumnHeader
            .Cell(1, 2).Range.Text = secondColumnHeader
        End With
    End Sub
    
  3. Générez le projet.Build the project.

Exposition de la méthode au code VBAExpose the method to VBA code

Pour exposer la méthode CreateTable au code VBA dans le document, définissez la propriété EnableVbaCallers pour l'élément hôte ThisDocument sur True.To expose the CreateTable method to VBA code in the document, set the EnableVbaCallers property for the ThisDocument host item to True.

Pour exposer la méthode au code VBATo expose the method to VBA code

  1. Dans l' Explorateur de solutions, double-cliquez sur le fichier ThisDocument.vb.In Solution Explorer, double-click ThisDocument.vb.

    Le fichier DocumentAvecVBA s'ouvre dans le concepteur.The DocumentWithVBA file opens in the designer.

  2. Dans la fenêtre Propriétés , sélectionnez la propriété EnableVbaCallers et remplacez sa valeur par True.In the Properties window, select the EnableVbaCallers property, and change the value to True.

  3. Cliquez sur OK dans le message qui s'affiche.Click OK in the message that is displayed.

  4. Générez le projet.Build the project.

Appelez la méthode à partir du code VBACall the method from VBA code

Vous pouvez maintenant appeler la méthode CreateTable à partir du code VBA figurant dans le document.You can now call the CreateTable method from VBA code in the document.

Note

Dans cette procédure pas à pas, vous allez ajouter du code VBA au document lors du débogage du projet.In this walkthrough, you will add VBA code to the document while debugging the project. Le code VBA que vous ajoutez à ce document sera remplacé la prochaine fois que vous générerez le projet, car Visual Studio remplace le document dans le dossier de sortie de génération par une copie du document provenant du dossier principal du projet.The VBA code you add to this document will be overwritten the next time that you build the project, because Visual Studio replaces the document in the build output folder with a copy of the document from the main project folder. Si vous souhaitez enregistrer le code VBA, vous pouvez le copier dans le document, dans le dossier du projet.If you want to save the VBA code, you can copy it into the document in the project folder. Pour plus d’informations, consultez combiner de VBA et de personnalisations au niveau du document.For more information, see Combine VBA and document-level customizations.

Pour appeler la méthode à partir du code VBATo call the method from VBA code

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

  2. Sous l'onglet Développeur , dans le groupe Code , cliquez sur Visual Basic.On the Developer tab, in the Code group, click Visual Basic.

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

  3. Dans le menu Insérer , cliquez sur Module.On the Insert menu, click Module.

  4. Ajoutez le code ci-dessous au nouveau module.Add the following code to the new module.

    Ce code appelle la méthode CreateTable dans l'assembly de personnalisation.This code calls the CreateTable method in the customization assembly. La macro accède à cette méthode en utilisant la propriété CallVSTOAssembly de l'objet ThisDocument .The macro accesses this method by using the CallVSTOAssembly property of the ThisDocument object. Cette propriété a été générée automatiquement quand vous avez défini la propriété EnableVbaCallers précédemment dans cette procédure pas à pas.This property was automatically generated when you set the EnableVbaCallers property earlier in this walkthrough.

    Sub CreateTable()  
        Call ThisDocument.CallVSTOAssembly.CreateTable("Employee Name", "Start Date")  
    End Sub  
    
  5. Appuyez sur F5.Press F5.

  6. Vérifiez qu'une nouvelle table a été ajoutée au document.Verify that a new table was added to the document.

  7. Quittez Word sans enregistrer vos modifications.Exit Word without saving your changes.

Étapes suivantesNext steps

Pour en savoir plus sur l'appel de code dans les solutions Office à partir de VBA, consultez les rubriques suivantes :You can learn more about calling code in Office solutions from VBA in these topics:

Voir aussiSee also

Combiner VBA et personnalisations au niveau du document Combine VBA and document-level customizations
Programmer des personnalisations au niveau du document Program document-level customizations
Comment : exposer du code à VBA dans un projet Visual Basic How to: Expose code to VBA in a Visual Basic project
Comment : exposer du code à VBA dans un Visual C# projet How to: Expose code to VBA in a Visual C# project
Procédure pas à pas : Appeler du code à partir de VBA dans un Visual C# projetWalkthrough: Call code from VBA in a Visual C# project