Makronaredba Excel to Word - Excel savjeti

Sadržaj

Hvala Jakeu koji je pružio ovotjedno Excel pitanje:

Kako mogu napisati makronaredbu koja će uzimati podatke proračunske tablice programa Excel i stvoriti Word datoteku za svaki redak podataka?

Jake - kakva sjajna ideja! Često imam prodajne rezultate za cijelu tvrtku i bilo bi sjajno kad bih mogao svakom predstavniku poslati samo svoje podatke u Wordu. To biste mogli učiniti iz Word-a pomoću Spajanja pošte, ali upravljanje Wordom iz Excela zanimljiva je perspektiva. Primjer u nastavku prilično je jednostavan, ali netko bi se mogao nadovezati na ovaj koncept za izvođenje prilično naprednih aplikacija.

Prvo, pogledajmo uzorak skupa podataka. Stvorio sam radnu knjigu s dva lista - jedan pod nazivom Podaci i jedan pod nazivom Predložak. Radni list Podaci sadrži mnogo redaka podataka. Radni list Predložak ima strukturu Word dokumenta koji želim stvoriti. U ovom ću slučaju htjeti kopirati ime iz stupca A baze podataka u ćeliju C4 na predlošku. Stupci B: E baze podataka ići će u ćelije C10: C13.

Prvo, pogledajmo uzorak skupa podataka. Stvorio sam radnu knjigu s dva lista - jedan pod nazivom Podaci i jedan pod nazivom Predložak. Radni list Podaci sadrži mnogo redaka podataka. Radni list Predložak ima strukturu Word dokumenta koji želim stvoriti. U ovom ću slučaju htjeti kopirati ime iz stupca A baze podataka u ćeliju C4 na predlošku. Stupci B: E baze podataka ići će u ćelije C10: C13.

List podataka
Predložak

Pokrenite VB Editor s alt-F11. Budući da ovdje želimo izdati naredbe za Word, idite na Alati> Reference. Pomaknite se prema dolje da biste pronašli "Microsoft Word 8" i potvrdite okvir pored da biste odabrali ovu stavku.

Da biste kontrolirali Word iz Excela, trebate definirati varijablu koja će predstavljati program Word. U donjem primjeru koristio sam appWD. Za bilo koje naredbe u makronaredbi Excel koje želite primijeniti na program Word jednostavno naredbi stavite prefiks s appWD. Zapravo, s obzirom da nikada prije nisam napisao redak makronaredbe programa Word, otišao sam u Word, snimio radnje, a zatim kopirao taj kôd u Excel dodajući prefiks prije svakog retka.

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

Nakon pokretanja ove makronaredbe imat ćete jednu novu Word datoteku za svaki red podataka na vašem podatkovnom listu.

Još jednom hvala Jakeu na ovom sjajnom pitanju. Postoji mnogo aplikacija u kojima bi nadzor nad Wordom iz Excela mogao pružiti moćno rješenje.

Zanimljivi članci...