Kako umetnuti Excel tablicu u riječ pomoću VBA
Microsoft Ured Microsoft Word Microsoft Microsoft Excel Junak Riječ / / April 29, 2020
Ažurirano dana

VBA je vrlo moćan alat koji možete koristiti za automatizaciju puno posla između više Microsoft Office aplikacija. Jedna uobičajena aktivnost koju možete automatizirati pomoću VBA je umetanje Excelove tablice u Word dokument.
Visual Basic za aplikacije (VBA) je vrlo moćan alat koji možete koristiti za automatizaciju puno posla između više Microsoft Office aplikacija. Jedna uobičajena aktivnost koju možete automatizirati pomoću VBA je umetanje Excelove tablice u Word dokument.
Postoje dva načina da to učinite. Prvo je automatiziranje izravne kopije i lijepljenja postojećeg raspona iz Excela u novu tablicu u Word dokumentu. Drugi je izvođenje izračuna u Excelu, stvaranje nove tablice u Wordu i upisivanje rezultata u tablicu.
Možete pokušati snimite makronaredbu da biste to učinili, ali makronaredbe će vam omogućiti samo automatiziranje zadataka unutar Worda. U ovom ćete članku naučiti kako napisati VBA kôd za automatizaciju ovih radnji između programa Excel i Word.
Kopirajte i zalijepite Excel domet u riječ pomoću VBA
U oba primjera počet ćemo s primjerom proračunske tablice u Excelu. Ovaj je uzorak popis naloga za kupnju raznih proizvoda.

Recimo da želite kopirati i zalijepiti čitav niz ćelija na ovom radnom listu u Wordov dokument. Da biste to učinili, morat ćete napisati VBA funkciju koja će se pokrenuti kad kliknete gumb "Kopiraj u riječ".
Odaberi razvijač iz izbornika i odaberite Umetnuti iz grupe Kontrole u vrpci. Na padajućem popisu odaberite kontrolu gumba pod stavkom ActiveX kontrole.

Zatim nacrtajte naredbeni gumb na desnoj strani lista. Opis možete promijeniti u "Kopiraj u riječ" tako da desnom tipkom miša kliknete gumb i odaberete Svojstva. Promijenite tekst opisa i pomoću alata Font možete ažurirati veličinu i stil fonta.

Bilješka: Ako ne vidite razvijač u vašem Excel izborniku, a zatim ga dodajte. Odaberi Datoteka, Opcije, Prilagodite vrpcui odaberite Sve naredbe s lijeve padajuće strane. Zatim kreni razvijač s lijevog okna u desno i odaberite U redu za završetak.
Napišite VBA kod kopiranja i lijepljenja
Sada ste spremni za početak pisanja VBA koda. Da biste započeli, dvokliknite novi Kopirajte u Word gumb za otvaranje prozora uređivača koda.
Trebali biste vidjeti potprogram nazvan Commandbutton1_Click (), kao što je prikazano u nastavku.

Trebat ćete kopirati svaki odjeljak koda u nastavku. Prije nego što započnete kodiranje, za upravljanje Wordom na računalu pomoću VBA morat ćete se uključiti u referentnu knjižnicu programa Microsoft Word.
U uređivaču koda odaberite alat iz izbornika i odaberite Reference. Na popisu dostupnih referenci pomaknite se prema dolje i omogućite ih Knjižnica objekata Microsoft Word 16.0.

Odaberite U redu i spremni ste za početak kodiranja. Istodobno ćemo proći kroz svaki odjeljak koda da biste razumjeli što taj kôd radi i zašto.
Prvo morate stvoriti varijable i objekte koji će držati raspon i omogućiti vam kontrolu aplikacije Word.
Dim tblRange kao Excel. opseg
Dim WordApp kao Word. primjena
Dim WordDoc kao Word. Dokument
Dim WordTable kao Word. Stol
Sljedeći redak koda odabire određeni raspon ćelija i sprema ga u Excel Range objekt u VBA.
Postavi tblRange = ThisWorkbook. Radni listovi ( "Sheet1") raspona. ( "A2: G44")
Zatim želite provjeriti je li program Word već otvoren na računalu. Možete se uputiti na Word aplikaciju pomoću posebne „klase“ reference s VBA naredbom GetObject da biste to postigli. Ako Word već nije otvoren, sljedeći redak pokrenut će ga pomoću funkcije CreateObject. Redak "On Error Resume Next" sprječava bilo koju pogrešku da prva funkcija GetObject (ako Word nije već otvorena) zaustavi izvršenje sljedećeg retka u programu.
Nakon pogreške nastavite dalje
Postavite WordApp = GetObject (class: = "Word. Aplikacija ")
Ako WordApp nije ništa onda postavite WordApp = CreateObject (class: = "Word. Aplikacija ")
Sada kada se pokreće Word aplikacija, želite je učiniti vidljivom korisniku i aktivirati je za upotrebu.
WordApp. Vidljivo = Istina
WordApp. Aktivirati
Zatim želite stvoriti novi dokument unutar Wordove aplikacije.
Postavite WordDoc = WordApp. Dokumenti. Dodati
Konačno, kopiraćete i zalijepiti raspon ćelija u novu tablicu u Word dokumentu.
tblRange. Kopirati
WordDoc. Stavci (1). PasteExcelTable _
LinkedToExcel: = Lažno, _
Oblikovanje riječi: = netočno, _
RTF: = False
Prekidači u gornjoj funkciji umetnut će nesvezanu tablicu koristeći izvorno Excel oblikovanje (ne Word oblikovanje) i ne koristeći obogaćeni tekst.
Konačno, za rješavanje raspona Excela koji su širi od dokumenta, morat ćete autofitirati novu tablicu kako bi se ona uklapala u margine novog Wordova dokumenta.
Postavite WordTable = WordDoc. Stolovi (1)
WordTable. AutoFitBehavior (wdAutoFitWindow)
I sad ste gotovi! Spremite datoteku kao Excel datoteku s podrškom za makronaredbu (.xlsm proširenje). Zatvorite uređivač, ponovo spremite izvornu datoteku Excel-a, a zatim kliknite naredbeni gumb da biste vidjeli svoj kôd na djelu!

Napišite Excel rezultate u riječnu tablicu s VBA
U ovom sljedećem odjeljku napisat ćete VBA kôd koji izvodi proračune vrijednosti u Excelu i upisuje ih u tablica u Wordu.
Za ovaj primjer, izvući ćemo podatke vrijedne 10 redaka, izračunati i zapisati rezultate u tablicu u Word dokumentu. Također, izvorna tablica sadrži četiri stupca, a VBA kôd će povući prvih deset redaka podataka iz tog raspona.

Kao i u posljednjem odjeljku, proći ćemo svaki odjeljak odjednom, tako da razumijete što taj kôd radi i zašto.
Prvo napravite varijable i objekte koji će sadržavati podatke i omogućuju vam pisanje u Word aplikaciju.
Dim tblRange kao Excel. opseg
Dim WrdRange kao riječ. opseg
Dim WordApp kao Word. primjena
Dim WordDoc kao Word. Dokument
Dim WordTable kao Word. Stol
Prigušeni intRows
Prigušeni intKoloni
Dim strDate kao niz
Dim strItem kao niz
Prigušeni dijelovi kao varijanta
Dim intCost kao varijanta
Dim intTotal Kao varijanta
Zatim postavite ukupne stupce i retke koje želite pročitati iz programa Excel.
intNoOfRows = 10
intNoOfColumn = 5
Ponovite isti kôd kao i zadnji odjeljak koji će otvoriti Word ako već nije otvoren.
Nakon pogreške nastavite dalje
Postavite WordApp = GetObject (class: = "Word. Aplikacija ")
Ako WordApp nije ništa onda postavite WordApp = CreateObject (class: = "Word. Aplikacija ")
WordApp. Vidljivo = Istina
WordApp. Aktivirati
Postavite WordDoc = WordApp. Dokumenti. Dodati
Sljedeća četiri retka stvaraju tablicu unutar novootvorenog Word-ovog dokumenta.
Postavi WrdRange = WordDoc. Domet (0, 0)
WordDoc. Tablice. Dodajte WrdRange, intNoOfRows, intNoOfColumn
Postavite WordTable = WordDoc. Stolovi (1)
WordTable. Granica. Omogući = Istina
Konačno, sljedeća petlja izvest će ove radnje:
- U svaki redak stavite datum narudžbe, stavku, jedinice i troškove u varijable
- Izračunajte jedinični vremenski trošak (ukupna prodaja) i pohranite ga u varijablu
- Za svaki stupac unesite vrijednosti u Word tablicu, uključujući izračunatu ukupne prodaje u posljednju ćeliju
- Prijeđite na sljedeći red i ponovite gornji postupak
Evo kako taj kôd izgleda:
Za i = 1 za intNoOfRows
Za j = 1 U intNoOfColumn
Ako je j = 1 Tada
strDate = tblRange. Stanice (i + 1, j). Value
strItem = tblRange. Stanice (i + 1, j + 1). Vrijednost
intUnits = Val (tblRange). Ćelije (i + 1, j + 2). Vrijednost)
intCost = Val (tblRange). Ćelije (i + 1, j + 3). Vrijednost)
intTotal = intUnits * intCost
Završi ako
Odaberite Slučaj j
Slučaj je = 1
WordTable. Stanica (i, j) .Range. Text = strDate
Slučaj je = 2
WordTable. Stanica (i, j) .Range. Tekst = strItem
Slučaj je = 3
WordTable. Stanica (i, j) .Range. Text = intUnits
Slučaj je = 4
WordTable. Stanica (i, j) .Range. Tekst = intCost
Slučaj je = 5
WordTable. Stanica (i, j) .Range. Tekst = intTotal
Case Else
Kraj odabira
Sljedeći
Sljedeći
Funkcija "Stanice" u prvom dijelu povlači vrata vrijednosti ćelije izvan Excel-a. Stanice (x, y) znači da povlači vrijednost ćelije u retku x i stupcu y.
Funkcija "Cell" u posljednjem dijelu piše u ćelije u Word tablici koristeći iste zadatke retka i stupaca.
Jednom kada spremite i pokrenete ovaj VBA kôd, vidjet ćete rezultate u novostvorenom Word dokumentu.

Kao što vidite, stvoriti korisnu automatizaciju između Excela i Worda nije previše komplicirano. Samo je pitanje razumijevanja na koji način rade različiti "objekti" koji mogu stvoriti i kontrolirati i Excel i Wordove aplikacije na vašem računalu.