Lekce 1 - Úvod do VBA pro Word
V této lekci se naučíme pracovat s VBA v prostředí Wordu a seznámíme
se s objekty nejvyšších úrovní v aplikaci MS Word. Konkrétně se bude
jednat o objekty Application
, Document
,
Section
, Paragraph
.
Úvod do VBA ve Wordu
V kurzu Základy Microsoft VBA jsme probrali celý rozsah jazyka. Ten je univerzálně užíván k řízení aplikací v rámci MS Office. Jazyk používá klasické deklarace proměnných, cykly, podmínky a další procedurální prvky. Pro práci s daty a dokumenty v aplikacích MS Office je jazyk VBA rozšířen o práci s objekty.
Obecněji jsme o této problematice VBA pojednali v již zmíněném kurz Základy Microsoft VBA, takže tyto znalosti budeme zde považovat za základ, který uživatel zná. Objekty mezi aplikacemi MS Office se liší jednak pro zaměření každé jednotlivé aplikace na různou část zpracování dat a dokumentů, ale také kvůli svému vzniku.
VBA pro Word má stovky objektů. K hlavním objektům ve Wordu existují desítky až stovky vlastností, metod, událostí, parametrů a konstant.
Většina uživatelů se při práci s problematikou této aplikace v prostředí VBA setká s desítkami objektů, vlastností a metod pro řešení specifických problémů nebo ovládání dokumentů. Protože mnohé vlastnosti a metody mají variantní formy zápisu a množství parametrů, které dovolují další rozdílné směry použití, je i tento rozsah užívání jazyka poměrně náročný.
Objekty budeme probírat podle jejich hierarchie od nejvyšší
úrovně Document
až po nejnižší, které dovolují uživateli
pracovat s jednotlivým odstavcem, slovem nebo znakem, tak jak
potřebujeme pro svoje řešené úkoly. Z předchozích vět vyplývá, že
probírat zde všechny jednotlivé případy použití, byť jenom těch
nejzákladnějších objektů do detailů je nemožné. V této úrovni výuky
budeme probírat základní a typické použití objektů v praxi.
Vstup do prostředí VBA
Pro osvěžení paměti uvádíme nejjednodušší přechod z dokumentu Word do prostředí programovacího jazyka VBA. Z okna dokumentu z běžné práce v textu použijeme klávesy Alt+F11. Zobrazí se nám pracovní prostředí jazyka, které je vázáno na všechny otevřené dokumenty, jak je možno se přesvědčit v levém horním okně v průzkumníku projektu. Přístup do prostředí VBA je také umožněn přes funkci menu, která obecně není v menu zobrazována. Přidání si ikony pro přístup do programového prostředí přes Soubor/Možnosti ukazuje obrázek:
Pomůckou pro práci programátora s objekty je prohlížeč objektů Object Browser. V prostředí VBA jej zobrazíme klávesou F2, nebo z menu View.
Názvosloví
U objektů užíváme popisu:
- vrací objekt,
- ukazuje na objekt,
- odkazuje na objekt.
V podstatě jde o různé vyjádření téhož výsledku příkazu, používané v různých kontextech. Pokud výsledek příkazu dosazujeme do proměnné, používáme pojem vrací objekt, v jiných případech další dva popisy, ale ve výsledku jde o shodný příkaz.
Hierarchie objektů ve Wordu umožňující práci s textem
Hierarchie objektů je následující:
Application
,Document
,Section
,Paragraph
,Range
,Selection
.
Než se budeme věnovat dalším detailům, je třeba uvést postavení VBA v obsluze dokumentů Wordu. Aplikace je v současných verzích vybavena mnoha funkcemi, které dříve byly obsluhovány programem. Dnes se obsluha programem používá u rozsáhlých a mnohonásobně členitých dokumentů, kde umožňuje získat přehled o celku a analýzu částí v rozsahu, na který funkce menu nedosáhnou. Dalším oborem, kde se VBA uplatňuje je automatizace rutinních prací.
Dále je třeba uvést, že text je mnohem variabilnější a méně organizovaný než například tabulka v Excelu nebo Accessu, a tak automatizace činností v rámci práce s textem je obtížnější.
Objekty z horních pater struktury, tedy
Application
, Document
, Section
a
Paragraph
budou zde popsány pouze v nejnutnějším rozsahu,
protože většinou ve VBA pracujeme s objekty Range
a
Selection
, které se často vážou k objektům vyšším, tedy zde
uvedeným. V takových případech budou vysvětleny podrobnosti u detailu,
často přímo s příkladem použití.
Objekt Application
Objekt Application
je implicitní objekt na vrcholu hierarchie.
Vždy se vztahuje k právě otevřené části MS Office, v našem
případě k Wordu, a proto se často ve výčtu objektu při volání objektů
neuvádí. Je jediný a některé speciální případy použití budou
uvedeny později.
Objekt Document
Objekt Document
reprezentuje jeden otevřený
dokument v aplikaci Word. Všechny otevřené
dokumenty tvoří kolekci Documents
,
která umožňuje přístup k jednotlivým otevřeným dokumentům pomocí
indexu v kolekci nebo použitím názvu dokumentu.
Příklad uvádí dvě verze stejného příkazu, pokud se první otevřený
dokument nazývá Den1.doc
:
Documents(1).Activate Documents("Den1.doc").Activate
Vlastnosti objektu
Document
Objekt Document
má nejčastěji užívané vlastnosti:
Password
- heslo,Name
- název dokumentu,Paragraphs
- kolekce odstavců,Path
- úplná cesta k dokumentu,Revisions
- kolekce sledovaných změn,Sections
- kolekce oddílů,Tables
- kolekce tabulek,Words
- kolekce slov.
Příklad, jak zjistit úplnou cestu k právě otevřenému dokumentu včetně názvu a výpis doplníme počtem slov v dokumentu:
Dim varDoc As Document Set varDoc = Application.Documents(1) Debug.Print varDoc.Path & "\" & varDoc.Name Debug.Print varDoc.Words.Count
Metody objektu Document
K metodám objektu Document
řadíme:
Activate
- vytvoří objektActiveDocument
reprezentující otevřený a aktivní dokument z kolekceDocuments
,Close
- zavře aktivní dokument,PrintOut
- aktivní dokument odešle na nastavenou tiskárnu,PrintPreview
- otevře dokument k prohlídce před tiskem,Protect
- zahesluje dokument,Save
- uloží dokument,SaveAs2
- dokument uloží jako...,Undo
- vrátí změny,Unprotect
- zruší zaheslování dokumentu.
Dokument zobrazený k prohlídce v tiskové podobě:
Dim varDoc As Document Set varDoc = Application.Documents(1) varDoc.PrintPreview
Objekt Document
má kromě toho události, umožňující jejich
zachycení a obsluhu. To znamená vytvořit k tomu příslušnou proceduru,
jejíž hlavičku nám systém nabídne:
Open
,Close
.
Nastavení prostředí pro psaní událostní procedury je na obrázku a to včetně textu procedury pro uzavření dokumentu, kde se zobrazí výstražná zpráva:
Objekt Section
V české verzi Wordu se tento objekt nazývá oddíl. Většinou se s ním pracuje v rozsáhlejších dokumentech, které mají složitější členění. Umožňuje změnu záhlaví, zápatí a vzhledu stránky, což jsou také jeho nejdůležitější vlastnosti:
Footers
- zápatí,Headers
- záhlaví,PageSetup
- nastavení stránky.
Objekt Paragraph
V české verzi se tento objekt nazývá odstavec. K němu
se vztahuje už velká část prací s textem, jeho výbava vlastnostmi a
metodami tomu odpovídá, jsou jich desítky. Nejčastějším objektem
Range
bývá právě odstavec, případně slovo. Budeme se proto s
objektem Paragraph
setkávat neustále, snad ve většině
příkladů. Důležitou roli zde hraje také kolekce odstavců
Paragraphs
, která má mnohé metody a vlastnosti společné s
objektem Paragraph
a tím pádem umožňuje nastavit u všech
odstavců v kolekci shodné vlastnosti, například styl, řádkování, písmo
a jeho vlastnosti.
Pozor, každý odstavec končí odřádkováním. Pokud se v textu vyskytne pouze prázdné odřádkování, bez textu, je to považováno za odstavec.
Nejčastěji užívané vlastnosti a metody objektu Paragraph
i
jeho kolekce (toto umožňuje změnit nastavení uvedených vlastností ve
všech členech kolekce, zde ve všech odstavcích dokumentu):
Vlastnosti objektu
Paragraph
K nejčastěji užívaným vlastnostem objektu Paragraph
řadíme:
Format
Style
Metody objektu Paragraph
K nejčastěji užívaným metodám objektu Paragraph
řadíme:
Indent
Outdent
Next
Space1
Space15
Space2
Upozorníme na dvě důležité a současně zrádné vlastnosti
kolekce Paragraphs
. Jsou to:
First
,Last
.
Ukazují na první nebo poslední odstavec v nadřízeném
objektu, nejčastěji dokumentu. Každé odřádkování je současně odstavcem
a tedy prázdný řádek na konci dokumentu nám vrátí prázdný odstavec při
použití vlastnosti Last
.
V příští lekci, Objekt Range ve VBA pro Word - Vymezení, základní vlastnosti, si probereme vymezení a základní vlastnosti objektu Range ve VBA pro Word. Jedná se o základní objekt určený k manipulaci s textem.