Ako vložiť tabuľku Excelu do programu Word s VBA
Microsoft Office Microsoft Word Microsoft Microsoft Excel Hrdina Slovo / / April 29, 2020
Posledná aktualizácia dňa
VBA je veľmi výkonný nástroj, ktorý môžete použiť na automatizáciu množstva práce medzi viacerými aplikáciami balíka Microsoft Office. Jednou z bežných činností, ktorú môžete zautomatizovať pomocou VBA, je vloženie tabuľky programu Excel do dokumentu programu Word.
Visual Basic for Applications (VBA) je veľmi výkonný nástroj, ktorý môžete použiť na automatizáciu množstva práce medzi viacerými aplikáciami balíka Microsoft Office. Jednou z bežných činností, ktorú môžete zautomatizovať pomocou VBA, je vloženie tabuľky programu Excel do dokumentu programu Word.
Existujú dva spôsoby, ako to môžete urobiť. Prvým je automatizácia priamej kópie a vloženia existujúceho rozsahu z Excelu do novej tabuľky v dokumente programu Word. Druhým je vykonávanie výpočtov v programe Excel, vytvorenie novej tabuľky v programe Word a zapísanie výsledkov do tabuľky.
Môžete to skúsiť zaznamenať makro to urobíte, ale makrá vám umožnia automatizovať iba úlohy v rámci programu Word. V tomto článku sa naučíte, ako napísať kód VBA na automatizáciu týchto akcií medzi programami Excel a Word.
Skopírujte a prilepte rozsah programu Excel do aplikácie Word s VBA
V obidvoch príkladoch začneme s ukážkovou tabuľkou programu Excel. Táto vzorka predstavuje zoznam objednávok na rôzne produkty.
Povedzme, že chcete skopírovať a vložiť celú škálu buniek v tomto pracovnom hárku do dokumentu programu Word. Ak to chcete urobiť, musíte napísať funkciu VBA, ktorá sa spustí po kliknutí na tlačidlo „Kopírovať do aplikácie Word“.
vybrať vývojka z ponuky a vyberte položku insert zo skupiny Ovládacie prvky na páse s nástrojmi. V rozbaľovacom zozname vyberte v časti Ovládacie prvky ActiveX ovládanie tlačidiel.
Potom nakreslite príkazové tlačidlo na pravej strane hárka. Titulok môžete zmeniť na „Kopírovať do programu Word“ kliknutím pravým tlačidlom myši na tlačidlo a výberom položky vlastnosti. Zmeňte text titulkov a pomocou písma môžete aktualizovať veľkosť a štýl písma.
Poznámka: Ak to nevidíš vývojka v ponuke programu Excel a potom ju pridajte. vybrať súbor, možnosti, Prispôsobte pásku, a vyberte Všetky príkazy z rozbaľovacej ponuky vľavo. Potom sa pohnite vývojka z ľavého panela doprava a dokončite výber kliknutím na tlačidlo OK.
Napíšte kópiu a prilepte kód VBA
Teraz ste pripravení začať písať kód VBA. Ak chcete začať, dvakrát kliknite na nové Kopírovať do aplikácie Word na otvorenie okna editora kódu.
Mali by ste vidieť podprogram s názvom Commandbutton1_Click (), ako je to znázornené nižšie.
Nižšie budete chcieť skopírovať každú časť kódu. Predtým, ako začnete s kódovaním, aby ste vo svojom počítači mohli ovládať program Word pomocou VBA, musíte povoliť referenčnú knižnicu programu Microsoft Word.
V editore kódu zvoľte náradie z ponuky a vyberte položku Referencie. V zozname Dostupné referencie prejdite nadol a povoľte Knižnica objektov programu Microsoft Word 16.0.
Vyberte položku OK a môžete začať kódovať. Každú časť kódu prejdeme naraz, aby ste pochopili, čo tento kód robí a prečo.
Najprv musíte vytvoriť premenné a objekty, ktoré budú držať rozsah, a umožniť vám ovládať aplikáciu Word.
Dim tblRange As Excel. rozsah
Dim WordApp ako Word. prihláška
Dim WordDoc ako Word. dokument
Dim WordTable As Word. stôl
Ďalší riadok kódu vyberie konkrétny rozsah buniek a uloží ho do objektu Excel Range vo VBA.
Set tblRange = ThisWorkbook. Listy ( "Sheet1") kategórie. ( "A2: G44")
Ďalej chcete skontrolovať, či je v počítači už otvorená aplikácia Word. Môžete to urobiť pomocou aplikácie Word pomocou špeciálneho odkazu „class“ pomocou príkazu VBA GetObject. Ak program Word ešte nie je otvorený, nasledujúci riadok ho spustí pomocou funkcie CreateObject. Riadok „On Error Resume Next“ zabraňuje akejkoľvek chybe z prvej funkcie GetObject (ak Word ešte nie je otvorený) v zastavení vykonávania nasledujúceho riadku v programe.
Pri chybe Pokračujte ďalej
Nastaviť WordApp = GetObject (class: = "Word. Aplikácia ")
Ak WordApp nič nestanovuje, nastavte WordApp = CreateObject (class: = "Word. Aplikácia ")
Teraz, keď je spustená aplikácia Word, chcete ju zviditeľniť a aktivovať pre použitie.
WordApp. Viditeľné = Pravda
WordApp. Aktivovať
Ďalej chcete vytvoriť nový dokument v aplikácii Word.
Nastaviť WordDoc = WordApp. Dokumenty. pridať
Nakoniec skopírujete a prilepíte rozsah buniek do novej tabuľky v dokumente programu Word.
tblRange. kópie
WordDoc. Odseky (1). PasteExcelTable _
LinkedToExcel: = False, _
WordFormatting: = False, _
RTF: = False
Prepínače vo vyššie uvedenej funkcii vložia neprepojenú tabuľku pomocou zdrojového formátovania Excel (nie formátovania Word) a nepoužívajú formát RTF.
Nakoniec, ak chcete pracovať s rozsahmi programu Excel, ktoré sú širšie ako dokument, budete musieť novú tabuľku upraviť automaticky, aby sa zmestila na okraje nového dokumentu Word.
Nastaviť WordTable = WordDoc. Tabuľky (1)
WordTable. AutoFitBehavior (wdAutoFitWindow)
A teraz ste hotoví! Uložte súbor ako súbor Excel s povoleným makrom (prípona .xlsm). Zatvorte editor, znova uložte pôvodný súbor programu Excel a kliknutím na príkazové tlačidlo zobrazte svoj kód v akcii!
Výsledky programu Excel zapíšte do tabuľky s programom VBA
V tejto nasledujúcej časti napíšete kód VBA, ktorý vykonáva výpočty hodnôt v Exceli, a zapisuje ich tabuľka v programe Word.
V tomto príklade vytiahneme údaje v hodnote 10 riadkov, vypočítame a zapíšeme výsledky do tabuľky v dokumente programu Word. Pôvodná tabuľka bude tiež obsahovať štyri stĺpce a kód VBA vytiahne prvých desať riadkov údajov z tohto rozsahu.
Rovnako ako v poslednej sekcii prejdeme každou sekciou naraz, aby ste pochopili, čo tento kód robí a prečo.
Najskôr vytvorte premenné a objekty, v ktorých budú uložené údaje, a umožní vám písať do aplikácie Word.
Dim tblRange As Excel. rozsah
Dim WrdRange As Word. rozsah
Dim WordApp ako Word. prihláška
Dim WordDoc ako Word. dokument
Dim WordTable As Word. stôl
Dim intRows
Stlmiť intColumns
Dim strDate As String
Dim strItem As String
Dim intUnits As Variant
Dim intCost As Variant
Dim intTotal As Variant
Ďalej nastavte celkový počet stĺpcov a riadkov, ktoré chcete prečítať z rozsahu Excelu.
intNoOfRows = 10
intNoOfColumns = 5
Opakujte rovnaký kód ako posledná časť, ktorá otvorí program Word, ak ešte nie je otvorený.
Pri chybe Pokračujte ďalej
Nastaviť WordApp = GetObject (class: = "Word. Aplikácia ")
Ak WordApp nič nestanovuje, nastavte WordApp = CreateObject (class: = "Word. Aplikácia ")
WordApp. Viditeľné = Pravda
WordApp. Aktivovať
Nastaviť WordDoc = WordApp. Dokumenty. pridať
Nasledujúce štyri riadky vytvoria tabuľku vo vnútri novo otvoreného dokumentu programu Word.
Nastaviť WrdRange = WordDoc. Rozsah (0, 0)
WordDoc. Stoly. Pridajte stĺpce WrdRange, intNoOfRows, intNoOfColumns
Nastaviť WordTable = WordDoc. Tabuľky (1)
WordTable. Hranice. Enable = True
Nakoniec bude nasledovať nasledujúca slučka:
- Pre každý riadok zadajte do premenných dátum objednávky, položku, jednotky a náklady
- Vypočítajte jednotkové časy nákladov (celkový predaj) a uložte ich do premennej
- Do každého stĺpca zapíšte hodnoty do tabuľky programu Word vrátane vypočítaného celkového predaja v poslednej bunke
- Prejdite na ďalší riadok a zopakujte vyššie uvedený postup
Ako vyzerá tento kód:
Pre i = 1 na intNoOfRows
Pre j = 1 do intNoOfColumns
Ak j = 1, potom
strDate = tblRange. Bunky (i + 1, j). Hodnota
strItem = tblRange. Bunky (i + 1, j + 1). Hodnota
intUnits = Val (tblRange. Bunky (i + 1, j + 2) .Hodnota)
intCost = Val (tblRange. Bunky (i + 1, j + 3) .Hodnota)
intTotal = intUnits * intCost
Koniec Ak
Vyberte Prípad j
Prípad Is = 1
WordTable. Bunka (i, j) .Rozsah. Text = strDate
Prípad Is = 2
WordTable. Bunka (i, j) .Rozsah. Text = strItem
Prípad je = 3
WordTable. Bunka (i, j) .Rozsah. Text = intUnits
Prípad je = 4
WordTable. Bunka (i, j) .Rozsah. Text = intCost
Prípad je = 5
WordTable. Bunka (i, j) .Rozsah. Text = intTotal
Prípad iný
Ukončiť výber
Ďalšie
Ďalšie
Funkcia „Cells“ v prvej časti vytiahne hodnoty buniek mimo Excel. Bunky (x, y) znamenajú, že ťahajú hodnotu bunky v riadku x a stĺpci y.
Funkcia „Bunka“ v poslednej časti zapisuje do buniek v tabuľke programu Word pomocou rovnakých priradení riadkov a stĺpcov.
Po uložení a spustení tohto kódu VBA sa výsledky zobrazia v novovytvorenom dokumente programu Word.
Ako vidíte, vytvorenie užitočnej automatizácie medzi programami Excel a Word nie je príliš komplikované. Je to len otázka pochopenia toho, ako fungujú rôzne „objekty“, ktoré dokážu vytvárať a ovládať aplikácie Excel aj Word vo vašom počítači.