Jak na propojení Excelu s Wordem

Jak na propojení Excelu s Wordem a proč vůbec?

Zde je několik situací, kdy je lepší přenechat výstupy Excelu na Wordu:
– potisk štítků na standardizovaných arších
– popisný text a data netvoří spojité celky a rozložení lépe zvládnou tabulátory než mřížka listu
– ztráta kontroly nad formátováním textu v buňkách, jeho zalamováním a přetékáním
– potřeba složitějšího záhlaví a zápatí
– nutnost změny v číslování stránek
– existence titulní stránky, obsahu apod., kdy data Excelu jsou pouze součástí komplexnější zprávy, nabídky, či smlouvy
– výstup připomíná všechno, jen ne „dashboard“ (kompaktní přehled klíčových ukazatelů)

Hromadná korespondence

První technikou pro přenášení dat z Excelu do Wordu je Hromadná korespondence – nástroj Wordu, jehož název nebyl zvolen šťastně. Hromadná korespondence neslouží jen ke generování a plnění hlavičkových papírů či obálek adresami. Je dobré si uvědomit, že jejím prostřednictvím můžete vytvářet nejrůznější štítky, Word disponuje i šablonami standardně dodávaných archů pro samolepky, je schopen odfiltrovat nechtěné záznamy a zkrátka umí další kousky bez toho, že byste museli cokoliv programovat. My se jí ovšem věnovat nebudeme a přejdeme k druhému způsobu.

Propojení Excelu s Wordem přes záložky

Jak už říká titulek, klíčové jsou tzv. záložky. Představte si je jako barevné praporky zabodnuté do potřebných míst dokumentu Wordu, kam budeme vkládat údaje z Excelu. Data tak zapadnou do okolního textu a budou respektovat i jeho formátování. Cílový uživatel záložky pochopitelně neuvidí, jemu budou po odladění skryty.

Příprava dokumentu
Je dobrým zvykem neplnit daty konkrétní dokument (.docx), ale nový soubor založený na šabloně (.dotx). Nemůže se tak stát, že vám uživatel pracně definovaný vzor zničí jeho přeuložením.

Níže uvedené obrázky ukazují snadnou práci se záložkami ve Wordu (oním pomyslným praporkem je symbol I).

Microsoft Word - zobrazení záložek
Microsoft Word – zobrazení záložek
Microsoft Word - práce se záložkami
Microsoft Word – práce se záložkami

Pozn. Pro účely testování bylo úmyslně ponecháno v šabloně písmo Times New Roman velikosti 12, zatímco v sešitu je užit font Calibri velikosti 11. V praxi by měla platit dvě typografická pravidla – písmo v tabulce dokumentu je o 1-2 stupně menší než základní font a nedoporučují se v nich patkové fonty. Calibri je v novodobých verzích Microsoft Office výchozí pro Excel i Word.

A nyní už se dostáváme ke zdrojovému sešitu a programovému kódu.

Zdrojová data v sešitu
Zdrojová data v sešitu
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
Sub ExportDoWordu()

    Dim objWord As Object
    Dim objWordDocument As Object
    Dim objStory As Object
    Dim objToc As Object

    Set objWord = CreateObject("Word.Application")

    With objWord

        'otevření dokumentu
        'Set objWordDocument = .Documents.Open(ThisWorkbook.Path & _
            "\Dokument.docx")


        'otevření dokumentu postaveném na šabloně
        Set objWordDocument = .Documents.Add(Template:=ThisWorkbook.Path & _
            "\Dokument.dotx")

        With objWordDocument

            'zápis do definované vlastnosti dokumentu "VlastnostExcelPromenna"
            've Wordu použita jako pole
            .CustomDocumentProperties("VlastnostExcelPromenna") = Range("C4")

            'vynucená aktualizace polí
            For Each objStory In .StoryRanges
                objStory.Fields.Update
            Next objStory

            For Each objToc In .TablesOfContents
                objToc.Update
            Next objToc

            'vložení obsahu buňky do místa záložky "ZalozkaExcelPromenna"
            .Bookmarks("ZalozkaExcelPromenna").Range.Text = Range("C2")

            'kopie tabulky do místa záložky "ZalozkaExcelTabulka"
            .Bookmarks("ZalozkaExcelTabulka").Select
            'pokračuje dále

        End With

        'kopie oblasti C6:E8
        Range("C6:E8").Copy

        'propojená tabulka?
        'přebírat formátování Wordu?
        'kopie ve formátu HTML?
        .Selection.PasteExcelTable False, False, False

        'videlná aplikace Word
        .Visible = True
        'předání fokusu
        .Activate

        'uvolnění z paměti
        Set objWordDocument = Nothing
        Set objWord = Nothing

    End With

End Sub
Zdrojová data vložená do Wordu
Zdrojová data vložená do Wordu

Přenášíme-li prostou hodnotu do místa v dokumentu, není moc co řešit. U bloku dat (tabulky) existuje několik technik vkládání. Vybraný způsob považuji za nejlepší, byť nemám rád práci s objektem Selection. Snímky zachycují výsledky při obměně parametrů metody PasteExcelTable.

Microsoft Word - vložení tabulky
Microsoft Word – vložení tabulky
Microsoft Word - vložení tabulky
Microsoft Word – vložení tabulky
Microsoft Word - vložení tabulky
Microsoft Word – vložení tabulky

Výpis kódu hned zkraje ukazuje ještě jedno místo, kam ukládáme hodnotu z Excelu, a to do námi definované proměnné ve vlastnostech dokumentu. Ta naše je typu datum a při deklaraci ji musíme určit výchozí hodnotu. Jestliže máme takto naplněnou proměnnou, prostřednictvím polí se na ni můžeme odkazovat kdekoliv (i opakovaně) v dokumentu.

Microsoft Word - vlastní proměnná
Microsoft Word – vlastní proměnná

A nakonec ještě poznámka k bloku kódu pro aktualizaci polí. Pro ni by měla ve Wordu sloužit klávesa F9. Bohužel je nespolehlivá a na tuhle botu si uživatelé stěžují již řadu let. Uvedený kód je jednou z cest, jak aktualizace docílit. Pojistkou je rovněž zobrazení náhledu dokumentu před tiskem.

Kombinování stránek dokumentu a listů sešitu dohromady je bez pardonů „hatláma patláma paprťála“. Listy přitom zpravidla přidáváme jako přílohu (v horším případě jako obrázky otočené o devadesát stupňů), a zadání vyžaduje dodržet číslování stránek a přílohy otitulkovat. Tady je ovšem každá rada drahá a přinejmenším je nutné počítat s tím, že budeme nuceni zmenšit měřítko zobrazované tabulky (obrázku).

Formát PDF je dnes v Microsoft Office nabízen při ukládání již nativně. Ne vše ale zvládají a někdy je výhodnější sáhnout po jiném nástroji, ať už je jím virtuální tiskárna (mnou oblíbený BullZip s podporou VBA a příkazového řádku) nebo jiná pomůcka, jež například zvládne přilepit k našemu sešitu uloženému jako PDF výkres ve stejném formátu (utilitky tohoto typu jsou i zdarma a mají často v názvu slovíčko „merge“).

Formuláře, dotazníky a jim podobné

Jak naložit s formuláři jako je daňové přiznání? Pro tyto účely se lépe hodí Excel. Pole jsou často závislá na jiných, doprovází je výpočty, rozhodovací funkce atp. I Word toho zvládne hodně, dokument například umí zamknout jen pro účely vyplňování, nicméně přeci jen za tabulkovým kalkulátorem lehce pokulhává. Neznamená to ale, že je Excel ideální. Je to Word, který nabízí ovládací prvek pro výběr datumu, stavební bloky a další vychytávky. Oba programy můžeme také podpořit plněním dat z databází, ať už přes ADO (OLEDB) ve VBA, nebo prostřednictvím nadstavby připravené ve Visual Studiu.

Pozn.: Formulář daňového přiznání (pro FO) lze již několik let bezplatně stáhnout z internetu jako XLS soubor, a to včetně navazujících formulářů pro ČSSZ i VZP.

Svůj půvab mají interaktivní formuláře PDF, jenže ty bez plné a placené verze Adobe Acrobatu nejspíš nevytvoříte. Navíc zmizela i zajímavá aplikace InfoPath. Dříve jsme ji mohli najít jako součást balíčku Microsoft Office, v roce 2013 se ztratila někde na cestě do placeného SharePointu.

Specifickou skupinu úloh tvoří nejrůznější dotazníky, kvízy a testy. I pro ně existují aplikace, většinou postavené na webových technologiích. Použitelné jsou podle mých zkušeností pouze ty placené. Výjimku tvoří modul e-learningového systému Moodle a sluší se připomenout doplňky kancelářských aplikací online od Microsoftu i Googlu (najdete je pod názvy Průzkum v Microsoft Excel Online a Formulář v Google Dokumentech). Jejich výstupem je tabulka, v níž řádek (záznam) odpovídá jednomu odeslanému formuláři a hodnoty ve sloupcích představují vyplněné položky. Efektivnější je ovšem dle mého názoru shromažďovat data ve formátu XML (viz i zmíněný InfoPath).

Příloha:
excel_propojeni_word.zip