Contrôle d'une application Microsoft Office à partir d'une autreControlling One Microsoft Office Application from Another

Pour exécuter du code dans une application Microsoft Office fonctionnant avec les objets d'une autre application, suivez les étapes décrites ci-dessous.If you want to run code in one Microsoft Office application that works with the objects in another application, follow these steps.

Pour exécuter le codeTo run the code

  1. Définissez une référence à la bibliothèque de types de l’autre application dans la boîte de dialogue références (menuOutils ).Set a reference to the other application's type library in the References dialog box (Tools menu). Ensuite, les objets, propriétés et méthodes apparaissent dans l’Explorateur d’objets et la syntaxe est vérifiée au moment de la compilation.Then, the objects, properties, and methods will appear in the Object Browser and the syntax will be checked at compile time. Une aide contextuelle est disponible pour chaque objet, propriété et méthode.You can also get context-sensitive Help on them.

  2. Déclarez les variables objet qui feront référence aux objets de l'autre application en tant que types spécifiques.Declare object variables that will refer to the objects in the other application as specific types. Veillez à qualifier chaque type à l'aide du nom de l'application dont l'objet est issu.Qualify each type with the name of the application that is supplying the object. Par exemple, l'instruction suivante déclare une variable pointant vers un document Microsoft Word et une autre qui fait référence à un classeur Microsoft Excel :For example, the following statement declares a variable that points to a Microsoft Word document and another that refers to a Microsoft Excel workbook.

      Dim appWD As Word.Application, wbXL As Excel.Workbook
    

    Remarque Suivez les étapes ci-dessus si vous souhaitez que votre code utilise la liaison anticipée.Note You must follow the preceding steps if you want your code to be early bound.

  3. Utilisez la fonction CreateObject avec les Identificateurs de programmation OLE de l'objet avec lequel vous souhaitez travailler dans l'autre application, comme l'indique l'exemple suivant.Use the CreateObject function with the OLE Programmatic Identifiers of the object you want to work with in the other application, as shown in the following example. Pour voir la session de l'autre application, définissez la propriété Visible sur True.To see the session of the other application, set the Visible property to True.

      Dim appWD As Word.Application 
    
    Set appWD = CreateObject("Word.Application") 
    appWd.Visible = True
    
  4. Appliquez les propriétés et les méthodes à l'objet contenu dans la variable.Apply properties and methods to the object contained in the variable. Par exemple, l'instruction suivante crée un document Word.For example, the following instruction creates a new Word document.

    Dim appWD As Word.Application 
    
    Set appWD = CreateObject("Word.Application") 
    appWD.Documents.Add
    
  5. Lorsque vous avez terminé de travailler dans l'autre application, utilisez la méthode Quit pour la fermer, puis définissez sa variable d'objet sur Nothing pour libérer la mémoire qu'elle utilise, comme l'indique l'exemple suivant.When finished working with the other application, use the Quit method to close it, and then set its object variable to Nothing to free any memory it is using, as shown in the following example.

    appWd.Quit 
    Set appWd = Nothing
    

Exemple de code fourni par: Bill Jelen, MrExcel.com l’exemple de code suivant crée un nouveau fichier Microsoft Office Word pour chaque ligne de données d’une feuille de calcul.Sample code provided by: Bill Jelen, MrExcel.com The following code example creates a new Microsoft Office Word file for each row of data in a spreadsheet.

' You must pick Microsoft Word Object Library from Tools>References
' in the VB editor to execute Word commands.
Sub ControlWord()
    Dim appWD As Word.Application
    ' Create a new instance of Word and make it visible
    Set appWD = CreateObject("Word.Application.12")
    appWD.Visible = True

    ' Find the last row with data in the spreadsheet
    FinalRow = Range("A9999").End(xlUp).Row
    For i = 1 To FinalRow
        ' Copy the current row
        Worksheets("Sheet1").Rows(i).Copy
        ' Tell Word to create a new document
        appWD.Documents.Add
        ' Tell Word to paste the contents of the clipboard into the new document.
        appWD.Selection.Paste
        ' Save the new document with a sequential file name.
        appWD.ActiveDocument.SaveAs Filename:="File" & i
        ' Close the new Word document.
        appWD.ActiveDocument.Close
    Next i
    ' Close the Word application.
    appWD.Quit
End Sub

Exemple de code fourni par: Denis Wallentin, VSTO & .net & Excel cet exemple montre comment prendre les valeurs des cellules d’une plage nommée, W_Data, qui contient trois valeurs et comment les insérer dans un document Word.Sample code provided by: Dennis Wallentin, VSTO & .NET & Excel This example takes the cells values from a named range, W_Data, that contains three values and inserts those values into a Word document. Les valeurs sont insérées à l’emplacement désigné par le signet TD1, TD2et TD3.The values are inserted at bookmarked locations named td1, td2, and td3. Pour exécuter cet exemple, vous devez disposer d'une plage nommée W_Data qui contient trois valeurs dans l'onglet Feuil1 du classeur.For this example to run, you must have a range named W_Data that contains three values on Sheet1 in the workbook. Vous devez disposer d’un document Word nommé test. docx enregistré au même emplacement que le classeur Excel, et le document Word doit avoir trois signets nommés TD1, TD2et TD3.You must have a Word document named Test.docx saved in the same location as the Excel workbook, and the Word document must have three bookmarks named td1, td2, and td3.

' You must pick Microsoft Word Object Library from Tools>References
' in the Visual Basic editor to execute Word commands.

Option Explicit

Sub Add_Single_Values_Word()
Dim wdApp As Word.Application
Dim wdDoc As Word.Document
Dim wdRange1 As Word.Range
Dim wdRange2 As Word.Range
Dim wdRange3 As Word.Range

Dim wbBook As Workbook
Dim wsSheet As Worksheet

Dim vaData As Variant

Set wbBook = ThisWorkbook
Set wsSheet = wbBook.Worksheets("Sheet1")

vaData = wsSheet.Range("W_Data").Value

' Instantiate the Word Objects.
Set wdApp = New Word.Application
Set wdDoc = wdApp.Documents.Open(wbBook.Path & "\Test.docx")

With wdDoc
    Set wdRange1 = .Bookmarks("td1").Range
    Set wdRange2 = .Bookmarks("td2").Range
    Set wdRange3 = .Bookmarks("td3").Range
End With

' Write values to the bookmarks.
wdRange1.Text = vaData(1, 1)
wdRange2.Text = vaData(2, 1)
wdRange3.Text = vaData(3, 1)

With wdDoc
    .Save
    .Close
End With

wdApp.Quit

' Release the objects from memory.
Set wdRange1 = Nothing
Set wdRange2 = Nothing
Set wdRange3 = Nothing
Set wdDoc = Nothing
Set wdApp = Nothing

End Sub

À propos des collaborateursAbout the Contributors

MVP Bill Jelen est l’auteur de plus de deux douzaines livres sur Microsoft Excel.MVP Bill Jelen is the author of more than two dozen books about Microsoft Excel. Il est invité régulièrement sur TechTV avec Leo Laporte et il est l’hôte de MrExcel.com qui inclut plus de 300 000 questions et réponses sur Excel.He is a regular guest on TechTV with Leo Laporte and is the host of MrExcel.com, which includes more than 300,000 questions and answers about Excel.

Dennis Wallentin est l’auteur de VSTO & .NET & Excel, un blog consacré aux solutions .NET Framework pour Excel et Excel Services.Dennis Wallentin is the author of VSTO & .NET & Excel, a blog that focuses on .NET Framework solutions for Excel and Excel Services. Dennis développe des solutions Excel depuis plus de 20 ans et a également co-écrit « Professional Excel Development: The Definitive Guide to Developing Applications Using Microsoft Excel, VBA and .NET (2nd Edition) ».Dennis has been developing Excel solutions for over 20 years and is also the coauthor of "Professional Excel Development: The Definitive Guide to Developing Applications Using Microsoft Excel, VBA and .NET (2nd Edition)."

Assistance et commentairesSupport and feedback

Avez-vous des questions ou des commentaires sur Office VBA ou sur cette documentation ?Have questions or feedback about Office VBA or this documentation? Consultez la rubrique concernant l’assistance pour Office VBA et l’envoi de commentaires afin d’obtenir des instructions pour recevoir une assistance et envoyer vos commentaires.Please see Office VBA support and feedback for guidance about the ways you can receive support and provide feedback.