Az Excel táblázat beszúrása a Wordbe a VBA segítségével
Microsoft Iroda Microsoft Word Microsoft Microsoft Excel Hős Szó / / April 29, 2020
Utoljára frissítve:
A VBA egy nagyon hatékony eszköz, amellyel sok munka automatizálható több Microsoft Office alkalmazás között. Az egyik általános tevékenység, amelyet automatizálhat a VBA használatával, egy Excel táblázat beillesztése a Word dokumentumba.
A Visual Basic for Applications (VBA) egy nagyon hatékony eszköz, amellyel sok munka automatizálható több Microsoft Office alkalmazás között. Az egyik általános tevékenység, amelyet automatizálhat a VBA használatával, egy Excel táblázat beillesztése a Word dokumentumba.
Kétféle módon lehet ezt megtenni. Az első egy meglévő tartomány egyenes másolásának és beillesztésének automatizálása az Excelből egy Word dokumentum új táblájába. A második a számítások elvégzése Excelben, új táblázat létrehozása a Word-ben, és az eredmények írása a táblába.
Meg lehet próbálni rögzítsen makrót ezt megteheti, de a makrók csak a Word belsejében lévő feladatok automatizálását teszik lehetővé. Ebben a cikkben megtudhatja, hogyan kell VBA-kódot írni ezeknek a műveleteknek az automatizálása az Excel és a Word között.
Másolja és illessze be az Excel tartományt Wordbe a VBA segítségével
Mindkét példában az Excel táblázatkezelő mintával kezdjük. Ez a minta a különféle termékek megrendeléseinek listáját tartalmazza.
Tegyük fel, hogy szeretné átmásolni és beilleszteni a munkalap celláinak teljes tartományát Word dokumentumba. Ehhez írnia kell egy VBA függvényt, amely akkor fut, ha rákattint a „Másolás Wordbe” gombra.
választ Fejlesztő a menüből, és válassza a lehetőséget Insert a kontroll csoportból a szalagon. A legördülő listából válassza az Button control pontot az ActiveX vezérlők alatt.
Ezután rajzolja a parancsgombot a lap jobb oldalán. A feliratot „Copy to Word” -re válthatja, ha a jobb gombbal kattint a gombra, és kiválasztja Tulajdonságok. Módosítsa a felirat szövegét, és a Betűkészlet használatával frissítheti a betűméretet és a stílust.
jegyzet: Ha nem látod Fejlesztő az Excel menüben, majd adja hozzá. választ fájl, Opciók, Testreszabhatja a szalagot, és válassza a lehetőséget Minden parancs a bal oldali legördülő menüből. Akkor mozogj Fejlesztő a bal oldali ablaktól jobbra, és a befejezéshez válassza az OK lehetőséget.
Írja be a másolás és beillesztés VBA kódot
Most már készen áll a VBA-kód írására. Az induláshoz kattintson duplán az új elemre Másolás a Wordbe gombot a kódszerkesztő ablak megnyitásához.
Látnia kell a Commandbutton1_Click () nevű alprogramot, az alább látható módon.
Kívánja másolni az alábbi kódrészleteket. A kódolás megkezdése előtt annak érdekében, hogy a Word a számítógépen a VBA segítségével vezérelhető legyen, engedélyeznie kell a Microsoft Word referenciakönyvtárat.
A kódszerkesztőben válassza a lehetőséget Eszközök a menüből, és válassza a lehetőséget Irodalom. A rendelkezésre álló hivatkozások listájában görgessen le és engedélyezze Microsoft Word 16.0 objektumkönyvtár.
Válassza az OK lehetőséget, és készen áll a kódolás megkezdésére. Egyszerre átvizsgáljuk a kód minden szakaszát, hogy megértsék, miért és miért ez a kód.
Először létre kell hoznia azokat a változókat és objektumokat, amelyek megtartják a tartományt, és lehetővé teszik a Word alkalmazás vezérlését.
Dim tblRange As Excel. Hatótávolság
Dim WordApp As Word. Alkalmazás
Dim WordDoc As Word. Dokumentum
Dim WordTable As Word. asztal
A következő sor sor kiválasztja a cellák egy meghatározott tartományát, és elmenti az Excel Range objektumba a VBA-ban.
Set tblRange = ThisWorkbook. Munkalapok ( "Munka1"). Tartomány ( "A2: G44")
Ezután ellenőrizze, hogy a Word alkalmazás már nyitva van-e a számítógépen. Erre a Word alkalmazásra hivatkozhat egy speciális „osztály” hivatkozás segítségével a VBA GetObject paranccsal. Ha a Word még nem volt megnyitva, akkor a következő sor a CreateObject funkcióval indítja el. Az „On Error Resume Next” sor betiltja az első GetObject funkció bármely hibáját (ha a Word még nincs megnyitva), hogy megállítsa a következő sor végrehajtását a programban.
On Error Folytatás Next
Set WordApp = GetObject (class: = "Word. Alkalmazás")
Ha a WordApp semmi, akkor állítsa be a WordApp = CreateObject parancsot (osztály: = "Word. Alkalmazás")
Most, hogy elindult a Word alkalmazás, szeretné láthatóvá tenni a felhasználót, és aktiválni a felhasználáshoz.
WordApp. Látható = igaz
WordApp. Aktiválja
Ezután új dokumentumot szeretne létrehozni a Word alkalmazásban.
Állítsa be a WordDoc = WordApp beállítást. Dokumentumokat. hozzáad
Végül átmásolja és beillesztheti a cellák tartományát egy új táblázatba a Word dokumentumban.
tblRange. Másolat
WordDoc. (1) bekezdés. PasteExcelTable _
LinkedToExcel: = Hamis, _
WordFormatting: = Hamis, _
RTF: = False
A fenti funkció kapcsolói nem összekapcsolt táblát fognak beilleszteni forrás Excel formázással (nem Word formázással), és nem gazdag szöveg formátummal.
Végül: ha a dokumentumnál szélesebb Excel tartományokat szeretnénk kezelni, akkor az új táblát automatikusan be kell állítanunk, hogy az beleférjen az új Word dokumentum széléhez.
Állítsa be a WordTable = WordDoc beállítást. Asztalok (1)
WordTable. AutoFitBehavior (wdAutoFitWindow)
És most már kész! Mentse a fájlt makrokompatibilis Excel fájlként (.xlsm kiterjesztés). Zárja be a szerkesztőt, mentse újra az eredeti Excel fájlt, majd kattintson a parancs gombra a kód működésbe lépéséhez!
Írjon Excel eredményeket egy Word táblába a VBA segítségével
Ebben a következő szakaszban beírja a VBA-kódot, amely elvégzi az értékek kiszámítását az Excelben, és ezeket beírja egy táblázat a Word-ben.
Ebben a példában 10 sornyi adatot vonunk be, kiszámoljuk és az eredményeket egy Word dokumentum táblájába írjuk. Az eredeti táblázat emellett négy oszlopot fog tartalmazni, és a VBA kód húzza az első tíz adatsort ebből a tartományból.
Csakúgy, mint az előző szakaszban, minden szakaszon átmenünk, így megértjük, miért és miért ez a kód.
Először hozzon létre azokat a változókat és objektumokat, amelyek az adatokat tárolják, és lehetővé teszik a Word alkalmazásba való íráshoz.
Dim tblRange As Excel. Hatótávolság
Dim WrdRange mint szó. Hatótávolság
Dim WordApp As Word. Alkalmazás
Dim WordDoc As Word. Dokumentum
Dim WordTable As Word. asztal
Dim intRows
Homályos intColumns
Dim strDate as String
Dim strItem as String
Dim intUnits As Variant
Dim intCost As Variant
Dim intTotal As Variant
Ezután állítsa be az összes oszlopot és sort, amelyet el szeretne olvasni az Excel tartományból.
intNoOfRows = 10
intNoOfColumns = 5
Ismételje meg a kódot, mint az utolsó szakasz, amely megnyitja a Word-t, ha még nem nyitott meg.
On Error Folytatás Next
Set WordApp = GetObject (class: = "Word. Alkalmazás")
Ha a WordApp semmi, akkor állítsa be a WordApp = CreateObject parancsot (osztály: = "Word. Alkalmazás")
WordApp. Látható = igaz
WordApp. Aktiválja
Állítsa be a WordDoc = WordApp beállítást. Dokumentumokat. hozzáad
A következő négy sor táblát hoz létre az újonnan megnyílt Word dokumentumban.
Állítsa be a WrdRange = WordDoc beállítást. Tartomány (0, 0)
WordDoc. Táblázatokban. Adjon hozzá WrdRange, intNoOfRows, intNoOfColumns
Állítsa be a WordTable = WordDoc beállítást. Asztalok (1)
WordTable. Határokat. Engedélyezés = Igaz
Végül a következő hurok hajtja végre ezeket a műveleteket:
- Minden sorhoz tegye a változókat a rendelés dátuma, az elem, az egységek és a költség
- Számítsa ki az egységszeri költségeket (teljes eladás), és tárolja ezt egy változóban
- Minden oszlophoz írja be az értékeket a Word táblába, beleértve az utolsó cellában szereplő kiszámított teljes eladást
- Lépjen a következő sorra, és ismételje meg a fenti eljárást
Így néz ki ez a kód:
I = 1 esetén intNoOfRows esetén
J = 1 esetén az intNoOfColumns számára
Ha j = 1, akkor
strDate = tblRange. Cella (i + 1, j) .Érték
strItem = tblRange. Cella (i + 1, j + 1) .Érték
intUnits = Val (tblRange. Cella (i + 1, j + 2) .érték)
intCost = Val (tblRange. Cella (i + 1, j + 3) .érték)
intTotal = intUnits * intCost
Vége If
Válassza a j eset lehetőséget
Eset = 1
WordTable. (I, j) cella. Szöveg = strDate
Eset = 2
WordTable. (I, j) cella. Szöveg = strItem
Eset = 3
WordTable. (I, j) cella. Szöveg = intUnits
Eset = 4
WordTable. (I, j) cella. Szöveg = intCost
Eset = 5
WordTable. (I, j) cella. Szöveg = intTotal
Else eset
Választás befejezése
Következő
Következő
Az első rész „Cella” funkciója húzza a cellaértékek az Excelből. Cella (x, y) azt jelenti, hogy meghúzza a cella értékét az x sorban és az y oszlopban.
Az utolsó rész „Cell” funkciója írja a Word táblázat celláira, ugyanazzal a sor- és oszlop-hozzárendeléssel.
Miután elmentette és futtatta ezt a VBA-kódot, látni fogja az eredményeket az újonnan létrehozott Word-dokumentumban.
Mint láthatja, nem túl bonyolult létrehozni hasznos automatizálást az Excel és a Word között. Csak meg kell érteni, hogyan működnek a különféle „objektumok”, amelyek képesek létrehozni és irányítani mind a számítógépen lévő Excel, mind a Word alkalmazásokat.