Excel To Word Macro - Sfaturi Excel

Cuprins

Mulțumim lui Jake care a furnizat întrebarea Excel din această săptămână:

Cum pot scrie o macrocomandă care va prelua datele din foaia de calcul Excel și va crea un fișier Word pentru fiecare rând de date?

Jake - ce idee grozavă! De multe ori am rezultate în vânzări pentru întreaga companie și ar fi minunat să pot trimite fiecărui reprezentant doar informațiile sale în Word. Ați putea face acest lucru din Word folosind Mail Merge, dar controlul Word din Excel este o perspectivă interesantă. Exemplul de mai jos este destul de simplu, dar cineva ar putea să se bazeze pe acest concept pentru a face aplicații destul de avansate.

În primul rând, să aruncăm o privire la un exemplu de set de date. Am creat un registru de lucru cu două foi - una numită Date și una numită Șablon. Foaia de lucru Date conține multe rânduri de date. Foaia de lucru Șablon are structura documentului Word pe care vreau să îl creez. În acest caz, voi dori să copiez numele din coloana A a bazei de date în celula C4 de pe șablon. Coloanele B: E ale bazei de date vor merge în celulele C10: C13.

În primul rând, să aruncăm o privire la un exemplu de set de date. Am creat un registru de lucru cu două foi - una numită Date și una numită Șablon. Foaia de lucru Date conține multe rânduri de date. Foaia de lucru Șablon are structura documentului Word pe care vreau să îl creez. În acest caz, voi dori să copiez numele din coloana A a bazei de date în celula C4 de pe șablon. Coloanele B: E ale bazei de date vor merge în celulele C10: C13.

Fișa tehnică
Foaia de șabloane

Porniți Editorul VB cu alt-F11. Întrucât dorim să emitem comenzi Word aici, accesați Instrumente> Referințe. Derulați în jos pentru a găsi „Microsoft Word 8” și bifați caseta de lângă pentru a selecta acest element.

Pentru a controla Word din Excel, trebuie să definiți o variabilă care să reprezinte aplicația Word. În exemplul de mai jos, am folosit appWD. Pentru orice comenzi din Macro Excel pe care doriți să le aplicați aplicației Word, pur și simplu prefixați comanda cu appWD. De fapt, întrucât nu am mai scris niciodată o linie de cod Word Macro, am mers la Word, am înregistrat acțiunile, apoi am copiat codul în Excel, adăugând prefixul înaintea fiecărei linii.

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

După ce rulați această macrocomandă, veți avea un fișier Word nou pentru fiecare rând de date din foaia dvs. de date.

Mulțumesc din nou lui Jake pentru această întrebare minunată. Există multe aplicații în care controlul Word din interiorul Excel ar putea oferi o soluție puternică.

Articole interesante...