Eric dispose d’une base de données Excel contenant des informations sur l’entreprise. Il souhaite utiliser une macro Excel pour copier des adresses et des informations de la base de données dans différents documents Word. Eric est curieux de savoir comment il peut faire en sorte qu’une macro Excel ouvre un document Word spécifique dans lequel les informations seront collées.

Une façon d’accomplir cette tâche est de ne pas utiliser Excel. Utilisez plutôt la fonctionnalité de publipostage de Word pour extraire des informations d’une base de données Excel.

Cette approche fonctionne mieux si vous créez un document à partir d’informations bien définies. Si, cependant, vous devez ouvrir une série de documents et copier les données de la base de données Excel dans les documents, le publipostage ne fera pas l’affaire.

Word a un nom spécial pour utiliser des macros pour travailler avec différentes applications Office: Office Automation. La création de macros Office Automation est un peu plus complexe que la création d’une macro qui fonctionnera uniquement dans une application spécifique, telle qu’Excel. L’une des choses que vous souhaiterez peut-être faire est de télécharger un fichier d’aide gratuit contenant de nombreuses informations sur les applications Office Automation. Vous pouvez télécharger le fichier sur la page Microsoft suivante:

http://support.microsoft.com/kb/302460

La procédure de base pour ouvrir un document Word à partir d’une macro Excel consiste à créer un objet qui fait référence à l’application Word, puis à utiliser cet objet pour ouvrir le document. Le code suivant illustre ce concept:

Sub OpenWord()

Dim wdApp As Object     Dim wdDoc As Object     Set wdApp = CreateObject("Word.application")

Set wdDoc = wdApp.Documents.Open _       (FileName:="C:\Path\myTestDoc.doc")



' put your code here for working with Word ' This is Word VBA code, not Excel code

wdDoc.Close savechanges:=False     Set wdDoc = Nothing     wdApp.Quit     Set wdApp = Nothing End Sub

Vous devrez modifier le chemin d’accès et le nom du document du document que vous souhaitez ouvrir, mais ce code montre très bien ce qui doit être fait pour ouvrir le document. Tel qu’il est écrit, le document Word (en fait, l’ensemble de l’application Word) ne sera pas visible à l’écran. Si vous préférez que l’application soit visible, vous devez utiliser cette ligne de code vers le début de la macro:

wdApp.Visible = True

Une autre approche pour travailler avec un fichier Word à partir de votre macro Excel consiste à utiliser DDE et la fonction SendKeys pour copier les informations.

Considérez la commande DDE suivante:

ChannelNumber=Application.DDEInitiate{ _   app:="WinWord", topic:=FullPath

La méthode DDEInitiate utilise deux propriétés: app et topic. La propriété app indique l’application que vous ouvrez via DDE. Des exemples typiques pourraient être « calc » pour la calculatrice ou « WinWord » (dans ce cas)

pour l’application Word. La propriété de rubrique indique le chemin complet du fichier de document que vous ouvrez. Dans ce cas, le chemin d’accès complet est contenu dans la variable FullPath.

En utilisant cette méthode, vous pouvez ouvrir un document, puis utiliser SendKeys pour copier des informations dans ce document:

Sub PasteExcel2Word()

Dim channelNumber As String  'Application Handle     Dim FullPath As String

FullPath = 'C:\MyFolder\MyFile.Doc'     'Replace above with a file or loop of files

Selection.Copy  'Assumes you hilighted what you want copied

channelNumber = Application.DDEInitiate( _       app:="WinWord", topic:=FullPath     SendKeys "^v", False

Application.DDETerminate channelNumber End Sub

La méthode Copy est utilisée pour copier des informations dans le Presse-papiers, puis SendKeys utilise ^ v (Ctrl + V) pour coller les informations dans le Word documenté ouvert à l’aide de DDEInitiate.

_Note: _

Si vous souhaitez savoir comment utiliser les macros décrites sur cette page (ou sur toute autre page des sites ExcelTips), j’ai préparé une page spéciale qui comprend des informations utiles.

lien: / excelribbon-ExcelTipsMacros [Cliquez ici pour ouvrir cette page spéciale dans un nouvel onglet de navigateur].

ExcelTips est votre source pour une formation Microsoft Excel rentable.

Cette astuce (2423) s’applique à Microsoft Excel 97, 2000, 2002 et 2003.