Excel-zu-Word-Makro - Excel-Tipps

Inhaltsverzeichnis

Vielen Dank an Jake, der die Excel-Frage dieser Woche gestellt hat:

Wie kann ich ein Makro schreiben, das Excel-Tabellenkalkulationsdaten verwendet und für jede Datenzeile eine Word-Datei erstellt?

Jake - was für eine großartige Idee! Ich habe oft Verkaufsergebnisse für das gesamte Unternehmen und es wäre großartig, wenn jeder Mitarbeiter nur seine Informationen in Word senden könnte. Sie können dies von Word aus mit Seriendruck tun, aber die Steuerung von Word von Excel aus ist eine interessante Perspektive. Das folgende Beispiel ist ziemlich einfach, aber man könnte auf diesem Konzept aufbauen, um ziemlich fortgeschrittene Anwendungen auszuführen.

Schauen wir uns zunächst einen Beispieldatensatz an. Ich habe eine Arbeitsmappe mit zwei Blättern erstellt - einem mit dem Namen Daten und einem mit dem Namen Vorlage. Das Datenarbeitsblatt enthält viele Datenzeilen. Das Arbeitsblatt Vorlage hat die Struktur des Word-Dokuments, das ich erstellen möchte. In diesem Fall möchte ich den Namen aus Spalte A der Datenbank in Zelle C4 der Vorlage kopieren. Die Spalten B: E der Datenbank befinden sich in den Zellen C10: C13.

Schauen wir uns zunächst einen Beispieldatensatz an. Ich habe eine Arbeitsmappe mit zwei Blättern erstellt - einem mit dem Namen Daten und einem mit dem Namen Vorlage. Das Datenarbeitsblatt enthält viele Datenzeilen. Das Arbeitsblatt Vorlage hat die Struktur des Word-Dokuments, das ich erstellen möchte. In diesem Fall möchte ich den Namen aus Spalte A der Datenbank in Zelle C4 der Vorlage kopieren. Die Spalten B: E der Datenbank befinden sich in den Zellen C10: C13.

Das Datenblatt
Das Vorlagenblatt

Starten Sie den VB-Editor mit Alt-F11. Da wir hier Word-Befehle ausgeben möchten, gehen Sie zu Extras> Referenzen. Scrollen Sie nach unten, um "Microsoft Word 8" zu finden, und aktivieren Sie das Kontrollkästchen neben, um dieses Element auszuwählen.

Um Word von Excel aus zu steuern, müssen Sie eine Variable definieren, die die Word-Anwendung darstellt. Im folgenden Beispiel habe ich appWD verwendet. Für alle Befehle im Excel-Makro, die Sie auf die Word-Anwendung anwenden möchten, stellen Sie dem Befehl einfach appWD voran. Da ich noch nie zuvor eine Zeile mit Word-Makrocode geschrieben habe, bin ich zu Word gegangen, habe die Aktionen aufgezeichnet und diesen Code dann in Excel kopiert und vor jeder Zeile das Präfix hinzugefügt.

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

Nachdem Sie dieses Makro ausgeführt haben, haben Sie eine neue Word-Datei für jede Datenzeile in Ihrem Datenblatt.

Nochmals vielen Dank an Jake für diese tolle Frage. Es gibt viele Anwendungen, in denen die Steuerung von Word innerhalb von Excel eine leistungsstarke Lösung darstellen könnte.

Interessante Beiträge...