Makro za Excel v besedo - nasveti za Excel

Kazalo

Zahvaljujemo se Jakeu, ki je ta teden ponudil vprašanje za Excel:

Kako lahko napišem makro, ki bo zajemal podatke iz preglednice Excel in ustvaril datoteko Word za vsako vrstico podatkov?

Jake - kako dobra ideja! Pogosto imam prodajne rezultate za celotno podjetje in bilo bi super, če bi lahko vsakemu predstavniku poslal le svoje podatke v Wordu. To lahko storite iz Worda z uporabo storitve Merge Mail, vendar je nadzor nad Wordom iz Excela zanimiva možnost. Spodnji primer je dokaj enostaven, vendar bi lahko na tem konceptu gradili dokaj napredne aplikacije.

Najprej si oglejmo vzorec nabora podatkov. Ustvaril sem delovni zvezek z dvema listoma - enim, imenovanim Podatki, in drugim, imenovanim Predloga. Delovni list Data vsebuje veliko vrstic podatkov. Delovni list Predloga ima strukturo Wordovega dokumenta, ki ga želim ustvariti. V tem primeru bom želel kopirati ime iz stolpca A baze podatkov v celico C4 na predlogi. Stolpci B: E baze podatkov bodo v celicah C10: C13.

Najprej si oglejmo vzorec nabora podatkov. Ustvaril sem delovni zvezek z dvema listoma - enim, imenovanim Podatki, in drugim, imenovanim Predloga. Delovni list Data vsebuje veliko vrstic podatkov. Delovni list Predloga ima strukturo Wordovega dokumenta, ki ga želim ustvariti. V tem primeru bom želel kopirati ime iz stolpca A baze podatkov v celico C4 na predlogi. Stolpci B: E baze podatkov bodo v celicah C10: C13.

Podatkovni list
Predloga

Zaženite urejevalnik VB z alt-F11. Ker želimo tukaj izdati ukaze Word, pojdite na Orodja> Reference. Pomaknite se navzdol in poiščite »Microsoft Word 8« in potrdite polje zraven, da izberete ta element.

Če želite nadzirati Word iz Excela, morate določiti spremenljivko, ki bo predstavljala aplikacijo Word. V spodnjem primeru sem uporabil appWD. Za vse ukaze v Excelu Macro, ki jih želite uporabiti za Wordovo aplikacijo, ukaz preprosto dodate pred aplikacijo appWD. Pravzaprav, ker še nikoli nisem napisal vrstice kode Word Macro, sem šel v Word, zapisal dejanja in nato to kodo kopiral v Excel in pred vsako vrstico dodal predpono.

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 zagonu tega makra boste imeli po eno novo datoteko Word za vsako vrstico podatkov na vašem podatkovnem listu.

Še enkrat hvala Jakeu za to čudovito vprašanje. Obstaja veliko aplikacij, kjer bi lahko nadzor nad Wordom znotraj Excela zagotovil močno rešitev.

Zanimive Članki...