Makro Excel - Word - Tipy pre Excel

Obsah

Ďakujeme Jakeovi, ktorý tento týždeň poskytol otázku o programe Excel:

Ako môžem napísať makro, ktoré vezme údaje tabuľky programu Excel a vytvorí súbor Word pre každý riadok údajov?

Jake - aký skvelý nápad! Často mám predajné výsledky za celú spoločnosť a bolo by skvelé, keby som mohol každému zástupcovi posielať iba jeho alebo jej informácie v programe Word. Môžete to urobiť z Wordu pomocou hromadnej korešpondencie, ale ovládanie Wordu z Excelu je zaujímavá vyhliadka. Nižšie uvedený príklad je celkom priamy, ale bolo by možné na tomto koncepte stavať aj dosť pokročilé aplikácie.

Najskôr sa pozrime na ukážkovú množinu údajov. Vytvoril som zošit s dvoma hárkami - jedným s názvom Data a druhým s názvom Template. Pracovný list s údajmi obsahuje veľa riadkov údajov. Pracovný list Šablóna má štruktúru dokumentu Word, ktorý chcem vytvoriť. V takom prípade budem chcieť skopírovať názov zo stĺpca A databázy do bunky C4 na šablóne. Stĺpce B: E databázy sa dostanú do buniek C10: C13.

Najskôr sa pozrime na ukážkovú množinu údajov. Vytvoril som zošit s dvoma hárkami - jedným s názvom Data a druhým s názvom Template. Pracovný list s údajmi obsahuje veľa riadkov údajov. Pracovný list Šablóna má štruktúru dokumentu Word, ktorý chcem vytvoriť. V takom prípade budem chcieť skopírovať názov zo stĺpca A databázy do bunky C4 na šablóne. Stĺpce B: E databázy sa dostanú do buniek C10: C13.

Údajový list
Šablóna

Spustite editor VB pomocou alt-F11. Pretože tu chceme vydávať príkazy Wordu, choďte na Nástroje> Referencie. Posuňte zobrazenie nadol, aby ste našli „Microsoft Word 8“, a začiarknite políčko vedľa tejto položky.

Ak chcete ovládať Word z Excelu, musíte definovať premennú, ktorá bude reprezentovať aplikáciu Word. V príklade nižšie som použil appWD. Pre všetky príkazy v makre programu Excel, ktoré chcete použiť v aplikácii Word, stačí pred príkaz vložiť príkaz appWD. V skutočnosti, pretože som nikdy predtým nenapísal riadok kódu Word Word, prešiel som do Wordu, zaznamenal som akcie, potom som tento kód skopíroval do Excelu a pred každý riadok pridal predponu.

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

Po spustení tohto makra budete mať vo svojom údajovom liste jeden nový súbor programu Word pre každý riadok údajov.

Ešte raz Jakeovi ďakujem za túto skvelú otázku. Existuje mnoho aplikácií, kde by ovládanie Wordu z Excelu mohlo poskytnúť efektívne riešenie.

Zaujímavé články...