Kaip įterpti "Excel" lentelę į "Word" su VBA
„Microsoft“ Biuras Microsoft Word „Microsoft“ „Microsoft Excel“ Herojus Žodis / / April 29, 2020
Paskutinį kartą atnaujinta
VBA yra labai galingas įrankis, kurį galite naudoti automatizuodami daug darbo tarp kelių „Microsoft Office“ programų. Viena įprasta veikla, kurią galite automatizuoti naudodami VBA, yra „Excel“ lentelės įdėjimas į „Word“ dokumentą.
„Visual Basic for Applications“ (VBA) yra labai galingas įrankis, kurį galite naudoti automatizuodami daug darbo tarp kelių „Microsoft Office“ programų. Viena įprasta veikla, kurią galite automatizuoti naudodami VBA, yra „Excel“ lentelės įdėjimas į „Word“ dokumentą.
Tai galite padaryti dviem būdais. Pirmasis yra automatizuoti tiesią esamo diapazono kopiją ir įklijuoti iš „Excel“ į naują „Word“ dokumento lentelę. Antrasis yra skaičiavimų atlikimas „Excel“, naujos lentelės kūrimas „Word“ ir rezultatų įrašymas į lentelę.
Galite pabandyti įrašyti makrokomandą tai padaryti, tačiau makrokomandos leis jums automatizuoti užduotis tik „Word“ viduje. Šiame straipsnyje sužinosite, kaip rašyti VBA kodą, kad būtų automatizuoti šie veiksmai tarp „Excel“ ir „Word“.
Nukopijuokite ir įklijuokite „Excel“ diapazoną į žodį naudodami VBA
Abiejuose pavyzdžiuose pradėsime nuo „Excel“ skaičiuoklės pavyzdžio. Šis pavyzdys yra įvairių prekių pirkimo užsakymų sąrašas.
Tarkime, kad norėtumėte nukopijuoti ir įklijuoti visą langelių diapazoną šiame darbalapyje į „Word“ dokumentą. Norėdami tai padaryti, turėsite parašyti VBA funkciją, kuri bus vykdoma spustelėjus mygtuką „Kopijuoti į žodį“.
Pasirinkite Programuotojas iš meniu ir pasirinkite Įdėti iš kontrolinės grupės juostelėje. Išskleidžiamajame sąraše pasirinkite mygtuką „Mygtukas“, esantį „ActiveX“ valdikliuose.
Tada nupieškite komandos mygtuką dešinėje lapo pusėje. Antraštę galite pakeisti į „Kopijuoti į žodį“ dešiniuoju pelės mygtuku spustelėdami mygtuką ir pasirinkdami Savybės. Pakeiskite antraštės tekstą, o šrifto dydžiui ir stiliui atnaujinti galite naudoti šriftą.
Pastaba: Jei nematote Programuotojas „Excel“ meniu, tada pridėkite jį. Pasirinkite Byla, Galimybės, Tinkinkite juostelęir pasirinkite Visos komandos iš kairiojo išskleidžiamojo meniu. Tada judėkite Programuotojas iš kairiosios srities į dešinę ir baigdami pasirinkite Gerai.
Parašykite kopiją ir įklijuokite VBA kodą
Dabar esate pasirengęs pradėti rašyti VBA kodą. Norėdami pradėti, dukart spustelėkite naują Nukopijuokite į „Word“ mygtuką, norėdami atidaryti kodo rengyklės langą.
Turėtumėte pamatyti paprogramę „Commandbutton1_Click“ (), kaip parodyta žemiau.
Norite nukopijuoti kiekvieną žemiau pateiktą kodo skyrių. Prieš pradėdami kodavimą, norėdami valdyti „Word“ savo kompiuteryje naudodami VBA, turėsite įjungti „Microsoft Word“ nuorodų biblioteką.
Kodų rengyklėje pasirinkite Įrankiai iš meniu ir pasirinkite Nuorodos. Galimų nuorodų sąraše slinkite žemyn ir įgalinkite „Microsoft Word 16.0“ objektų biblioteka.
Pasirinkite Gerai ir esate pasirengęs pradėti kodavimą. Peržiūrėsime kiekvieną kodo skiltį vienu metu, kad jūs suprastumėte, ką tas kodas daro ir kodėl.
Pirmiausia turite sukurti kintamuosius ir objektus, kurie atitiks diapazoną ir leis valdyti „Word“ programą.
Dim tblRange As Excel. diapazonas
Sumažinti „WordApp“ kaip „Word“. Taikymas
Dim WordDoc As Word. Dokumentas
Dim WordTable as Word. Lentelė
Kitoje kodo eilutėje pasirenkamas konkretus langelių diapazonas ir išsaugomas „Excel Range“ objekte VBA.
Nustatyti tblRange = ThisWorkbook. Darbalapiai („1 lapas“). „Diapazonas“ („A2: G44“)
Tada norite patikrinti, ar kompiuteryje „Word“ programa jau atidaryta. Norėdami tai padaryti, galite nurodyti „Word“ programą naudodami specialią „klasės“ nuorodą su VBA „GetObject“ komanda. Jei „Word“ dar neatidarytas, kita eilutė jį paleis naudodama „CreateObject“ funkciją. Eilutė „On Error Resume Next“ apsaugo nuo bet kokios pirmosios „GetObject“ funkcijos klaidos (jei „Word“ dar nėra atidaryta) sustabdyti kitos eilutės vykdymą programoje.
On Error Tęsti toliau
Nustatykite WordApp = GetObject (klasė: = "Word". Paraiška “)
Jei „WordApp“ nėra nieko, tada nustatykite „WordApp = CreateObject“ (klasė: = "„ Word “. Paraiška “)
Dabar, kai „Word“ programa yra paleista, norite, kad ji būtų matoma vartotojui ir suaktyvinama naudoti.
„WordApp“. Matoma = tiesa
„WordApp“. Suaktyvinti
Tada norėsite sukurti naują dokumentą „Word“ programos viduje.
Nustatykite „WordDoc“ = „WordApp“. Dokumentai. Papildyti
Galiausiai nukopijuosite ir įklijuosite langelių diapazoną į naują „Word“ dokumento lentelę.
tblRange. Kopijuoti
„WordDoc“. (1) dalys .Range. „PasteExcelTable“ _
„LinkedToExcel“: = Netiesa, _
„WordFormatting“ = klaidinga, _
RTF: = klaidinga
Aukščiau pateiktos funkcijos jungikliai įterps nesusietą lentelę, naudodami šaltinio „Excel“ formatavimą (ne „Word“ formatavimą) ir nenaudodami raiškiojo teksto formato.
Galiausiai, norėdami susidoroti su „Excel“ diapazonais, kurie yra platesni nei dokumentas, turėsite automatiškai pritaikyti naująją lentelę, kad ji tilptų į jūsų naujojo „Word“ dokumento paraštes.
Nustatyti „WordTable“ = „WordDoc“. Stalai (1)
„WordTable“. „AutoFitBehavior“ („wdAutoFitWindow“)
O dabar jūs baigėte! Įrašykite failą kaip makrokomandą įgalintą „Excel“ failą (.xlsm plėtinys). Uždarykite redaktorių, dar kartą išsaugokite originalų „Excel“ failą ir spustelėkite savo komandos mygtuką, kad pamatytumėte savo kodą!
Įrašykite „Excel“ rezultatus į žodžių lentelę naudodami VBA
Šiame kitame skyriuje parašysite VBA kodą, kuris apskaičiuoja reikšmes „Excel“ ir jas rašo lentelė „Word“.
Šiame pavyzdyje surinksime 10 eilučių vertės duomenų, apskaičiuosime ir surašysime rezultatus į „Word“ dokumento lentelę. Originalioje lentelėje taip pat bus keturi stulpeliai, o VBA kodas ištrauks pirmąsias dešimt duomenų eilučių iš to diapazono.
Kaip ir paskutiniame skyriuje, mes pereisime kiekvieną skyrių vienu metu, kad jūs suprastumėte, ką tas kodas daro ir kodėl.
Pirmiausia sukurkite kintamuosius ir objektus, kurie sulaiko duomenis ir leidžia jums rašyti į „Word“ programą.
Dim tblRange As Excel. diapazonas
Dim WrdRange Kaip žodis. diapazonas
Sumažinti „WordApp“ kaip „Word“. Taikymas
Dim WordDoc As Word. Dokumentas
Dim WordTable as Word. Lentelė
Tamsūs intRow
Dim intColumns
Dim strDate As String
Dim strItem kaip stygos
Dim intUnits As Variant
Dim intCost As Variant
Dim intTotal As Variant
Tada nustatykite visus stulpelius ir eilutes, kurias norite perskaityti iš „Excel“ diapazono.
intNoOfRows = 10
intNoOfColumns = 5
Pakartokite tą patį kodą, kaip ir paskutinėje skiltyje, kurioje bus atidaryta „Word“, jei ji dar nėra atidaryta.
On Error Tęsti toliau
Nustatykite WordApp = GetObject (klasė: = "Word". Paraiška “)
Jei „WordApp“ nėra nieko, tada nustatykite „WordApp = CreateObject“ (klasė: = "„ Word “. Paraiška “)
„WordApp“. Matoma = tiesa
„WordApp“. Suaktyvinti
Nustatykite „WordDoc“ = „WordApp“. Dokumentai. Papildyti
Kitos keturios eilutės sukuria lentelę naujai atidaryto „Word“ dokumento viduje.
Nustatyti „WrdRange“ = „WordDoc“. Diapazonas (0, 0)
„WordDoc“. Stalai. Pridėkite „WrdRange“, „intNoOfRows“, „intNoOfColumns“
Nustatyti „WordTable“ = „WordDoc“. Stalai (1)
„WordTable“. Sienos. Įgalinti = Tiesa
Galiausiai šiuos veiksmus atliks ši kilpa:
- Kiekvienoje eilutėje nurodykite užsakymo datą, elementą, vienetus ir kainą į kintamuosius
- Apskaičiuokite vieneto kainą (bendrą išpardavimą) ir saugokite ją kintamajame
- Kiekvieno stulpelio reikšmes įrašykite į „Word“ lentelę, įskaitant apskaičiuotą bendrą pardavimą paskutiniame langelyje
- Pereikite prie kitos eilutės ir pakartokite aukščiau aprašytą procedūrą
Štai kaip atrodo šis kodas:
Jei i = 1 „intNoOfRows“
Jei j = 1 „IntNoOfColumns“
Jei j = 1, tada
strDate = tblRange. Ląstelės (i + 1, j) .Vertybė
strItem = tblRange. Ląstelės (i + 1, j + 1) .Vata
intUnits = Val (tblRange. Ląstelės (i + 1, j + 2) .Vata)
intCost = Val (tblRange. Ląstelės (i + 1, j + 3) .Vata)
intTotal = intUnits * intCost
Pabaiga Jei
Pasirinkite Case j
Atvejis yra = 1
„WordTable“. Ląstelė (i, j) .Range. Tekstas = strDate
Atvejis yra = 2
„WordTable“. Ląstelė (i, j) .Range. Tekstas = strItem
Atvejis yra = 3
„WordTable“. Ląstelė (i, j) .Range. Tekstas = intUnitai
Atvejis yra = 4
„WordTable“. Ląstelė (i, j) .Range. Tekstas = intCost
Atvejis yra = 5
„WordTable“. Ląstelė (i, j) .Range. Tekstas = intTotal
Kitas atvejis
Pabaigos pasirinkimas
Kitas
Kitas
Funkcija „Ląstelės“ pirmoje dalyje patraukia ląstelių vertės iš „Excel“. Ląstelės (x, y) reiškia, kad ji ištraukia langelio vertę x eilutėje ir y stulpelyje.
Funkcija „Ląstelė“ paskutinėje dalyje įrašoma į „Word“ lentelės langelius, naudojant tas pačias eilutės ir stulpelio užduotis.
Išsaugoję ir paleidę šį VBA kodą, pamatysite rezultatus naujai sukurtame „Word“ dokumente.
Kaip matote, nėra per daug sudėtinga sukurti naudingą automatiką tarp „Excel“ ir „Word“. Reikia tik suprasti, kaip veikia įvairūs „objektai“, kurie gali sukurti ir valdyti „Excel“ ir „Word“ programas jūsų kompiuteryje.