Jak vložit tabulku Excelu do aplikace Word s VBA
Microsoft Office Microsoft Word Microsoft Microsoft Excel Hrdina Slovo / / April 29, 2020
Poslední aktualizace dne
VBA je velmi výkonný nástroj, který můžete použít k automatizaci velké práce mezi několika aplikacemi sady Microsoft Office. Jednou běžnou činností, kterou můžete zautomatizovat pomocí VBA, je vložení tabulky Excel do dokumentu Word.
Visual Basic for Applications (VBA) je velmi výkonný nástroj, který můžete použít k automatizaci velké práce mezi více aplikacemi sady Microsoft Office. Jednou běžnou činností, kterou můžete zautomatizovat pomocí VBA, je vložení tabulky Excel do dokumentu Word.
Můžete to udělat dvěma způsoby. První je automatizace přímé kopie a vložení existujícího rozsahu z Excelu do nové tabulky v dokumentu Word. Druhým je provádění výpočtů v Excelu, vytvoření nové tabulky v aplikaci Word a zápis výsledků do tabulky.
Můžete to zkusit zaznamenat makro to provést, ale makra vám umožní automatizovat pouze úkoly uvnitř aplikace Word. V tomto článku se naučíte, jak psát kód VBA pro automatizaci těchto akcí mezi Excel a Word.
Kopírování a vložení rozsahu Excelu do aplikace Word pomocí VBA
V obou příkladech začneme ukázkovou tabulkou aplikace Excel. Tento vzorek je seznam objednávek na různé produkty.
Řekněme, že chcete zkopírovat a vložit celou řadu buněk v tomto listu do dokumentu aplikace Word. Chcete-li to provést, musíte napsat funkci VBA, která se spustí po kliknutí na tlačítko „Kopírovat do aplikace Word“.
Vybrat Vývojář z nabídky a vyberte Vložit ze skupiny Controls v pásu karet. V rozevíracím seznamu vyberte Ovládací prvek tlačítka v části Ovládací prvky ActiveX.
Poté nakreslete příkazové tlačítko na pravé straně listu. Titulek můžete změnit na „Kopírovat do aplikace Word“ kliknutím pravým tlačítkem myši na tlačítko a výběrem Vlastnosti. Změňte text titulku a pomocí písma můžete aktualizovat velikost a styl písma.
Poznámka: Pokud to nevidíš Vývojář v nabídce Excel a poté ji přidejte. Vybrat Soubor, Možnosti, Přizpůsobte pás karet, a vyberte Všechny příkazy z rozbalovací nabídky zleva. Pak se přesuňte Vývojář z levého panelu doprava a dokončete výběr OK.
Napište kód VBA pro kopírování a vložení
Nyní jste připraveni začít psát kód VBA. Nejprve poklepejte na nové Kopírovat do aplikace Word tlačítko pro otevření okna editoru kódu.
Měli byste vidět podprogram s názvem Commandbutton1_Click (), jak je ukázáno níže.
Budete chtít zkopírovat každou část kódu níže. Než začnete programovat, chcete-li v počítači ovládat Word pomocí VBA, musíte povolit referenční knihovnu aplikace Microsoft Word.
V editoru kódu vyberte Nástroje z nabídky a vyberte Reference. V seznamu Dostupné reference přejděte dolů a povolte Knihovna objektů Microsoft Word 16.0.
Vyberte OK a jste připraveni zahájit kódování. Projdeme každou část kódu najednou, abyste pochopili, co tento kód dělá a proč.
Nejprve musíte vytvořit proměnné a objekty, které budou držet rozsah a umožní vám ovládat aplikaci Word.
Dim tblRange As Excel. Rozsah
Dim WordApp jako Word. aplikace
Dim WordDoc jako Word. Dokument
Dim WordTable As Word. Stůl
Další řádek kódu vybere konkrétní oblast buněk a uloží jej do objektu Excel Range ve VBA.
Set tblRange = ThisWorkbook. Pracovní listy („List1“). Rozsah („A2: G44“)
Dále chcete zkontrolovat, zda je aplikace Word v počítači již otevřená. Chcete-li to provést, můžete odkazovat na aplikaci Word pomocí speciálního odkazu „class“ pomocí příkazu VBA GetObject. Pokud Word již není otevřen, spustí se další řádek pomocí funkce CreateObject. Řádek „On Error Resume Next“ zabraňuje jakékoli chybě z první funkce GetObject (pokud Word již není otevřen) v zastavení provádění dalšího řádku v programu.
On Error Resume Next
Nastavit WordApp = GetObject (class: = "Word. Aplikace")
Pokud WordApp nic není, nastavte WordApp = CreateObject (class: = "Word. Aplikace")
Nyní, když je spuštěna aplikace Word, chcete ji zviditelnit a aktivovat pro použití.
WordApp. Viditelné = Pravda
WordApp. aktivovat
Dále chcete vytvořit nový dokument uvnitř aplikace Word.
Nastavit WordDoc = WordApp. Dokumenty. Přidat
Nakonec zkopírujete a vložíte rozsah buněk do nové tabulky v dokumentu Word.
tblRange. kopírovat
WordDoc. Odstavce (1). PasteExcelTable _
LinkedToExcel: = False, _
WordFormatting: = False, _
RTF: = False
Přepínače ve výše uvedené funkci vloží neprepojenou tabulku pomocí zdrojového formátování Excel (nikoli formátování Word) a nepoužívá formát RTF.
A konečně, pro řešení rozsahů Excelu, které jsou širší než dokument, budete muset novou tabulku automaticky upravit tak, aby se vešla do okrajů nového dokumentu Word.
Nastavit WordTable = WordDoc. Stoly (1)
WordTable. AutoFitBehavior (wdAutoFitWindow)
A teď jste hotovi! Uložte soubor jako soubor Excel s povoleným makrem (přípona .xlsm). Zavřete editor, znovu uložte původní soubor aplikace Excel a poté kliknutím na příkazové tlačítko zobrazte svůj kód v akci!
Zapisujte výsledky Excelu do tabulky Word s VBA
V této další části napíšete kód VBA, který provádí výpočty hodnot v Excelu, a zapisuje je tabulka v aplikaci Word.
V tomto příkladu vytáhneme data o 10 řádcích, vypočítáme a zapíšeme výsledky do tabulky v dokumentu Word. Původní tabulka bude také obsahovat čtyři sloupce a kód VBA vytáhne prvních deset řádků dat z tohoto rozsahu.
Stejně jako v poslední části projdeme každou sekci najednou, abyste pochopili, co daný kód dělá a proč.
Nejprve vytvořte proměnné a objekty, které budou obsahovat data, a umožní vám zapisovat do aplikace Word.
Dim tblRange As Excel. Rozsah
Dim WrdRange As Word. Rozsah
Dim WordApp jako Word. aplikace
Dim WordDoc jako Word. Dokument
Dim WordTable As Word. Stůl
Dim intRows
Dim intColumns
Dim strDate As String
Dim StrItem As String
Dim intUnits As Variant
Dim intCost As Variant
Dim intTotal jako varianta
Dále nastavte celkový počet sloupců a řádků, které chcete číst z rozsahu Excelu.
intNoOfRows = 10
intNoOfColumns = 5
Opakujte stejný kód jako poslední část, která otevře aplikaci Word, pokud již není otevřená.
On Error Resume Next
Nastavit WordApp = GetObject (class: = "Word. Aplikace")
Pokud WordApp nic není, nastavte WordApp = CreateObject (class: = "Word. Aplikace")
WordApp. Viditelné = Pravda
WordApp. aktivovat
Nastavit WordDoc = WordApp. Dokumenty. Přidat
Další čtyři řádky vytvoří tabulku uvnitř nově otevřeného dokumentu aplikace Word.
Nastavit WrdRange = WordDoc. Rozsah (0, 0)
WordDoc. Tabulky. Přidejte WrdRange, intNoOfRows, intNoOfColumns
Nastavit WordTable = WordDoc. Stoly (1)
WordTable. Hranice. Enable = True
Nakonec provede následující akce následující smyčka:
- U každého řádku vložte do proměnných datum objednávky, položku, jednotky a náklady
- Vypočítejte jednotkové časy nákladů (celkový prodej) a uložte je do proměnné
- Pro každý sloupec zapište hodnoty do tabulky aplikace Word, včetně vypočítaného celkového prodeje v poslední buňce
- Přejděte na další řádek a opakujte výše uvedený postup
Jak tento kód vypadá:
Pro i = 1 k IntNoOfRows
Pro j = 1 do intNoOfColumns
Pokud j = 1, pak
strDate = tblRange. Buňky (i + 1, j). Hodnota
strItem = tblRange. Buňky (i + 1, j + 1). Hodnota
intUnits = Val (tblRange. Buňky (i + 1, j + 2) .Hodnota)
intCost = Val (tblRange. Buňky (i + 1, j + 3) .Hodnota)
intTotal = intUnits * intCost
Konec If
Vyberte Případ j
Případ je = 1
WordTable. Buňka (i, j) .Range. Text = strDate
Případ Is = 2
WordTable. Buňka (i, j) .Range. Text = strItem
Případ je = 3
WordTable. Buňka (i, j) .Range. Text = intUnits
Případ je = 4
WordTable. Buňka (i, j) .Range. Text = intCost
Případ je = 5
WordTable. Buňka (i, j) .Range. Text = intTotal
Případ Else
End Select
další
další
Funkce „Buňky“ v první části přitáhne hodnoty buněk mimo Excel. Buňky (x, y) znamenají, že táhne hodnotu buňky v řádku x a sloupci y.
Funkce „Buňka“ v poslední části zapisuje do buněk v tabulce Word pomocí stejných přiřazení řádků a sloupců.
Po uložení a spuštění tohoto kódu VBA uvidíte výsledky v nově vytvořeném dokumentu aplikace Word.
Jak vidíte, není příliš složité vytvořit nějakou užitečnou automatizaci mezi Excelem a Wordem. Jde jen o pochopení toho, jak fungují různé „objekty“, které mohou vytvářet a ovládat aplikace Excel i Word v počítači.