Excel uz Word makro - Excel padomi

Satura rādītājs

Paldies Džeikam, kurš iesniedza šīs nedēļas Excel jautājumu:

Kā es varu uzrakstīt makro, kas ņems Excel izklājlapas datus un izveidos Word failu katrai datu rindai?

Džeiks - cik lieliska ideja! Man bieži ir pārdošanas rezultāti par visu uzņēmumu, un būtu lieliski, ja es varētu katram pārstāvim nosūtīt tikai savu informāciju Word. Jūs to varētu izdarīt no Word, izmantojot Pasta sapludināšanu, taču Word vadība no Excel ir interesanta iespēja. Tālāk sniegtais piemērs ir diezgan vienkāršs, taču, pamatojoties uz šo koncepciju, varētu veikt diezgan progresīvas lietojumprogrammas.

Vispirms apskatīsim datu kopas paraugu. Es izveidoju darbgrāmatu ar divām loksnēm - vienu saucu Dati un otru - Veidne. Datu darblapā ir daudz datu rindu. Veidnes darblapā ir izveidota Word dokumenta struktūra. Šajā gadījumā es vēlos kopēt nosaukumu no datu bāzes A slejas uz veidnes šūnu C4. Datu bāzes kolonnas B: E tiks ievadītas šūnās C10: C13.

Vispirms apskatīsim datu kopas paraugu. Es izveidoju darbgrāmatu ar divām loksnēm - vienu saucu Dati un otru - Veidne. Datu darblapā ir daudz datu rindu. Veidnes darblapā ir izveidota Word dokumenta struktūra. Šajā gadījumā es vēlos kopēt nosaukumu no datu bāzes A slejas uz veidnes šūnu C4. Datu bāzes kolonnas B: E tiks ievadītas šūnās C10: C13.

Datu lapa
Veidņu lapa

Sāciet VB redaktoru ar alt-F11. Tā kā mēs šeit vēlamies izdot Word komandas, dodieties uz Rīki> Atsauces. Ritiniet uz leju, lai atrastu "Microsoft Word 8", un atzīmējiet izvēles rūtiņu blakus, lai atlasītu šo vienumu.

Lai vadītu Word no Excel, jums jānosaka mainīgais, kas pārstāv Word lietojumprogrammu. Tālāk sniegtajā piemērā es izmantoju appWD. Visām komandām Excel makro, kuras vēlaties lietot Word lietojumprogrammai, komandu vienkārši jāpievieno prefiksam appWD. Patiesībā, tā kā es nekad iepriekš neesmu rakstījis Word Macro koda rindiņu, es devos uz Word, ierakstīju darbības, pēc tam kopēju šo kodu programmā Excel, pievienojot prefiksu pirms katras rindiņas.

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ēc šī makro palaišanas katrai datu lapas rindai jums būs viens jauns Word fails.

Vēlreiz paldies Džeikam par šo lielisko jautājumu. Ir daudz lietojumprogrammu, kurās Word kontrolēšana no Excel iekšpuses varētu nodrošināt spēcīgu risinājumu.

Interesanti raksti...