Excelistä Wordiin makro - Excel-vinkkejä

Sisällysluettelo

Kiitos Jakelle, joka toimitti tämän viikon Excel-kysymyksen:

Kuinka voin kirjoittaa makron, joka ottaa Excel-laskentataulukotiedot ja luo Word-tiedoston kullekin tietoriville?

Jake - mikä hieno idea! Minulla on usein myyntituloksia koko yritykselle, ja olisi hienoa, että voisin lähettää jokaiselle edustajalle vain hänen tietonsa Wordissa. Voit tehdä tämän Wordista Mail Merge -sovelluksella, mutta Wordin hallinta Excelistä on mielenkiintoinen mahdollisuus. Alla oleva esimerkki on melko yksinkertainen, mutta tämän käsitteen perusteella voidaan tehdä melko kehittyneitä sovelluksia.

Katsotaan ensin ensin esimerkkitietojoukko. Loin työkirjan, jossa oli kaksi arkkia - yksi nimeltään Data ja toinen nimeltään malli. Data-laskentataulukossa on useita tietorivejä. Malli-laskentataulukolla on Word-asiakirjan rakenne, jonka haluan luoda. Tässä tapauksessa haluan kopioida nimen tietokannan sarakkeesta A mallin soluun C4. Tietokannan sarakkeet B: E menevät soluihin C10: C13.

Katsotaan ensin ensin esimerkkitietojoukko. Loin työkirjan, jossa oli kaksi arkkia - yksi nimeltään Data ja toinen nimeltään malli. Data-laskentataulukossa on useita tietorivejä. Malli-laskentataulukolla on Word-asiakirjan rakenne, jonka haluan luoda. Tässä tapauksessa haluan kopioida nimen tietokannan sarakkeesta A mallin soluun C4. Tietokannan sarakkeet B: E menevät soluihin C10: C13.

Tietolomake
Malliarkki

Käynnistä VB Editor al-F11: llä. Koska haluamme antaa Word-komentoja täällä, valitse Työkalut> Viitteet. Vieritä alaspäin löytääksesi "Microsoft Word 8" ja valitse tämän kohteen vieressä oleva valintaruutu.

Voit hallita Wordia Excelistä määrittelemällä muuttujan, joka edustaa Word-sovellusta. Alla olevassa esimerkissä käytin appWD: tä. Kaikille Excel-makron komennoille, jotka haluat käyttää Word-sovellukseen, sinun on yksinkertaisesti lisättävä komento appWD: llä. Itse asiassa, koska en ole koskaan aiemmin kirjoittanut riviä Word-makrokoodista, menin Wordiin, tallennin toiminnot ja kopioin koodin sitten Exceliin lisäämällä etuliitteen ennen kutakin riviä.

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

Tämän makron suorittamisen jälkeen sinulla on yksi uusi Word-tiedosto kutakin tietolomakkeen riviä varten.

Kiitos vielä kerran Jakelle tästä upeasta kysymyksestä. On monia sovelluksia, joissa Wordin hallinta Excelin sisäpuolelta voisi tarjota tehokkaan ratkaisun.

Mielenkiintoisia artikkeleita...