Kuidas sisestada VBA-ga Exceli tabel Wordisse
Microsofti Kontor Microsofti Sõna Microsoft Microsoft Excel Kangelane Sõna / / April 29, 2020
Viimati uuendatud

VBA on väga võimas tööriist, mida saate kasutada paljude Microsoft Office'i rakenduste vahelise töö automatiseerimiseks. Üks tavaline tegevus, mida saate VBA abil automatiseerida, on Exceli tabeli sisestamine Wordi dokumenti.
Visual Basic for Applications (VBA) on väga võimas tööriist, mida saate kasutada paljude Microsoft Office'i rakenduste vahelise töö automatiseerimiseks. Üks tavaline tegevus, mida saate VBA abil automatiseerida, on Exceli tabeli sisestamine Wordi dokumenti.
Seda saab teha kahel viisil. Esimene on olemasoleva vahemiku sirgjoonelise koopia automatiseerimine ja kleepimine Excelist Wordi dokumendi uude tabelisse. Teine on arvutuste tegemine Excelis, Wordis uue tabeli loomine ja tulemuste tabelisse kirjutamine.
Võiks proovida salvestage makro seda teha, kuid makrosid saate automatiseerida ainult Wordis sisalduvaid ülesandeid. Selles artiklis saate teada, kuidas kirjutada VBA-koodi, et automatiseerida neid toiminguid Exceli ja Wordi vahel.
Kopeerige ja kleepige Exceli vahemik sõnasse VBA-ga
Mõlemas näites alustame Exceli arvutustabeli näidisega. See näidis on mitmesuguste toodete ostutellimuste loend.

Oletame, et soovite kopeerida ja kleepida kogu selle töölehe lahtrite hulk Wordi dokumenti. Selleks peate kirjutama VBA-funktsiooni, mis käivitatakse, kui klõpsate nuppu Kopeeri Wordisse.
Valige Arendaja menüüst ja valige Sisesta kontrollrühma ribalt. Valige ripploendist nupp Button control jaotises ActiveX Controls.

Järgmisena joonistage käsu nupp lehe paremal küljel. Pealdise saate muuta „Kopeeri Wordisse”, paremklõpsake nuppu ja valige Omadused. Muutke pealdise teksti ja fondi suuruse ja stiili värskendamiseks saate kasutada fonti.

Märge: Kui te ei näe Arendaja lisage see oma Exceli menüüsse. Valige Toimik, Valikud, Kohandage lintja valige Kõik käsud vasakult rippmenüüst. Siis liikuge Arendaja vasakult paanilt paremale ja valige lõpetamiseks OK.
Kirjutage koopia ja kleepige VBA kood
Nüüd olete valmis alustama VBA-koodi kirjutamist. Alustamiseks topeltklõpsake uut Kopeeri Wordi nuppu koodiredaktori akna avamiseks.
Peaksite nägema alamprogrammi nimega Commandbutton1_Click (), nagu allpool näidatud.

Kopeerige kõik koodiosad allpool. Enne kodeerimise alustamist peate Wordi kontrollimiseks arvutis VBA abil lubama Microsoft Wordi viitekogu.
Valige koodiredaktoris Tööriistad menüüst ja valige Viited. Kerige saadaolevate viidete loendis alla ja lubage Microsoft Word 16.0 objektide kogu.

Valige OK ja olete valmis kodeerimist alustama. Vaatame kõik koodijaotised korraga läbi, et mõistaksite, mida see kood teeb ja miks.
Esiteks peate looma muutujad ja objektid, mis hoiavad vahemikku ja võimaldavad teil Wordi rakendust juhtida.
Dim tblRange Nagu Excel. Vahemik
Dim WordApp kui Word. Rakendus
Dim WordDoc kui Word. Dokument
Dim WordTable as Word. Tabel
Järgmine koodirida valib kindla lahtrivahemiku ja salvestab selle VBA-s olevasse objekti Excel Range.
Määra tblRange = See tööraamat. Töölehed ("Leht1"). Vahemik ("A2: G44")
Järgmisena soovite kontrollida, kas Wordi rakendus on arvutis juba avatud. Selle saavutamiseks võite Wordi rakendusele viidata spetsiaalse klassi viite abil käsul VBA GetObject. Kui Word pole veel avatud, käivitab järgmine rida seda, kasutades funktsiooni CreateObject. Rida „On Error Resume Next” väldib funktsiooni GetObject esimese tõrke (kui Word pole veel avatud) programmi järgmise rea täitmise peatamist.
On Error Resume Next
Seadista WordApp = GetObject (klass: = "Word. Rakendus ")
Kui WordApp pole midagi, siis seadke WordApp = CreateObject (klass: = "Word. Rakendus ")
Nüüd, kui Wordi rakendus käivitatakse, soovite selle kasutajale nähtavaks teha ja kasutamiseks aktiveerida.
WordApp. Nähtav = tõsi
WordApp. Aktiveeri
Järgmisena soovite luua Wordi rakenduses uue dokumendi.
Seadista WordDoc = WordApp. Dokumendid. Lisama
Lõpuks kopeerige ja kleepige lahtrite vahemik Wordi dokumendi uude tabelisse.
tblRange. Kopeeri
WordDoc. Lõiked (1) .Range. PasteExcelTable _
LinkedToExcel: = Vale, _
Wordi vormindamine: = vale, _
RTF: = vale
Ülaltoodud funktsiooni lülitid sisestavad linkimata tabeli, kasutades lähteteksti Exceli vormingut (mitte Wordi vormingut) ja mitte rikasteksti vormingut.
Lõpuks, dokumendist laiemate Exceli vahemikega tegelemiseks peate uue tabeli automaatselt vormistama, nii et see mahuks teie uue Wordi dokumendi äärealadele.
Määrake WordTable = WordDoc. Lauad (1)
WordTable. AutoFitBehavior (wdAutoFitWindow)
Ja nüüd olete valmis! Salvestage fail makrofunktsioonidega Exceli failina (laiend .xlsm). Sulgege redaktor, salvestage uuesti algne Exceli fail ja klõpsake siis käsunuppu, et näha oma koodi töös!

Kirjutage Exceli tulemused tekstitabelisse VBA-ga
Selles järgmises jaotises kirjutate VBA-koodi, mis arvutab väärtused Excelis ja kirjutab need tabel Wordis.
Selle näite jaoks kogume 10 rida väärtuses andmeid, arvutame välja ja kirjutame tulemused Wordi dokumendi tabelisse. Samuti sisaldab algne tabel nelja veergu ja VBA-kood tõmbab esimesed kümme andmerida sellest vahemikust.

Nagu viimases jaotises, läbime ka iga jaotise korraga, et mõistaksite, mida see kood teeb ja miks.
Esiteks looge muutujad ja objektid, mis andmeid hoiavad ja võimaldavad teil Wordi rakendusse kirjutada.
Dim tblRange Nagu Excel. Vahemik
Dim WrdRange sõnana. Vahemik
Dim WordApp kui Word. Rakendus
Dim WordDoc kui Word. Dokument
Dim WordTable as Word. Tabel
Tuhmid intRows
Tuhmi int veerge
Dim strDate kui string
Dim strItem kui string
Dim intUnits As Variant
Dim intCost As Variant
Dim intTotal As Variant
Järgmisena määrake Exceli vahemikust veergude ja ridade arv, mida soovite lugeda.
intNoOfRows = 10
intNoOfColumns = 5
Korrake sama koodi, mis Wordiga viimase jaotisega, kui see pole veel avatud.
On Error Resume Next
Seadista WordApp = GetObject (klass: = "Word. Rakendus ")
Kui WordApp pole midagi, siis seadke WordApp = CreateObject (klass: = "Word. Rakendus ")
WordApp. Nähtav = tõsi
WordApp. Aktiveeri
Seadista WordDoc = WordApp. Dokumendid. Lisama
Järgmine neli rida loob tabeli äsja avatud Wordi dokumendis.
Määra WrdRange = WordDoc. Vahemik (0, 0)
WordDoc. Lauad. Lisage WrdRange, intNoOfRows, intNoOfColumns
Määrake WordTable = WordDoc. Lauad (1)
WordTable. Piirid. Luba = tõene
Lõpuks täidab neid toiminguid järgmine silmus:
- Pange iga rea muutujatesse tellimuse kuupäev, element, ühikud ja maksumus
- Arvutage ühiku maksumus (kogu müük) ja salvestage see muutujasse
- Kirjutage iga veeru jaoks väärtused Wordi tabelisse, sealhulgas arvutage viimases lahtris arvutatud kogumüük
- Liikuge järgmisele reale ja korrake ülaltoodud protseduuri
See kood näeb välja järgmine:
I = 1 jaoks intNoOfRows
J = 1 jaoks intNoOfColumns
Kui j = 1, siis
strDate = tblRange. Lahtrid (i + 1, j) .Väärtus
strItem = tblRange. Lahtrid (i + 1, j + 1) .Väärtus
intUnits = Val (tblRange. Lahtrid (i + 1, j + 2) .Väärtus)
intCost = Val (tblRange. Lahtrid (i + 1, j + 3) .Väärtus)
intTotal = intUnits * intCost
Lõpeta If
Valige Juhtum j
Juhtum on = 1
WordTable. Rakk (i, j) .Rage. Tekst = strDate
Juhtum on = 2
WordTable. Rakk (i, j) .Rage. Tekst = strItem
Juhtum on = 3
WordTable. Rakk (i, j) .Rage. Tekst = intUnits
Juhtum on = 4
WordTable. Rakk (i, j) .Rage. Tekst = intCost
Juhtum on = 5
WordTable. Rakk (i, j) .Rage. Tekst = intTotal
Muu juhtum
Lõppvalik
Järgmine
Järgmine
Funktsioon “Cells” esimeses osas tõmbab lahtriväärtused Excelist välja. Lahtrid (x, y) tähendab, et see tõmbab lahtri väärtuse reas x ja veerus y.
Funktsioon “Cell” viimases osas kirjutab Wordi tabeli lahtritesse, kasutades samu rea- ja veeruülesandeid.
Kui olete selle VBA-koodi salvestanud ja käivitanud, näete tulemusi oma vastloodud Wordi dokumendis.

Nagu näete, pole Exceli ja Wordi vahelise kasuliku automatiseerimise loomine liiga keeruline. See on lihtsalt mõistmine, kuidas erinevad “objektid” toimivad ja mis võimaldavad teie arvutis luua nii Exceli kui ka Wordi rakendusi ja neid juhtida.