Macro Excel vers Word - Conseils Excel

Table des matières

Merci à Jake qui a fourni la question Excel de cette semaine:

Comment puis-je écrire une macro qui prendra les données de la feuille de calcul Excel et créer un fichier Word pour chaque ligne de données?

Jake - quelle bonne idée! J'ai souvent des résultats de ventes pour toute l'entreprise et ce serait formidable de pouvoir envoyer à chaque représentant uniquement ses informations dans Word. Vous pouvez le faire à partir de Word en utilisant le publipostage, mais contrôler Word à partir d'Excel est une perspective intéressante. L'exemple ci-dessous est assez simple, mais on pourrait s'appuyer sur ce concept pour faire des applications assez avancées.

Tout d'abord, jetons un coup d'œil à un exemple d'ensemble de données. J'ai créé un classeur avec deux feuilles - une appelée Données et une appelée Modèle. La feuille de calcul Données contient de nombreuses lignes de données. La feuille de calcul modèle a la structure du document Word que je souhaite créer. Dans ce cas, je souhaite copier le nom de la colonne A de la base de données dans la cellule C4 du modèle. Les colonnes B: E de la base de données iront dans les cellules C10: C13.

Tout d'abord, jetons un coup d'œil à un exemple d'ensemble de données. J'ai créé un classeur avec deux feuilles - une appelée Données et une appelée Modèle. La feuille de calcul Données contient de nombreuses lignes de données. La feuille de calcul modèle a la structure du document Word que je souhaite créer. Dans ce cas, je souhaite copier le nom de la colonne A de la base de données dans la cellule C4 du modèle. Les colonnes B: E de la base de données iront dans les cellules C10: C13.

La fiche technique
La feuille de modèle

Démarrez l'éditeur VB avec alt-F11. Puisque nous voulons émettre des commandes Word ici, allez dans Outils> Références. Faites défiler vers le bas pour trouver «Microsoft Word 8» et cochez la case à côté pour sélectionner cet élément.

Pour contrôler Word à partir d'Excel, vous devez définir une variable pour représenter l'application Word. Dans l'exemple ci-dessous, j'ai utilisé appWD. Pour toutes les commandes de la macro Excel que vous souhaitez appliquer à l'application Word, vous préfixez simplement la commande avec appWD. En fait, comme je n'ai jamais écrit une ligne de code Word Macro auparavant, je suis allé dans Word, j'ai enregistré les actions, puis copié ce code dans Excel, en ajoutant le préfixe avant chaque ligne.

Sub ControlWord() ' You must pick Microsoft Word 8.0 from Tools>References ' in the VB editor to execute Word commands. ' See VB Help topic "Controlling One Microsoft Office Application from Another" ' for more information. ' Originally published by www.MrExcel.com 2/28/1999 Dim appWD As Word.Application ' Create a new instance of Word & make it visible Set appWD = CreateObject("Word.Application.8") appWD.Visible = True Sheets("Data").Select 'Find the last row with data in the database FinalRow = Range("A9999").End(xlUp).Row For i = 2 To FinalRow Sheets("Data").Select ' Copy the name to cell C4 Range("A" & i).Copy Destination:=Sheets("Template").Range("C4") ' Copy data columns, transpose and paste in C10:C13 Range("B" & i & ":E" & i).Copy Sheets("Template").Select Range("C10").PasteSpecial Transpose:=True ' Copy the data for the new document to the clipboard Range("A1:F15").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 this new word document appWD.ActiveDocument.Close Next i ' Close the Word application appWD.Quit End Sub

Après avoir exécuté cette macro, vous aurez un nouveau fichier Word pour chaque ligne de données de votre feuille de données.

Merci encore à Jake pour cette excellente question. Il existe de nombreuses applications où le contrôle de Word depuis l'intérieur d'Excel pourrait fournir une solution puissante.

Articles intéressants...