Excelist Wordi makro - Exceli näpunäited

Lang L: none (table-of-contents)

Täname Jake'i, kes esitas selle nädala Exceli küsimuse:

Kuidas saab kirjutada makro, mis võtab Exceli arvutustabeli andmed ja loob igale andmereale Wordi faili?

Jake - kui tore idee! Mul on sageli kogu ettevõtte müügitulemused ja oleks tore, kui saaksin igale esindajale Wordis lihtsalt tema andmed saata. Seda võiksite teha Wordi abil, kasutades Mail Merge'i, kuid Wordi juhtimine Exceli kaudu on huvitav väljavaade. Allpool toodud näide on üsna lihtne, kuid sellele kontseptsioonile saaks tugineda üsna arenenud rakenduste tegemiseks.

Kõigepealt vaatame näidisandmekomplekti. Lõin töövihiku, millel oli kaks lehte - üks nimega Data ja teine ​​nimega mall. Andmelehel on palju andmeridu. Töölehel Mall on Wordi dokumendi struktuur, mille ma tahan luua. Sellisel juhul soovin nime kopeerida andmebaasi veerust A malli C4 lahtrisse. Andmebaasi veerud B: E lähevad lahtritesse C10: C13.

Kõigepealt vaatame näidisandmekomplekti. Lõin töövihiku, millel oli kaks lehte - üks nimega Data ja teine ​​nimega mall. Andmelehel on palju andmeridu. Töölehel Mall on Wordi dokumendi struktuur, mille ma tahan luua. Sellisel juhul soovin nime kopeerida andmebaasi veerust A malli C4 lahtrisse. Andmebaasi veerud B: E lähevad lahtritesse C10: C13.

Andmeleht
Mallileht

Käivitage VB-redaktor alt-F11-ga. Kuna me tahame siin Wordi käske välja anda, valige Tööriistad> Viited. Kerige alla, et leida "Microsoft Word 8", ja märkige selle üksuse valimiseks märkeruut.

Wordi juhtimiseks Exceli kaudu peate määrama muutuja, mis esindab Wordi rakendust. Allpool toodud näites kasutasin rakendust appWD. Kõigi Exceli makro käskude jaoks, mille soovite rakendusele Word rakendada, lisage käsk lihtsalt appWD-ga. Tegelikult, kuna ma pole kunagi varem Wordi makrokoodi rida kirjutanud, läksin Wordi, salvestasin toimingud ja kopeerisin selle koodi Excelisse, lisades iga rea ​​ette eesliite.

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

Pärast selle makro käivitamist on teie andmelehel iga uue rea kohta üks uus Word-fail.

Täname veel kord Jaket selle toreda küsimuse eest. On palju rakendusi, kus Wordi juhtimine Exceli seest võib pakkuda võimsa lahenduse.

Huvitavad Artiklid...