Jak na makra v produktech Office 97

Tento Tech-Tip by vás měl seznámit s možnostmi tvorby maker v produktech řady Microsoft Office 97. Předem ale podotýká...


Tento Tech-Tip by vás měl seznámit s možnostmi tvorby maker v produktech řady
Microsoft Office 97. Předem ale podotýkám, že jde opravdu jen o základy
programování a popis základních principů. Jelikož každou funkci programu je
možné vyvolat také prostřednictvím maker, kompletní popis maker by spolehlivě
vyplnil několik Technology Worldů za sebou.
Na tvorbu maker je v aplikacích Office 97 používán jazyk Visual Basic for
Applications (VBA), který je mírně odlišným dialektem jazyka Visual Basic. Pro
tvorbu maker a aplikací nabízí VBA mnoho různých objektů a funkcí, z nichž zde
zmíníme jen některé. Podrobnější popis objektů a funkcí můžete najít v nápovědě
anebo v tištěné dokumentaci.
Ačkoliv je nyní možné VBA požívat ve všech aplikacích Office od verze 97 (a v
jiných aplikacích, které VBA licencovaly), zde se zaměříme pouze na 2
nejpoužívanější Word a Excel.
Prostředí Visual Basic for Applications
Nejdříve je vhodné se seznámit s vývojovým prostředím Visual Basic for
Applications (VBA). Vývojové prostředí zobrazíte v libovolném programu z Office
97 pomocí menu Nástroje š Makro š š Editor jazyka Visual Basic. Vývojové
prostředí (nebo jednotlivá okna se zdrojovými texty) je možné zavřít bez
nutnosti cokoliv ukládat vše je uloženo do dokumentu automaticky.
Struktura vývojového prostředí
Na levé straně okna je zobrazen "Průzkumník projektu" a seznam vlastností
vybraného objektu. Na pravé straně okna se podle potřeby zobrazují zdrojové
kódy a formuláře.
Průzkumník projektu slouží k manipulaci s jednotlivými objekty, které jsou
součástí projektu. Při vybrání nějakého objektu se v okně s vlastnostmi zobrazí
různé parametry vybraného objektu.
Při kliknutí pravým tlačítkem do okna průzkumníka projektu se zobrazí menu,
které umožňuje vkládat nové objekty do projektu zejména "moduly" a
"formuláře" (UserForm).
Makra versus Aplikace
Nejdříve je nutné si ujasnit, jaký je rozdíl mezi makry a aplikacemi. Makra
jsou určité fragmenty kódu, které je možné používat při práci s dokumentem k
automatizaci určitých rutinních úkonů. Avšak pomocí stejných funkcí jazyka
Visual Basic je také možné přímo v Office vytvářet aplikace, které budou
požívat vlastní dialogová okna (formuláře), menu, nástrojové lišty a budou
podle potřeby reagovat na různé podněty uživatele.
Aplikace je složena z mnoha součástí z modulů (maker), z událostí, navázaných
na různé součásti aplikace, a z formulářů. Tvorba aplikací je podrobněji
rozebrána dále.
Záznam maker
Makra je možné poměrně jednoduše vytvořit pomocí funkce Nástroje š Makro š
Záznam nového makra. Tato funkce umožní zaznamenat činnosti prováděné s
dokumentem do vybraného makra. Záznam makra je také možné pozastavit, pokud
potřebujete udělat některé úkony, které nechcete do makra zaznamenat. Makro
obvykle není použitelné v zaznamenané podobě, ale můžete jej ručně poopravit do
požadovaného tvaru. Tento způsob je vhodný zejména pro začínající uživatele,
neboť takto získané makro je cenným studijním materiálem. Zaznamenané makro je
možné ihned zobrazit v editoru vývojového prostředí.
Editor zdrojového kódu
Editor zdrojových kódů je značně přizpůsoben pro méně zkušené uživatele. Jednak
podporuje barevné zvýrazňovaní syntaxe, což je v dnešní době již samozřejmost.
Důležité ale je, že editor se snaží nabízet různé možnosti, jak dokončit
rozepsaný příkaz. Pokud např. napíšete příkaz "Sub ...", editor automaticky
doplní příkaz "End Sub".
Technologie "IntelliSense" také zajišťuje automatické doplňování názvů různých
identifikátorů (názvů objektů, vlastností, proměnných a funkcí). Pokud máte při
psaní programového kódu rozepsané jméno nějakého identifikátoru, můžete použít
klávesy Ctrl-Mezerník pro automatické dopsání jména identifikátoru, případně
pro zobrazení seznamu dostupných identifikátorů. Pokud chcete přistupovat ke
složkám nějakého objektu, po vypsání "tečky" se automaticky zobrazí seznam
dostupných metod a vlastností. Obdobně je vypisován seznam enumerických
konstant tam, kde je nějaká konstanta vyžadována.
Ladění maker
Vývojové prostředí umožňuje také ladění maker. Pro ladění maker je možné
používat krokování a zarážky. Zarážku do kódu umístíte tak, že dvakrát kliknete
v okně se zdrojovým kódem do šedého pruhu na levé straně. Zarážka se zobrazí
červeně.
Při spuštění makra se jeho běh zastaví na řádce se zarážkou. Makro je možné
dále krokovat po jednotlivých řádcích. Velmi jednoduché je také prohlížení
hodnot různých vlastností a proměnných.
To je možné dvěma způsoby pokud potřebujete nějakou vlastnost či proměnnou
sledovat stále, můžete si ji přidat do okna s kukátky (pomocí menu Ladění š
Přidat kukátko). Prohlížeč objektů pomůže
Při tvorbě aplikací je nutné používat objekty, které jednotlivé aplikace
nabízejí. V jedné části tohoto článku jsou některé důležité objekty stručně
popsány. Pokud ale potřebujete dohledat nějaké vlastnosti nebo metody, máte dvě
možnosti nápovědu a Prohlížeč objektů. Zde jsou na levé straně zobrazeny
jednotlivé dostupné třídy a na pravé straně jejich metody a vlastnosti. Po
kliknutí na vybranou složky třídy se ve spodní řádce zobrazí podrobnější popis
objektu. Pokud je součástí tohoto popisu nějaký typ nebo knihovna, je možné
tento název použít jako hyperlink Prohlížeč objektů po kliknutí nalistuje
vybraný objekt. Tento nástroj vřele doporučuji často používat.
Pozor je třeba si uvědomit, že Prohlížeč objektů umožňuje prohlížení tříd
nikoliv objektů. Vidíte tedy datové typy nikoliv jejich konkrétní instance.
Velmi důležitá (možná nejdůležitější) je první položka v seznamu tříd, která je
označená "+++". Zde můžete vidět globálně (kdekoliv v makrech) dostupné
instance objektů, funkce, případně konstanty.
Testovací makro
Vytvořte si jednoduché makro, které bude formátovat vybraný blok buněk v
Excelu. Pomocí průzkumníka projektu založte nový modul a do něj vložte
následující text:
Sub MyFormat() Selection.HorizontalAlignment = xlCenter
Selection.Font.FontStyle = "tučné" Selection.Interior.ColorIndex = 6
End Sub
Makro můžete aktivovat z menu Nástroje Makro Makra. Na tomto makru si též
můžete vyzkoušet krokování.
Objekty Microsoft Office
Časopis těžko může být náhradou referenční příručky. Dobrým zdrojem informací
pro tvorbu vlastních maker může být pokusný záznam makra kromě již zmíněné
nápovědy, prohlížeče objektů a dokumentace.
Jednotlivé popsané objekty jsou udávány ve tvaru "název třídy (název objektu)".
Název objektu je důležitý, neboť prostřednictvím tohoto identifikátoru budete v
makrech daný objekt oslovovat. Pokud od daného objektu neexistuje standardní
instance, není v závorce uvedeno nic. Název třídy je naopak důležitý pro
případ, že budete chtít zjistit podrobnější informace o možnostech daného
objektu pomocí prohlížeče objektů, nápovědy nebo dokumentace. Aby zmatení
začínajících uživatelů bylo dokonalé, názvy objektů a názvy tříd bývají obvykle
(ale ne vždy) stejné! V jiných programovacích jazycích jsou podobné výstřelky
zakázány.
Společné
Assistant (Assistant) Tato třída slouží pro ovládání "Assistenta" (tedy té
havěti, která se na nás pitvoří z některého kouta obrazovky). Pomocí této třídy
můžete např. vyvolávat různé animace (vlastnost Animation) a vytvářet "bubliny".
UserForm Tato třída reprezentuje uživatelsky definovaná dialogová okna
(formuláře). Důležitá je metoda Show pro zobrazení, Hide pro zavření a
PrintForm pro vytištění. Vlastnosti jsou viditelné v seznamu vlastností při
editaci.
Také je třeba se zmínit o globálně dostupných procedurách a funkcích. Velmi
důležitou procedurou je MsgBox. Tato procedura umožňuje zobrazovat okno s
krátkou zprávou (používá se často při odlaďování maker). Jinou užitečnou funkcí
je Beep, která způsobí "pípnutí". Z matematických funkcí bych jmenoval Sin,
Cos, Abs, Log, Exp a Rnd. Mezi důležité funkce VBA bych uvedl funkci na převod
řetězce na číslo Val a funkci na převod čísla na řetězec Str. Pro podmínky se
hodí logické funkce IsNumeric, IsEmpty a IsDate.
Excel
Application (Application) Manipuluje s aplikací jako celkem. Umožňuje např.
nastavování titulku okna a spouštět celkovou rekalkulaci.
Workbook (ActiveWorkbook, Workbooks(?)) Manipulace se sešitem ukládání,
tištění, apod.
Worksheet (ActiveSheet, Sheets(?)) Manipulace s jedním listem pojmenování,
přemísťování apod. Listy je také možné oslovovat prostřednictvím sady
identifikátorů Sheet1, Sheet2, ...
Range (ActiveCell, Selection, Cells(?,?), Range(?,?)) Manipulace s buňkou nebo
s několika buňkami současně zjišťování a nastavování hodnot, veškeré
formátování, výběry do bloku apod. Kolekce Cells umožňuje přístup k buňce na
základě číselných souřadnic (tedy čísla řádku a sloupce). Kolekce Range slouží
k přístupu k buňce (nebo bloku buněk) na základě excelovského značení (A5).
Například blok buněk můžete vybrat prostřednictvím "Range("C3:E5").Select".
Word
Application (Application) Třída pro manipulaci s aplikací jako celkem. Umožňuje
např. nastavování voleb Wordu.
Document (ActiveDocument, Documents(?)) Manipuluje s jednotlivým dokumentem.
Umožňuje pohyb po dokumentu, ukládání, kontrolu pravopisu, tisk, globální
formátování, práci se záložkami apod. Selection (Selection) Umožňuje manipulaci
s právě vybraným blokem textu. Umožňuje veškeré formátování na úrovni znaků.
Range Podobné objektu Selection. Tento objekt slouží ke specifikování části
dokumentu a k různé manipulaci s ní (formátování apod.). Uvnitř dokumentu je
však problematická navigace sešity v Excelu jsou přesně rozděleny na listy a
buňky avšak v dokumentu podobnou možnost nemáte. Dokument ve Wordu má ale
atributy (kolekce) "Words" "Sentences" a "Paragraphs", které tuto navigaci
zajišťují. Makroviry
Kdo si přečetl celý tento článek, jistě pochopil, že jazyk VBA nabízí velmi
mnoho možností. Naneštěstí nabízí také prostředky pro tvorbu takových maker,
která se sama množí (a následně i škodí) tedy makrovirů. Pro tvorbu makrovirů
je nutné zvládnou dvě věci. Jednak je to kopírování maker mezi dokumenty a dále
je to automatické spouštění určitých maker při různých příležitostech. Obě tyto
možnosti jazyk VBA nabízí.
Makroviry však umějí také vygenerovat .EXE soubor a následně jej spustit. A
pomocí .EXE souborů mohou získat prakticky neomezenou kontrolu nad počítačem.
Tuto techniku samozřejmě mnohé makroviry používají a jsou proto pro uživatele
kancelářských aplikací velmi nebezpečné.
Nové verze Office 97 mají zabudovanou ochranu proti makrovirům. Některé
makroviry však tuto ochranu obcházejí, takže odborníci varují před spoléháním
jen na tuto ochranu.
8 2863 / or









Komentáře
K tomuto článku není připojena žádná diskuze, nebo byla zakázána.