Excel til Word-makro - Excel-tip

Indholdsfortegnelse

Tak til Jake, der leverede denne uges Excel-spørgsmål:

Hvordan kan jeg skrive en makro, der tager Excel-regnearkdata og opretter en Word-fil for hver række data?

Jake - hvad en god idé! Jeg har ofte salgsresultater for hele virksomheden, og det ville være dejligt at kunne sende hver repræsentant bare hans eller hendes oplysninger i Word. Du kan gøre dette fra Word ved hjælp af Mail Merge, men det er interessant at kontrollere Word fra Excel. Eksemplet nedenfor er ret ligetil, men man kunne bygge videre på dette koncept til at gøre ret avancerede applikationer.

Lad os først se på et eksempeldatasæt. Jeg oprettede en projektmappe med to ark - et kaldet Data og et kaldet skabelon. Data-regnearket har mange rækker med data. Skabelonarket har strukturen i det Word-dokument, som jeg vil oprette. I dette tilfælde vil jeg gerne kopiere navnet fra kolonne A i databasen til celle C4 på skabelonen. Kolonne B: E i databasen går i celler C10: C13.

Lad os først se på et eksempeldatasæt. Jeg oprettede en projektmappe med to ark - et kaldet Data og et kaldet skabelon. Data-regnearket har mange rækker med data. Skabelonarket har strukturen i det Word-dokument, som jeg vil oprette. I dette tilfælde vil jeg gerne kopiere navnet fra kolonne A i databasen til celle C4 på skabelonen. Kolonne B: E i databasen går i celler C10: C13.

Dataarket
Skabelonarket

Start VB Editor med alt-F11. Da vi vil udstede Word-kommandoer her, skal du gå til Værktøjer> Referencer. Rul ned for at finde "Microsoft Word 8" og markér afkrydsningsfeltet ud for at vælge dette emne.

For at kontrollere Word fra Excel skal du definere en variabel, der repræsenterer Word-applikationen. I eksemplet nedenfor brugte jeg appWD. For alle kommandoer i Excel-makroen, som du vil anvende til Word-applikationen, skal du blot prefikse kommandoen med appWD. Faktisk, da jeg aldrig før har skrevet en linje med Word-makro-kode, gik jeg til Word, registrerede handlingerne og kopierede derefter koden til Excel og tilføjede præfikset før hver linje.

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

Når du har kørt denne makro, har du en ny Word-fil for hver række data på dit datablad.

Tak igen til Jake for dette store spørgsmål. Der er mange applikationer, hvor styring af Word indefra i Excel kan give en effektiv løsning.

Interessante artikler...