Contrôle d'une application Microsoft Office à partir d'une autre
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.
Pour exécuter le code
Définissez une référence vers la bibliothèque de types de l’autre application dans la boîte de dialogue Références (menu Outils). Ensuite, les objets, les propriétés et les méthodes s’affichent dans l’Explorateur d’objets et la syntaxe est vérifiée au moment de la compilation. Une aide contextuelle est disponible pour chaque objet, propriété et méthode.
Déclarez les variables objet qui feront référence aux objets de l'autre application en tant que types spécifiques. Veillez à qualifier chaque type à l'aide du nom de l'application dont l'objet est issu. 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 :
Dim appWD As Word.Application, wbXL As Excel.Workbook
Note Vous devez suivre les étapes précédentes si vous souhaitez que votre code soit lié en amont.
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. Pour voir la session de l'autre application, définissez la propriété Visible sur True.
Dim appWD As Word.Application Set appWD = CreateObject("Word.Application") appWd.Visible = True
Appliquez les propriétés et les méthodes à l'objet contenu dans la variable. Par exemple, l'instruction suivante crée un document Word.
Dim appWD As Word.Application Set appWD = CreateObject("Word.Application") appWD.Documents.Add
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.
appWd.Quit Set appWd = Nothing
Exemple de code fourni par : Bill Jelen, MrExcel.com L’exemple de code suivant crée un fichier de Word Microsoft Office pour chaque ligne de données d’une feuille de calcul.
' 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 : Dennis Wallentin, VSTO & .NET & Excel Cet exemple prend les valeurs de cellules d’une plage nommée, W_Data, qui contient trois valeurs et les insère dans un document Word. Les valeurs sont insérées aux emplacements signet nommés td1, td2 et 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. Vous devez disposer d’un document Word nommé Test.docx enregistré au même endroit que le classeur Excel, et ce document Word doit comporter trois signets nommés td1, td2 et 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 collaborateurs
MVP Bill Jelen est l’auteur de plus de deux douzaines livres sur 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.
Dennis Wallentin est l’auteur de VSTO & .NET & Excel, un blog consacré aux solutions .NET Framework pour Excel et 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) ».
Assistance et commentaires
Avez-vous des questions ou des commentaires sur Office VBA ou sur cette 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.
Commentaires
https://aka.ms/ContentUserFeedback.
Bientôt disponible : Tout au long de 2024, nous allons supprimer progressivement GitHub Issues comme mécanisme de commentaires pour le contenu et le remplacer par un nouveau système de commentaires. Pour plus d’informations, consultezEnvoyer et afficher des commentaires pour