Makra
Vyvtváření maker zápisem kódu VBA
 Vytisknout studijní materiál

Vytváření maker zápisem kódu VBA

V této kapitole bude jednoduchým příkladem ilustrována možnost přímého zápisu makra prostřednictvím kódu v jazyku VBA. Nejprve vytvoříme dvě šablony se dvěma různými hlavičkovými papíry a nazveme je Dopis1.dot a Dopis2.dot. V každé šabloně vytvoříme makro se jménem AutoNew (může být stejné jako ve studijním článku Automatická makra). Cílem bude vytvořit šablonu Volby.dot, ve které bude další makro AutoNew, jež zobrazí dialogové okno s dotazem "Chceš psát Dopis1?" a s tlačítky Ano a Ne. Při volbě Ano se otevře šablona Dopis1.dot, při volbě Ne se zobrazí další dialogové okno s dotazem "Chceš psát Dopis2?" s tlačítky Ano a Ne. Při volbě Ano se otevře šablona Dopis2.dot, při volbě Ne se zobrazí dialogové okno s hlášením "Tak to bude prázdný papír!" a otevře se Prázdný dokument na šabloně Normal.dot.

Nejprve vytvoříme dříve popsaným postupem šablony Dopis1.dot a Dopis2.dot a v nich makra AutoNew. Potom vytvoříme šablonu Volby.dot. V této šabloně vytvoříme dvě makra (SpustD1 a SpustD2), která budou otevírat nový dokument na základě šablon Dopis1.dot a Dopis2.dot.

Makra zaznamenáme následujícím způsobem (při otevřené šabloně Volby.dot):

  1. Zvolte příkaz Nástroje > Makro > Záznam nového makra.
  2. V dialogovém okně Záznam makra zapište název makra SpustD1 a nezapomeňte makro přiřadit šabloně Volby.dot.
  3. Zvolte příkaz Soubor > Nový.
  4. Otevře se podokno Nový dokument, kde vyberte Obecné šablony.
  5. Otevře se dialogové okno Šablony.
  6. Na kartě Obecné zvolte šablonu Dopis1.dot.
  7. V části Vytvořit nový je nastaveno Dokument.
  8. Klepněte na tlačítko OK.
  9. Zastavte záznam makra klepnutím na tlačítko Ukončit záznam makra na panelu nástrojů Zastavit záznam.
  10. Uložte šablonu Volby.dot.
  11. Šablonu nezavírejte.

Obdobným způsobem vytvořte makro SpustD2.

Podívejme se na animaci

V této chvíli jsou v šabloně Volby.dot dvě makra SpustD1 a SpustD2. Nyní vytvoříme v této šabloně makro AutoNew. Makro vytvoříme zápisem kódu VBA, význam jednotlivých příkazů vysvětlíme později.

Při stále otevřené šabloně Volby.dot vytvoříme makro AutoNew zápisem kódu VBA:

  1. Zvolte příkaz Nástroje > Makro > Makra.
  2. Otevře se dialogové okno Makra.
  3. Název makra volte AutoNew, nezapomeňte v poli Prohledat nastavit Volby.dot.
  4. Klepněte na tlačítko Vytvořit.
  5. Objeví se prostředí programovacího jazyka VBA.
  6. V editoru VBA zapište text kódu programu, který je uveden za tímto návodem (některé části jsou již v prostředí VBA automaticky předepsány).
  7. Zapsaný kód uložte v prostředí VBA volbou File > Save Volby.
  8. Prostředí VBA opusťte volbou File > Close and Return to Microsoft Word.
  9. Uložte šablonu Volby.dot.
  10. Šablonu uzavřete.

Sub AutoNew()

'

' AutoNew Makro

' Makro vytvořeno 7.12.2002, autor Václav Vrbík

'

Vysledek = MsgBox("Chceš psát Dopis1?", vbYesNo + vbQuestion)

If Vysledek = vbYes Then

             Call SpustD1

             GoTo Konec

End If

Vysledek = MsgBox("Chceš psát Dopis2?", vbYesNo + vbQuestion)

If Vysledek = vbYes Then

                  Call SpustD2

                  GoTo Konec

End If

MsgBox "Tak to bude prázdný papír!", vbExclamation

Konec:

End Sub

Podívejme se na animaci

Správnou funkci makra vyzkoušejte následujícím způsobem:

  1. Zvolte příkaz Soubor > Nový.
  2. Otevře se podokno Nový dokument, kde vyberte Obecné šablony.
  3. Otevře se dialogové okno Šablony.
  4. V části Vytvořit nový je zvoleno Dokument.
  5. Na kartě Obecné zvolte Volby.dot.
  6. Klepněte na tlačítko OK.

Podívejme se na animaci

Závěrem stručně vysvětlíme význam použitých příkazů VBA. Poznamenejme, že zde uvedené příkazy slouží pro ilustraci se snahou použít co nejmenší počet jednodušších příkazů VBA. Zkušenější programátor by jistě namísto neúplného podmíněného příkazu použil úplný podmíněný příkaz a nepoužil by příkaz skoku.

Ve skupině NewMacros šablony Volby.dot jsou tři makra. Makra SpustD1 a SpustD2 spouští šablony Dopis1.dot a Dopis2.dot. Tato makra byla vytvořena pomocí záznamníku maker. Makro AutoNew zapsané přímo ve VBA si popíšeme.

Kód makra začíná Sub AutoNew() a končí EndSub. Mezi těmito příkazy jsou další příkazy makra ve VBA. Řádky kódu začínající apostrofem jsou tzv. komentáře (slouží pro psaní poznámek, které obvykle usnadňují porozumění kódu makra). Funkce MsgBox("Chceš psát Dopis1?", vbYesNo + vbQuestion) zobrazí dialogové okno s hlášením "Chceš psát dopis?".

Parametry funkce jsou následující: řetězec "Chceš psát Dopis1?" udává text zobrazený v dialogovém okně, vbYesNo definuje zobrazení tlačítek Ano a Ne, vbQuestion definuje zobrazení ikony s otazníkem.

Příkaz Vysledek = MsgBox("Chceš psát Dopis1?", vbYesNo + vbQuestion) indikuje, zda uživatel kliknul na tlačítko Ano či Ne. V případě, že kliknul na Ano, je proměnné Vysledek přiřazena hodnota vbYes, pokud kliknul na Ne, je přiřazena hodnota vbNo.

Příkaz If Vysledek = vbYes Then Call SpustD1 testuje, zda proměnná Vysledek má hodnotu vbYes (bylo kliknuto na tlačítko Ano). V případě, že bylo kliknuto na Ano, pak (Then) se spustí makro SpustD1 (Call SpustD1)a program pokračuje instrukcemi, které jsou zapsány za návěštím Konec: (GoTo Konec). End If ukončuje příkaz If (tzv. neúplný podmíněný příkaz).

Další část kódu funguje obdobně (s tím rozdílem, že se týká spuštění makra SpustD2). Zobrazí se obdobné dialogové okno.

Příkaz MsgBox "Tak to bude prázdný papír!", vbExclamation generuje dialogové okno s hlášením "Tak to bude prázdný papír!".

Parametry funkce jsou následující: řetězec "Tak to bude prázdný papír!" definuje text zobrazený v dialogovém okně, druh zobrazených tlačítek na rozdíl od předcházejících dvou dialogových oken není definován a tudíž se implicitně zobrazí tlačítko OK. Konstanta vbExclamation definuje ikonu s vykřičníkem.

Návěští Konec: slouží pouze jako cíl pro příkazy skoku (GoTo Konec) a nevyvolává žádnou činnost.