Microsoft Word programování pomocí VBA Jan Felger
Programování – obecné poznámky 10.4.2017 Programování – obecné poznámky Divergentní myšlení – umožňuje-li úkol vícenásobné řešení Příklad: tvorba loga firmy Konvergentní myšlení – obvykle jedno konkrétní řešení Příklad: matematická úloha Programování – tvůrčí činnost Rysy divergentního i konvergentního myšlení Velmi výhodná znalost angličtiny (nápověda a příkazy jazyka obvykle anglicky) 2
VBA – charakteristika VBA – Visual Basic for Applications 10.4.2017 VBA – charakteristika VBA – Visual Basic for Applications Programovací jazyk založený na rodině jazyků BASIC Objektově založený (třídy, dědičnost, polymorfismus) Jazyk Visual Basic upravený pro potřeby programů rodiny MS Office 3
Makro program vytvořený nahráním akcí uživatele 10.4.2017 Makro program vytvořený nahráním akcí uživatele není třeba znalost programování VBA si zapamatuje akce uživatele a uloží je jako program makro lze aktivovat z menu, klávesovou zkratkou či pomocí panelu nástrojů Nástroje – Makro – Záznam nového makra: počátek nahrávání makra Nástroje – Makro – Zastavit záznam: ukončení nahrávání makra 4
Vložení objektu VBA do dokumentu Wordu Panel nástrojů Ovládací prvky 10.4.2017 Vložení objektu VBA do dokumentu Wordu Panel nástrojů Ovládací prvky Zobrazit – Panely nástrojů – Ovládací prvky zobrazí panel nástrojů kliknutím na nástroj jej vložíme do dokumentu Wordu pravé tlačítko myši – Formát ovládacího prvku nastavení pozice a dalších parametrů ovladače pravé tlačítko myši – Vlastnosti nastavení vstupních charakteristik ovladače pro potřeby VBA 5
Ikony panelu Ovládací prvky 1/2 10.4.2017 Ikony panelu Ovládací prvky 1/2 Ikona Anglicky Popis Režim návrhu Přepínač aktivující editaci VBA či normální práci s Wordem Vlastnosti Properties Tabulka vlastností aktivního objektu Zobrazit kód Aktivuje okno editoru zdrojového kódu VBA Zaškrtávací políčko CheckBox Dvě polohy; nevýlučné Textové pole TextBox Pro vstup i výstup textu; široké využití Příkazové tlačítko CommandButton Často používaný aktivační prvek programu Přepínač OptionButton Dvě polohy; výlučné Seznam ListBox Výběr z několika nabídnutých možností Pole se seznamem ComboBox Jako seznam, ale s možností ručního vstupu textu Přepínací tlačítko ToggleButton Tlačítko pro binární stavy 6
Ikony panelu Ovládací prvky 2/2 10.4.2017 Ikony panelu Ovládací prvky 2/2 Ikona Anglicky Popis Číselník SpinButton Pro nespojité změny hodnot Posuvník ScrollBar Pro spojité změny hodnot Popisek Label Používá se obvykle jako informační prvek popisující jiné objekty Obrázek Image Pole pro vložení grafiky Další ovládací prvky Otevře okno s možností vložení celé řady dalších objektů Při vytváření objektů je VBA pojmenovává automaticky (např. TextBox1, Label1…); více objektů stejného druhu se VBA čísluje Změna názvu objektu: pravé tlačítko myši na objektu – Vlastnosti – Name Název objektu používáme při manipulaci s objektem pomocí programového kódu 7
Vlastnosti objektů pravé tlačítko myši na objektu – Vlastnosti 10.4.2017 Vlastnosti objektů pravé tlačítko myši na objektu – Vlastnosti každý objekt disponuje jinou množinou vlastností množina vlastností se liší v závislosti na umístění objektu (jiná bude v textu, jiná na formuláři) některé vlastnosti standardního VB nejsou k dispozici, některé se chovají mírně odlišně V kódu jsou objekty od vlastností a metod odděleny tečkou, např.: CommandButton1.BackColor Vlastnostem se přiřazují hodnoty: přímo při vytváření objektu pomocí okna Properties (počáteční hodnoty objektů) nebo můžeme hodnoty vlastností objektů měnit za chodu programu pomocí kódu, např.: TextBox1.MultiLine = True CommandButton1.Width = 200 8
Důležité vlastnosti objektů 1/3 10.4.2017 Důležité vlastnosti objektů 1/3 Vlastnost Popis Name Vnitřní jméno objektu pro práci s kódem Alignment Zarovnaní popisku vůči objektu Autosize Automatické přizpůsobení velikosti objektu BackColor Barva pozadí objektu BackStyle Styl pozadí objektu BorderColor Barva okraje objektu BorderStyle Styl okraje objektu Caption Popisek objektu (standardně se shoduje s vlastností Name) Enabled Aktivace (přístupnost) objektu (True/False) Font Nastavení písma ForeColor Barva popředí (obvykle textu) 9
Důležité vlastnosti objektů 2/3 10.4.2017 Důležité vlastnosti objektů 2/3 Vlastnost Popis Height Výška objektu Left Vzdálenost objektu od levého okraje nadřazeného objektu (obvykle formuláře) Locked Uzamknutí objektu (ochrana proti úpravám) MaxLength Maximální délka (např. textu v textovém poli) MouseIcon Změna kurzoru myši při přejetí nad objektem; musí být také nastavena vlastnost MousePointer=99 Multiline Víceřádkový režim textového pole PasswordChar Znak při zápisu hesla do pole (standardně hvězdička) Picture Obrázek na pozadí objektu PicturePosition Pozice obrázku na pozadí objektu ScrollBars Rolovací lišty objektu (vertikální, horizontální, obojí) 10
Důležité vlastnosti objektů 3/3 10.4.2017 Důležité vlastnosti objektů 3/3 Vlastnost Popis SpecialEffect Zvláštní efekty u některých objektů Style U některých objektů Tag Obsah vlastnosti určuje uživatel; používá se pro přenos informací mezi objekty Text Text zapsaný do textového pole TextAlign Zarovnání textu Top Vzdálenost objektu od horního okraje nadřazeného objektu (obvykle formuláře) Value Stav objektu – např. zatržení tlačítka (True/False) Visible Viditelnost objektu (True/False) Width Šířka objektu WordWrap Zalamování textu do šířky objektu (True/False) 11
Ovládání vlastností objektů pomocí kódu 10.4.2017 Kliknutí na objekt v návrhovém módu zobrazí zdrojový kód objektu Kurzor bude umístěn ve zdrojovém kódu aktuálního objektu Zdrojový kód bude ve tvaru nevyplněné procedury připravené pro zápis ovládacího kódu objektu, např. takto pro tlačítko: pokud např. doplníme zdrojový kód takto: program provede zápis (resp. změnu) textu „AHOJ” do textového pole TextBox1 opakovaný zápis do pole: TextBox1.Text = TextBox1.Text + ”AHOJ” Private Sub CommandButton1_Click() End Sub pro tento program musíme ve Wordu vytvořit dva objekty: tlačítko CommandButton1 textové pole TextBox1 Private Sub CommandButton1_Click() TextBox1.Text = “AHOJ“ End Sub 12
Vytvoření formuláře Zapnout editaci zdrojového kódu Insert – UserForm 10.4.2017 Zapnout editaci zdrojového kódu Insert – UserForm Pomocí panelu nástrojů Toolbox (Controls) vkládáme objekty do formuláře obdobně jako při práci s dokumentem Wordu Množina objektů se od objektů vkládaných přímo do dokumentu Wordu mírně liší Tools – Additional Controls: přidání dalších objektů Nastavení vlastností vybraného objektu na formuláři: View – Properties Window Přepínání mezi zobrazením objektů a zdrojového kódu: View – Code, View – Object Seznam objektů, metod a vlastností: View – Object Browser (pro pokročilé) 13
Ovládání formuláře pomocí tlačítka ve Wordu 10.4.2017 Předpoklad: máme vytvořený formulář s textovým polem Vložíme do dokumentu Wordu objekt tlačítko Zobrazíme jeho zdrojový kód a zapíšeme: Private Sub CommandButton1_Click() UserForm1.TextBox1.Text = "Ahoj Karle" UserForm1.Show End Sub Procedura zapíše do textového pole formuláře text „Ahoj Karle“ a zobrazí formulář Předpoklad funkčnosti: zachování názvů nabídnutých VBA 14
Programové ovládání vlastností textu Wordu 10.4.2017 Doporučení: pro zjištění názvů jednotlivých vlastností textu apod. je vhodné napsat makro na změnu té vlastnosti, která nás zajímá Editací makra můžeme zjistit syntaxi vlastnosti Další možností je nápověda VBA (angl.) Pokud chceme ovládat změnu vlastností vybraného objektu Wordu (např. textu) pomocí tlačítka, je nutno nastavit vlastnost tlačítka TakeFocusOnClick na False (jinak bude výběr textu zrušen, protože se vybere tlačítko) 15
Ukázky využití VBA ve Wordu 10.4.2017 Ukázky využití VBA ve Wordu Vzorové vyplnění formuláře Výpis kódů znaků Automatické vyhodnocení testu Šifrování textu Ukázky vzhledu fontů Lexikální analýza (četnost slov textu) 16
Poznámky 10.4.2017 Proměnné deklarované v rámci procedury se po jejím ukončení vynulují Výjimkou je deklarace proměnné Static (např. Static i as Integer) General – do této sekce vkládáme globální proměnné, které platí pro celý program Výsledný kód programu VBA se ukládá buď do šablony, nebo do aktuálního dokumentu Wordu 17
10.4.2017 KONEC PREZENTACE 18