Kako vstaviti Excelovo tabelo v besedo z VBA
Microsoftova Pisarna Microsoftova Beseda Microsoft Microsoft Excel Junak Beseda / / April 29, 2020
Nazadnje posodobljeno dne
VBA je zelo zmogljivo orodje, ki ga lahko uporabite za avtomatizacijo veliko dela med več aplikacijami Microsoft Office. Ena pogosta dejavnost, ki jo lahko avtomatizirate z uporabo VBA, je vstavljanje Excelove tabele v Wordov dokument.
Visual Basic za aplikacije (VBA) je zelo zmogljivo orodje, ki ga lahko uporabite za avtomatizacijo veliko dela med več aplikacijami Microsoft Office. Ena pogosta dejavnost, ki jo lahko avtomatizirate z uporabo VBA, je vstavljanje Excelove tabele v Wordov dokument.
Obstajata dva načina. Prvi je avtomatizacija naravne kopije in lepljenja obstoječega obsega iz Excela v novo tabelo v Wordovem dokumentu. Drugi je izvajanje izračunov v Excelu, ustvarjanje nove tabele v Wordu in zapisovanje rezultatov v tabelo.
Lahko poskusite posneti makro to lahko storite, vendar vam makroni omogočajo samo avtomatizacijo nalog znotraj Worda. V tem članku boste izvedeli, kako napisati kodo VBA za avtomatizacijo teh dejanj med Excelom in Wordom.
Kopirajte in prilepite obseg Excela v besedo z VBA
V obeh primerih bomo začeli z vzorčno preglednico Excel. Ta vzorec je seznam naročil za različne izdelke.
Recimo, da želite kopirati in prilepiti celoten obseg celic iz tega delovnega lista v Wordov dokument. Če želite to narediti, boste morali napisati funkcijo VBA, ki se bo zagnala, ko kliknete gumb »Kopiraj v besedo«.
Izberite Razvijalec iz menija in izberite Vstavi iz skupine Controls v traku. Na spustnem seznamu izberite gumb gumba pod ActiveX Controls.
Nato na desni strani lista narišite ukazni gumb. Napis lahko spremenite v »Kopiraj v Word« tako, da z desno miškino tipko kliknete gumb in izberete Lastnosti. Spremenite besedilo napisov in s pomočjo pisave lahko posodobite velikost in slog pisave.
Opomba: Če ne vidite Razvijalec v vašem Excelovem meniju in ga dodajte. Izberite mapa, Opcije, Prilagodite trakin izberite Vsi ukazi z levega spustnega dna. Nato se premaknite Razvijalec iz levega podokna v desno in za zaključitev izberite V redu.
Napišite kodo VBA za kopiranje in lepljenje
Zdaj ste pripravljeni začeti pisati kodo VBA. Za začetek dvokliknite novo Kopiraj v Word gumb, da odprete okno urejevalnika kode.
Morali bi videti podprogram z imenom Commandbutton1_Click (), kot je prikazano spodaj.
Vsak oddelek kode želite kopirati spodaj. Preden začnete s kodiranjem, morate za upravljanje Word v računalniku s pomočjo VBA omogočiti referenčno knjižnico Microsoft Word.
V urejevalniku kode izberite Orodja iz menija in izberite Reference. Na seznamu razpoložljivih referenc se pomaknite navzdol in omogočite Objektna knjižnica Microsoft Word 16.0.
Izberite V redu in pripravljeni ste za začetek kodiranja. Naenkrat bomo preučili vsak razdelek kode, tako da boste razumeli, kaj ta koda počne in zakaj.
Najprej morate ustvariti spremenljivke in predmete, ki bodo obdržali obseg in vam omogočili nadzor nad Wordovo aplikacijo.
Dim tblRange kot Excel. Domet
Dim WordApp kot Word. Uporaba
Dim WordDoc kot Word. Dokument
Dim WordTable kot Word. Tabela
Naslednja vrstica kode izbere določen obseg celic in jo shrani v Excel Range objekt v VBA.
Nastavite tblRange = ThisWorkbook. Delovni listi ("Sheet1"). Razpon ("A2: G44")
Nato želite preveriti, ali je aplikacija Word že odprta v računalniku. Na to se lahko sklicujete na Wordovo uporabo s posebnim sklicem "razreda" z ukazom VBA GetObject. Če Word še ni odprt, ga bo naslednja vrstica zagnala s funkcijo CreateObject. Vrstica »Napaka nadaljuj z naslednjim« preprečuje, da bi katera koli napaka s prvo funkcijo GetObject (če Word še ni odprta) ustavila izvajanje naslednje vrstice v programu.
Ob napaki Nadaljujte naprej
Nastavite WordApp = GetObject (class: = "Word. Prijava ")
Če WordApp ni nič, potem nastavite WordApp = CreateObject (class: = "Word. Prijava ")
Zdaj, ko se zažene aplikacija Word, jo želite uporabniku narediti vidno in jo aktivirati za uporabo.
WordApp. Vidno = res
WordApp. Aktivirajte
Nato morate ustvariti nov dokument v aplikaciji Word.
Nastavite WordDoc = WordApp. Dokumenti. Dodaj
Končno boste kopirali in prilepili obseg celic v novo tabelo v dokumentu Word.
tblRange. Kopirati
WordDoc. Odstavki (1). Stopnja. PasteExcelTable _
LinkedToExcel: = Lažno, _
Oblikovanje besed: = napačno, _
RTF: = napačno
Stikala v zgornji funkciji bodo vstavila nepovezano tabelo z uporabo izvornega Excelovega oblikovanja (ne Wordovega oblikovanja) in ne z uporabo bogatega besedilnega zapisa.
Nazadnje, če želite obravnavati obsege Excela, ki so širši od dokumenta, boste morali samodejno prenašati novo tabelo, tako da se prilega robom novega dokumenta Word.
Nastavite WordTable = WordDoc. Tabele (1)
WordTable. AutoFitBehavior (wdAutoFitWindow)
In zdaj ste končali! Datoteko shranite kot datoteko Excel z makro podporo (.xlsm razširitev). Zaprite urejevalnik, ponovno shranite prvotno datoteko Excela in nato kliknite vaš ukazni gumb, da si ogledate kodo v akciji!
Napišite Excelove rezultate v besedilno tabelo z VBA
V tem naslednjem razdelku boste zapisali kodo VBA, ki izvaja izračune vrednosti v Excelu in jih zapisali v tabela v Wordu.
Za ta primer bomo potegnili podatke v vrednosti 10 vrstic, izračunali in rezultate zapisali v tabelo v dokumentu Word. Tudi izvirna tabela bo vsebovala štiri stolpce, koda VBA pa bo potegnila prvih deset vrstic podatkov iz tega obsega.
Tako kot v zadnjem razdelku bomo hkrati preučili vsak razdelek, tako da boste razumeli, kaj ta koda počne in zakaj.
Najprej ustvarite spremenljivke in predmete, ki bodo hranili podatke in vam omogočajo pisanje v aplikacijo Word.
Dim tblRange kot Excel. Domet
Dim WrdRange kot beseda. Domet
Dim WordApp kot Word. Uporaba
Dim WordDoc kot Word. Dokument
Dim WordTable kot Word. Tabela
Zatemnite intRows
Zatemnjen in stolpci
Zatemnite strDate kot niz
Dim strItem As String
Zatemnitvene enote kot varianta
Dim intCost kot varianta
Dim intTotal Kot varianta
Nato nastavite skupno stolpce in vrstice, ki jih želite brati iz Excelovega razpona.
intNoOfRows = 10
intNoOfColumn = 5
Ponovite isto kodo kot zadnji razdelek, ki bo odprl Word, če že ni odprt.
Ob napaki Nadaljujte naprej
Nastavite WordApp = GetObject (class: = "Word. Prijava ")
Če WordApp ni nič, potem nastavite WordApp = CreateObject (class: = "Word. Prijava ")
WordApp. Vidno = res
WordApp. Aktivirajte
Nastavite WordDoc = WordApp. Dokumenti. Dodaj
Naslednje štiri vrstice ustvarijo tabelo znotraj tega na novo odprtega dokumenta Word.
Nastavite WrdRange = WordDoc. Domet (0, 0)
WordDoc. Mize. Dodajte WrdRange, intNoOfRows, intNoOfColumn
Nastavite WordTable = WordDoc. Tabele (1)
WordTable. Meje. Omogoči = True
Končno bo naslednja zanka izvedla ta dejanja:
- V vsako vrstico v spremenljivke vstavite datum, postavko, enote in stroške naročila
- Izračunajte stroške na enoto (skupno prodajo) in shranite v spremenljivko
- V vsak stolpec zapišite vrednosti v tabelo Word, vključno z izračunano skupno prodajo v zadnjo celico
- Pojdite na naslednjo vrstico in ponovite postopek zgoraj
Tule je videti, kako izgleda ta koda:
Za i = 1 Za intNoOfRows
Za j = 1 Za intNoOfColumn
Če je j = 1 Potem
strDate = tblRange. Celice (i + 1, j). Vrednost
strItem = tblRange. Celice (i + 1, j + 1). Vrednost
intUnits = Val (tblRange. Celice (i + 1, j + 2) .Value)
intCost = Val (tblRange). Celice (i + 1, j + 3) .Value)
intTotal = intUnits * intCost
Konec Če
Izberite Primer j
Primer je = 1
WordTable. Celica (i, j) .Range. Text = strDate
Primer je = 2
WordTable. Celica (i, j) .Range. Text = strItem
Primer je = 3
WordTable. Celica (i, j) .Range. Text = intUnits
Primer je = 4
WordTable. Celica (i, j) .Range. Text = intCost
Primer je = 5
WordTable. Celica (i, j) .Range. Besedilo = intTotal
Primer Else
Izberite konec
Naslednji
Naslednji
Funkcija "Celice" v prvem delu potegne gumb vrednosti celic iz Excela. Celice (x, y) pomeni, da potegne vrednost celice v vrstici x in stolpcu y.
Funkcija "Cell" v zadnjem delu zapiše v celice v tabeli Word z uporabo istih dodelitev vrstic in stolpcev.
Ko shranite in zaženete to kodo VBA, boste rezultate videli v novo ustvarjenem dokumentu Word.
Kot vidite, ni preveč zapleteno ustvariti uporabne avtomatizacije med Excelom in Wordom. Samo vprašanje razumevanja, kako delujejo različni "predmeti", ki lahko ustvarijo in nadzorujejo tako Excel kot Wordove aplikacije v vašem računalniku.