Kuinka lisätä Excel-taulukko Wordiin VBA: n avulla
Microsoft Office Microsoftin Sana Microsoft Microsoft Excel Sankari Sana / / April 29, 2020
Viimeksi päivitetty
VBA on erittäin tehokas työkalu, jonka avulla voit automatisoida paljon työtä useiden Microsoft Office -sovellusten välillä. Yksi yleinen toiminta, jonka voit automatisoida VBA: lla, on Excel-taulukon lisääminen Word-asiakirjaan.
Visual Basic for Applications (VBA) on erittäin tehokas työkalu, jonka avulla voit automatisoida paljon työtä useiden Microsoft Office -sovellusten välillä. Yksi yleinen toiminta, jonka voit automatisoida VBA: lla, on Excel-taulukon lisääminen Word-asiakirjaan.
Voit tehdä tämän kahdella tavalla. Ensimmäinen asia on automatisoida suora kopiointi ja liittäminen nykyisestä alueesta Excelistä uuteen taulukkoon Word-dokumentissa. Toinen on laskelmien suorittaminen Excelissä, uuden taulukon luominen Wordissä ja tulosten kirjoittaminen taulukkoon.
Voit yrittää tallenna makro tehdä tämän, mutta makrojen avulla voit automatisoida vain tehtäviä Wordin sisällä. Tässä artikkelissa opit kirjoittamaan VBA-koodin automatisoidaksesi nämä toiminnot Excelin ja Wordin välillä.
Kopioi ja liitä Excel Range Wordiin VBA: lla
Kummassakin esimerkissä aloitamme Excel-laskentataulukon mallilla. Tämä esimerkki on luettelo erilaisten tuotteiden tilauksista.
Oletetaan, että haluat kopioida ja liittää tämän taulukon koko solualueen Word-asiakirjaan. Tätä varten sinun on kirjoitettava VBA-toiminto, joka suoritetaan, kun napsautat Kopioi Wordiin -painiketta.
valita Kehittäjä valikosta ja valitse Insert nauhan Controls-ryhmästä. Valitse avattavasta luettelosta Painikeohjaus kohdassa ActiveX-komponentit.
Seuraavaksi piirrä komentopainike arkin oikealle puolelle. Voit muuttaa kuvatekstin ”Kopioi Wordiin” napsauttamalla hiiren kakkospainikkeella painiketta ja valitsemalla ominaisuudet. Vaihda tekstityksen teksti ja voit päivittää fontin koon ja tyylin Fontin avulla.
Merkintä: Jos et näe Kehittäjä Lisää sitten Excel-valikkoosi. valita tiedosto, vaihtoehdot, Mukauta nauhaja valitse Kaikki komennot vasemmasta avattavasta valikosta. Sitten liikkua Kehittäjä vasemmasta ruudusta oikealle ja valitse OK lopettaaksesi.
Kirjoita kopio ja liitä VBA-koodi
Nyt olet valmis aloittamaan VBA-koodin kirjoittamisen. Aloita kaksoisnapsauttamalla uutta Kopioi Wordiin -painike avataksesi koodieditori-ikkunan.
Sinun pitäisi nähdä alaohjelma nimeltään Commandbutton1_Click (), kuten alla on osoitettu.
Haluat kopioida kaikki alla olevat koodiosat. Ennen kuin aloitat koodauksen, sinun on otettava Microsoft Word -viitekirjasto käyttöön Wordin hallitsemiseksi VBA: lla.
Valitse koodieditorissa Työkalut valikosta ja valitse Viitteet. Vieritä alas ja ota käyttöön käytettävissä olevien viitteiden luettelossa Microsoft Word 16.0 -objektikirjasto.
Valitse OK, ja olet valmis aloittamaan koodauksen. Käymme läpi jokaisen koodiosan kerrallaan, jotta ymmärrät mitä koodi tekee ja miksi.
Ensinnäkin, sinun on luotava muuttujat ja objektit, jotka pitävät aluetta ja joiden avulla voit hallita Word-sovellusta.
Dim tblRange As Excel. alue
Himmennä WordApp sanana. hakemus
Himmennä WordDoc sanana. Asiakirja
Himmentää WordTable kuin Word. Pöytä
Seuraava koodirivi valitsee tietyn solualueen ja tallentaa sen Excel Range -objektiin VBA: ssa.
Aseta tblRange = Tämä työkirja. Laskentataulukot ( "Sheet1"). Range ( "A2: G44")
Seuraavaksi haluat tarkistaa, onko Word-sovellus jo avoinna tietokoneessa. Voit viitata Word-sovellukseen käyttämällä erityistä “luokka” -viittausta VBA GetObject -komennolla tämän suorittamiseksi. Jos Wordiä ei ole vielä avattu, seuraava rivi käynnistää sen käyttämällä CreateObject-toimintoa. "On Error Resume Next" -rivi estää ensimmäisen GetObject-toiminnon virheitä (jos Word ei ole vielä auki) keskeyttämään seuraavan rivin suorittaminen ohjelmassa.
On Error Jatka seuraavaksi
Aseta WordApp = GetObject (luokka: = "Word. Sovellus ")
Jos WordApp ei ole mitään, aseta WordApp = CreateObject (luokka: = "Word. Sovellus ")
Nyt kun Word-sovellus on käynnistetty, haluat tehdä siitä käyttäjän näkyvän ja aktivoida sen käyttöä varten.
WordApp. Näkyvä = totta
WordApp. Aktivoida
Seuraavaksi haluat luoda uuden asiakirjan Word-sovelluksen sisään.
Aseta WordDoc = WordApp. Asiakirjoja. Lisätä
Lopuksi kopioi ja liitä solualue Word-asiakirjan uuteen taulukkoon.
tblRange. Kopio
WordDoc. Kohdat (1) .Range. PasteExcelTable _
LinkedToExcel: = Väärä, _
WordFormatting: = Väärä, _
RTF: = False
Yllä olevan toiminnon kytkimet lisäävät linkittämättömän taulukon käyttämällä lähde-Excel-muotoilua (ei Word-muotoilua) ja käyttämättä Rich text -muotoa.
Lopuksi, jotta käsitellä asiakirjaa leveämpiä Excel-alueita, sinun on asennettava uusi taulukko automaattisesti, jotta se mahtuu uuden Word-asiakirjan marginaaleihin.
Aseta WordTable = WordDoc. Pöydät (1)
WordTable. AutoFitBehavior (wdAutoFitWindow)
Ja nyt olet valmis! Tallenna tiedosto makroyhteydessä Excel-tiedostona (.xlsm-tiedostotunniste). Sulje editori, tallenna alkuperäinen Excel-tiedosto uudelleen ja napsauta sitten komentopainiketta nähdäksesi koodisi toiminnassa!
Kirjoita Excel-tulokset Word-taulukkoon VBA: lla
Tässä seuraavassa osiossa kirjoitat VBA-koodin, joka laskee arvoja Excelissä ja kirjoittaa ne taulukko Wordissa.
Tässä esimerkissä vedetään 10 rivin arvoista tietoa, lasketaan ja kirjoitetaan tulokset Word-asiakirjan taulukkoon. Alkuperäinen taulukko sisältää myös neljä saraketta, ja VBA-koodi vetää kymmenen ensimmäistä tietoriviä tältä alueelta.
Aivan kuten edellisessä osassa, käymme läpi kaikki osiot kerrallaan, jotta ymmärrät mitä koodi tekee ja miksi.
Luo ensin muuttujat ja objektit, jotka sisältävät tiedot ja joiden avulla voit kirjoittaa Word-sovellukseen.
Dim tblRange As Excel. alue
Dim WrdRange sanana. alue
Himmennä WordApp sanana. hakemus
Himmennä WordDoc sanana. Asiakirja
Himmentää WordTable kuin Word. Pöytä
Himmentää intRows
Himmentää intColumns
Dim strDate merkkijonona
Dim strItem merkkijonona
Dim intUnits As Variant
Dim intCost As Variant
Dim intTotal As Variant
Aseta seuraavaksi luettavat sarakkeet ja rivit Excel-alueelta.
intNoOfRows = 10
intNoOfColumns = 5
Toista sama koodi kuin viimeisessä osassa, joka avaa Wordin, jos se ei ole vielä auki.
On Error Jatka seuraavaksi
Aseta WordApp = GetObject (luokka: = "Word. Sovellus ")
Jos WordApp ei ole mitään, aseta WordApp = CreateObject (luokka: = "Word. Sovellus ")
WordApp. Näkyvä = totta
WordApp. Aktivoida
Aseta WordDoc = WordApp. Asiakirjoja. Lisätä
Seuraavat neljä riviä luovat taulukon juuri avatun Word-asiakirjan sisälle.
Aseta WrdRange = WordDoc. Alue (0, 0)
WordDoc. Taulukoita. Lisää WrdRange, intNoOfRows, intNoOfColumns
Aseta WordTable = WordDoc. Pöydät (1)
WordTable. Rajoja. Ota käyttöön = Totta
Lopuksi seuraava silmukka suorittaa nämä toiminnot:
- Laita jokaiselle riville tilauspäivämäärä, tuote, yksiköt ja hinta muuttujiin
- Laske yksikkökustannukset (kokonaismyynti) ja säilytä muuttuja
- Kirjoita jokaiselle sarakkeelle arvot Word-taulukkoon, mukaan lukien viimeisen solun laskettu kokonaismyynti
- Siirry seuraavaan riviin ja toista yllä olevat toimenpiteet
Tämä on mitä tämä koodi näyttää:
Jos i = 1 - intNoOfRows
J = 1 intNoOfCol sarakkeisiin
Jos j = 1 Sitten
strDate = tblRange. Solut (i + 1, j) .Arvo
strItem = tblRange. Solut (i + 1, j + 1) .Arvo
intUnits = Val (tblRange. Solut (i + 1, j + 2) .arvo)
intCost = Val (tblRange. Solut (i + 1, j + 3) .arvo)
intTotal = intUnits * intCost
Loppu Jos
Valitse Case j
Tapaus on = 1
WordTable. Solu (i, j). Teksti = strDate
Tapaus on = 2
WordTable. Solu (i, j). Teksti = StrItem
Tapaus on = 3
WordTable. Solu (i, j). Teksti = intUnits
Tapaus on = 4
WordTable. Solu (i, j). Teksti = intCost
Tapaus on = 5
WordTable. Solu (i, j). Teksti = intTotal
Muu tapaus
Lopeta valinta
Seuraava
Seuraava
Ensimmäisen osan "Solut" -toiminto vetää solun arvot pois Excelistä. Solut (x, y) tarkoittavat, että se vetää solun arvon rivillä x ja sarakkeessa y.
Viimeisessä osassa oleva ”Solu” -toiminto kirjoittaa Word-taulukon soluille käyttämällä samoja rivi- ja sarakemäärityksiä.
Kun olet tallentanut ja suorittanut tämän VBA-koodin, näet tulokset juuri luomassa Word-dokumentissa.
Kuten voitte nähdä, hyödyllisen automaation luominen Excelin ja Wordin välille ei ole liian monimutkaista. On vain ymmärrettävä, kuinka erilaiset ”objektit” toimivat, jotka voivat luoda ja hallita tietokoneesi Excel- ja Word-sovelluksia.