Excel - Word makró - Excel tippek

Tartalomjegyzék

Köszönet Jake-nek, aki megadta az e heti Excel kérdést:

Hogyan írhatok olyan makrót, amely az Excel táblázatadatokat veszi és létrehoz egy Word fájlt minden adatsorhoz?

Jake - milyen nagyszerű ötlet! Gyakran vannak értékesítési eredményeim az egész vállalat számára, és nagyon jó lenne, ha minden képviselőnek csak az ő adatait küldhetném el Word-ben. Megteheti ezt a Wordből a Mail Merge használatával, de a Word vezérlése Excelből érdekes lehetőség. Az alábbi példa meglehetősen egyértelmű, de képes lenne erre a koncepcióra építeni, hogy meglehetősen fejlett alkalmazásokat hajtson végre.

Először vessünk egy pillantást egy minta adatkészletre. Létrehoztam egy munkafüzetet, két lapból - az egyik neve Data, a másik pedig a Template. Az Adat munkalap sok adatsort tartalmaz. A Sablon munkalap rendelkezik a létrehozni kívánt Word dokumentum felépítésével. Ebben az esetben át akarom másolni a nevet az adatbázis A oszlopából a sablon C4 cellájába. Az adatbázis B: E oszlopai a C10: C13 cellákba kerülnek.

Először vessünk egy pillantást egy minta adatkészletre. Létrehoztam egy munkafüzetet, két lapból - az egyik neve Data, a másik pedig a Template. Az Adat munkalap sok adatsort tartalmaz. A Sablon munkalap rendelkezik a létrehozni kívánt Word dokumentum felépítésével. Ebben az esetben át akarom másolni a nevet az adatbázis A oszlopából a sablon C4 cellájába. Az adatbázis B: E oszlopai a C10: C13 cellákba kerülnek.

Az adatlap
A sablonlap

Indítsa el a VB szerkesztőt az alt-F11 paranccsal. Mivel itt szeretnénk kiadni a Word parancsokat, válassza az Eszközök> Hivatkozások menüpontot. Görgessen lefelé a "Microsoft Word 8" megkereséséhez, és jelölje be a jelölőnégyzetet az elem kiválasztásához.

A Word Excelből történő vezérléséhez meg kell adnia egy változót, amely a Word alkalmazást ábrázolja. Az alábbi példában az appWD-t használtam. Az Excel makró bármely parancsához, amelyet alkalmazni kíván a Word alkalmazásra, egyszerűen előtagolja a parancsot az appWD paranccsal. Valójában, mivel még soha nem írtam egy sort sem a Word Macro kódból, odamentem a Word-hez, rögzítettem a műveleteket, majd átmásoltam ezt a kódot az Excel-be, és minden sor előtt felvettem az előtagot.

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

A makró futtatása után az adatlap minden adatsorához egy új Word fájl tartozik.

Még egyszer köszönöm Jake-nek ezt a nagyszerű kérdést. Számos olyan alkalmazás létezik, ahol a Word vezérlése az Excel belsejéből hatékony megoldást kínálhat.

érdekes cikkek...