Při vytváření nové databáze obvykle začnete vytvořením databázových objektů, jako jsou tabulky, formuláře a sestavy. V určitém okamžiku možná budete muset přidat programování pro automatizaci procesů a propojení těchto objektů. Tento článek představuje nástroje pro programování v Accessu.
V tomto článku
- Co je to programování?
- Mám použít makra nebo kód jazyka VBA?
- Provádění běžných programovacích úloh pomocí Průvodce příkazovým tlačítkem
- Základní informace o makrech
- Základní informace o kódu jazyka VBA
- Převod maker do kódu jazyka VBA
Co je to programování?
Programování v Accessu znamená přidání funkcí do databáze pomocí maker Accessu nebo kódu jazyka jazyk Visual Basic for ApplicationVBA. Můžete například vytvořit formulář a sestavu a potom do formuláře přidat příkazové tlačítko, které otevře vybranou sestavu. V takovém případě vytvořte makro nebo VBA proceduru a nastavte událostní vlastnost příkazového tlačítka OnClick tak, aby příkazové tlačítko spouštělo dané makro nebo proceduru. Pro jednoduchou operaci, jako je otevření sestavy, můžete použít Průvodce příkazovým tlačítkem, který udělá práci, nebo můžete tohoto průvodce vypnout a naprogramovat si ho sami.
Poznámka
V řadě aplikací systém Microsoft Office se termín "makro" používá k označení VBA kódu. To může uživatele Accessu zmást, protože v Accessu termín "makro" označuje pojmenovanou kolekci akcí makra, kterou sestavíte pomocí Tvůrce maker. Akce maker Accessu představují jenom podmnožinu příkazů, které jsou dostupné v VBAnástroji . Tvůrce maker má strukturovanější rozhraní než Visual Basic Editor, takže můžete k ovládacím prvkům a objektům přidávat programování, aniž byste se museli učit VBA kód. V článcích nápovědy k Accessu se makrům Accessu říká makra.
VBA Kód se nazývá VBA kód, funkce nebo procedura.
VBA Kód je uložený v modulech třídy, které jsou součástí jednotlivých formulářů nebo sestav a obvykle obsahují kód jenom pro tyto objekty, a v modulech, které nejsou vázané na konkrétní objekty a obvykle obsahují globální kód, který můžete použít v celé databázi.
Objekty, například formuláře a sestavy, a ovládací prvky, například příkazová tlačítka a textová pole, mají událostní vlastnosti, ke kterým můžete připojit makra nebo procedury. Každá událostní vlastnost je spojená s určitou událostí, jako je kliknutí myši, otevření formuláře nebo změna dat v textovém poli. Události se můžou aktivovat také faktory mimo Access, například systémovými událostmi, makry nebo procedurami, které jsou připojené k jiným událostem. Pokud k mnoha událostním vlastnostem u mnoha objektů přidáte velké množství maker nebo procedur, může se databáze stát složitou. Ve většině případů však lze k požadovaným výsledkům získat jen velmi malým množstvím programování.
Mám použít makra nebo kód jazyka VBA?
Rozhodnutí, zda použít makra, VBAnebo obojí, závisí především na tom, jak plánujete databázi nasadit nebo distribuovat. Pokud je například databáze uložená na vašem počítači, jste jediným uživatelem a umíte používat VBA kód, který se rozhodnete použít VBA pro většinu programovacích úloh. Pokud ale máte v úmyslu sdílet databázi se souborovým serverem s jinými uživateli, můžete se mu VBA z bezpečnostních důvodů vyhnout.
Rozhodnutí o použití maker a VBA kódu založte na dvou aspektech: na zabezpečení a požadované funkčnosti. Na bezpečnosti záleží, protože VBA se dá použít k vytvoření kódu, který ohrožuje data nebo poškozuje soubory na počítači. Pokud používáte databázi vytvořenou někým jiným, povolte VBA kód jenom v případě, že víte, že databáze pochází z důvěryhodného zdroje. Vytváříte-li databázi, kterou budou používat další uživatelé, pokuste se nezahrnovat programovací nástroje, které vyžadují, aby uživatel databázi výslovně označil za důvěryhodnou. Obecné techniky, jak se tomuto požadavku vyhnout, najdete dál v této části.
Pokud chcete lépe zabezpečit databázi, zkuste používat makra tam, kde je to možné, a používat VBA je jenom pro operace, které nejdou provést pomocí akcí makra. Zkuste taky používat jenom akce makra, které nevyžadují, aby byla databáze před spuštěním důvěryhodná. Pokud omezíte akce makra tímto způsobem, uživatelé si budou jistí, že databáze neobsahuje žádné programování, které by jim mohlo poškodit data nebo jiné soubory na počítači.
Co je důležité vědět o makrech
Access obsahuje mnoho akcí maker, které umožňují vytvářet výkonnější makra, než dovolovaly dřívější verze Accessu. Teď můžete například pomocí akcí makra vytvářet a používat globální dočasné proměnné a pomocí nových akcí makra pro ošetření chyb můžete ošetřovat chyby elegantněji. V dřívějších verzích aplikace Access byly tyto funkce k dispozici pouze v VBAsystému . Makro můžete také vložit přímo do událostní vlastnosti objektu nebo ovládacího prvku. Vložené makro se stane součástí objektu nebo ovládacího prvku a zůstane s nimi i v případě, že objekt nebo ovládací prvek přesunete nebo zkopírujete.
Makra poskytují jednoduchý způsob zpracování mnoha programovacích úloh, jako je například otevírání a zavírání formulářů a spouštění sestav. Objekty databáze, jako jsou formuláře a sestavy, které jste vytvořili, můžete rychle svázat, protože syntaxe není moc zapamatovatelná. Argumenty pro jednotlivé akce se zobrazují v Tvůrci maker.
Makra poskytují vyšší zabezpečení a snadněji se používají, ale navíc je nutné makra používat k provádění těchto úloh:
Přiřazení akce nebo sady akcí ke klávese. Tato akce vyžaduje vytvoření skupiny maker s názvem
AutoKeys.Provedení akce nebo posloupnosti akcí při prvním otevření databáze. Tato akce vyžaduje vytvoření makra s názvem
AutoExec.Poznámka
Makro
AutoExecje spuštěno dříve než všechna ostatní makra neboVBAkód, a to i v případě, že jste v dialogovém okně Možnosti aplikace Access označili spouštěcí formulář a připojili makro neboVBAkód k události tohoto formulářeOnOpenneboOnLoadudálosti.
Další informace o vytváření maker naleznete v tématu Základní informace o makrech.
Co je důležité vědět o jazyce VBA
Místo VBA maker použijte tato nastavení, když chcete udělat některou z těchto věcí:
- Použijte předdefinované funkce nebo si vytvořte vlastní. Access obsahuje mnoho předdefinovaných funkcí, jako je
IPmttřeba , která vypočítá platbu úroku. Pomocí těchto funkcí můžete provádět výpočty bez vytváření složitých výrazů. Pomocí programuVBAmůžete také vytvářet vlastní funkce k provádění výpočtů, které jdou nad rámec možností výrazu, nebo k nahrazování složitých výrazů. Kromě toho můžete pomocí funkcí, které vytvoříte ve výrazech, použít běžnou operaci pro více než jeden objekt. - Vytvářet objekty nebo s nimi manipulovat. Ve většině případů je nejjednodušší vytvořit a upravit objekt v návrhovém zobrazení daného objektu. V některých situacích však můžete chtít manipulovat s definicí objektu v kódu. Pomocí této funkce
VBAmůžete manipulovat se všemi objekty v databázi i s databází samotnou. - Provádět akce na systémové úrovni. Provedením této
RunAppakce v makru můžete z Accessu spouštět jinou aplikaci, například Microsoft Excel, ale mimo Access se pomocí makra nic moc dalšího dělat nedá. PomocíVBAprogramu můžete zjistit, zda nějaký soubor v počítači existuje, komunikovat s jinými aplikacemi založenými na systému Microsoft Windows, jako je například Excel, pomocí služby Automation nebo dynamické výměny dat (DDE) a volat funkce v knihovnách DLL systému Windows (DLLs). - Manipulace se záznamy po jednotlivých záznamech Můžete použít
VBAmožnost procházet sadu záznamů po jednotlivých záznamech a provádět nějakou operaci u každého záznamu. Oproti tomu makra pracují s celými sadami záznamů najednou.
Provádění běžných programovacích úloh pomocí Průvodce příkazovým tlačítkem
Když do formuláře přidáváte příkazové tlačítko, může vám Průvodce příkazovým tlačítkem pomoct začít s programováním. Průvodce vám pomůže vytvořit příkazové tlačítko, které provádí určitý úkol. V souboru Accessu (.accdb) průvodce vytvoří makro, které je vložené do OnClick vlastnosti příkazového tlačítka.
.mdb V souboru or .adp průvodce vytvoří VBA kód, protože v těchto formátech nejsou vložená makra k dispozici. Makro nebo VBA kód pak můžete upravit nebo vylepšit, aby lépe vyhovovaly vašim potřebám.
V navigačním podokně klikněte pravým tlačítkem myši na formulář, do kterého chcete přidat příkazové tlačítko, a pak klikněte na Návrhové zobrazení.
Na kartě Návrh formuláře kliknutím na šipku dolů zobrazte galerii ovládacích prvků a zkontrolujte, zda je vybrána možnost Použít průvodce ovládacími prvky .
Na kartě Návrh formuláře v galerii Ovládací prvky klikněte na Tlačítko.
V návrhové mřížce formuláře klikněte na místo, kam chcete dané příkazové tlačítko umístit. Spustí se Průvodce příkazovým tlačítkem.
Na první stránce průvodce můžete kliknutím na jednotlivé kategorie v seznamu Kategorie zobrazit akce, jejichž provedení může průvodce pro dané příkazové tlačítko naprogramovat. V seznamu Akce vyberte požadovanou akci a pak klikněte na Další.
Klikněte na možnost Text nebo Obrázek podle toho, jestli chcete na příkazovém tlačítku zobrazit text nebo obrázek.
- Pokud chcete zobrazit text, můžete příslušný text upravit v poli vedle možnosti Text.
- Pokud chcete zobrazit obrázek, průvodce navrhne obrázek ze seznamu. Pokud chcete vybrat jiný obrázek, zaškrtněte políčko Zobrazit všechny obrázky, aby se zobrazil seznam všech obrázků příkazového tlačítka, které Access nabízí, nebo klikněte na Procházet a vyberte obrázek uložený jinde. Klikněte na Další.
Zadejte smysluplný název daného příkazového tlačítka. Tento krok je volitelný a tento název se na příkazovém tlačítku nezobrazuje. Je ale vhodné zadat smysluplný název, protože pokud byste později potřebovali na toto příkazové tlačítko odkazovat, například při nastavování pořadí ovládacích prvků ve formuláři, bude mnohem jednodušší je od sebe odlišit. Pokud se příkazové tlačítko používá například k zavření formuláře, můžete ho
cmdClosepojmenovat neboCommandClose.Klikněte na Dokončit. Access umístí příkazové tlačítko do formuláře.
Pokud se chcete podívat, co vám průvodce naprogramoval, použijte tyto volitelné kroky:
Pokud není zobrazen seznam vlastností, zobrazte jej stisknutím klávesy F4 .
V seznamu vlastností klikněte na kartu Událostní.
V poli vlastnosti Při kliknutí klikněte na tlačítko Vytvořit .
Access spustí Tvůrce maker a zobrazí makro, které průvodce vytvořil. V případě potřeby můžete makro upravit. Další informace najdete v tématu Základní informace o makrech. Až to budete mít, zavřete Tvůrce maker, a to tak, že na kartě Návrh makra ve skupině Zavřít kliknete na tlačítko Zavřít . Pokud vás Access vyzve k uložení změn a aktualizaci dané vlastnosti, uložte změny kliknutím na Ano nebo je odmítněte kliknutím na Ne.
Na kartě Návrh formuláře klikněte ve skupině Zobrazení na položku Zobrazení a potom klikněte na Formulářové zobrazení. Klikněte na nové příkazové tlačítko, abyste ověřili, že funguje podle očekávání.
Základní informace o makrech
Makro je nástroj, který umožňuje automatizovat úkoly a přidávat funkce do formulářů, sestav a ovládacích prvků. Když například do formuláře přidáte příkazové tlačítko, můžete událostní vlastnost tohoto tlačítka OnClick přidružit k makru obsahujícímu příkazy, které se mají provést pokaždé, když tlačítko vyberete.
Makra Accessu si je možné představit jako zjednodušený programovací jazyk, ve kterém vytváříte kód tak, že sestavujete seznam akcí k provedení. Při vytváření makra vyberete jednotlivé akce v rozevíracím seznamu a pak pro každou z nich vyplníte požadované informace. Makra umožňují přidávat funkce do formulářů, sestav a ovládacích prvků bez zápisu kódu v VBA modulu. Makra nabízejí podmnožinu příkazů, které jsou dostupné v VBA, a pro většinu lidí je jednodušší makro vytvořit než napsat VBA kód.
Makro se vytváří pomocí Tvůrce maker, který je znázorněný na následujícím obrázku.
Postup pro zobrazení Tvůrce maker:
- Na kartě Vytvoření klikněte ve skupině Makra a kód na tlačítko Makro.
Základní informace o kódu jazyka VBA
Podobně jako makra VBA umožňuje přidávat do aplikace Access automatizaci a další funkce. Můžete se rozšířit VBA pomocí ovládacích prvků třetích stran a můžete si pro konkrétní potřeby psát vlastní funkce a procedury.
Rychlý způsob, jak začít VBA , je napřed vytvořit makro Accessu a pak ho převést na VBA kód. Pokyny pro tento postup najdete v tématu Převod maker do kódu jazyka VBA. Tato funkce vytvoří nový VBA modul, který provádí operace odpovídající těm v makru. Otevře také Visual Basic Editor, abyste mohli začít tuto proceduru upravovat. Při práci ve Visual Basic Editoru můžete kliknout na klíčová slova a stisknutím klávesy F1 spustit nápovědu pro vývojáře v Accessu a získat tak další informace o jednotlivých klíčových slovech. Můžete pak nápovědu pro vývojáře v Accessu prozkoumat a objevit nové příkazy, které vám pomůžou provádět požadované programovací úlohy.
Převod maker do kódu jazyka VBA
Access umožňuje automaticky převádět makra na VBA moduly nebo moduly třídy. Můžete převádět makra, která jsou připojená k formuláři nebo sestavě, bez ohledu na to, jestli existují jako samostatné objekty nebo jako vložená makra. Převést můžete také globální makra, která nejsou připojená ke konkrétnímu formuláři nebo sestavě.
Převod maker, která jsou připojená k formuláři nebo sestavě
Tento proces převede na VBA všechna makra, na která odkazuje formulář nebo sestava nebo některé z jejich ovládacích prvků jsou v nich vložená, a přidá VBA kód do modulu třídy formuláře nebo sestavy. Modul třídy se stane součástí formuláře nebo sestavy a v případě přesunutí nebo zkopírování daného formuláře nebo sestavy se také přesune.
V navigačním podokně klikněte pravým tlačítkem myši na formulář nebo sestavu a potom klikněte na Návrhové zobrazení.
Na kartě Návrh formuláře klikněte ve skupině Nástroje na možnost Převést makra formuláře do jazyka Visual Basic nebo Převést makra sestavy do jazyka Visual Basic.
V dialogovém okně Převést makra formuláře nebo Převést makra sestavy vyberte, jestli má Access přidat ke generovaným funkcím kód pro ošetření chyb. Pokud makra obsahují komentáře, vyberte také, jestli chcete tyto komentáře zahrnout do funkcí. Pokračujte kliknutím na Převést. Pokud pro daný formulář nebo sestavu neexistuje žádný modul třídy, Access ho vytvoří a přidá do tohoto modulu proceduru pro každé makro, které je k danému formuláři nebo sestavě přidružené. Access také změní událostní vlastnosti formuláře nebo sestavy tak, aby místo maker spouštěly nové
VBAprocedury.Pokud chcete kód zobrazit a upravit
VBA:Pokud se při otevření formuláře nebo sestavy v návrhovém zobrazení nezobrazuje seznam vlastností, zobrazte ho stisknutím klávesy F4 .
Na kartě Událost v seznamu vlastností klikněte do libovolného zobrazeného
[Event Procedure]pole vlastnosti a poté klikněte na tlačítko Vytvořit . Když chcete zobrazit událostní vlastnosti pro určitý ovládací prvek, kliknutím na tento ovládací prvek ho vyberte. Když chcete zobrazit událostní vlastnosti pro celý formulář nebo sestavu, vyberte v horní části seznamu vlastností v rozevíracím seznamu Formulář nebo Sestava.
Access otevře Visual Basic Editor a zobrazí obslužnou proceduru události v jejím modulu třídy. Posouváním nahoru nebo dolů můžete zobrazit všechny další procedury, které se v daném modulu třídy nacházejí.
Převod globálních maker
V navigačním podokně klikněte pravým tlačítkem myši na makro, které chcete převést, a potom klikněte na Návrhové zobrazení.
Na kartě Návrh maker klikněte ve skupině Nástroje na Převést makra do jazyka Visual Basic.
V dialogovém okně Převést makro vyberte požadované možnosti a pak klikněte na Převést. Access převede makro a otevře se Visual Basic Editor.
Pokud chcete kód zobrazit a upravit
VBA:- Pokud není ve Visual Basic Editoru zobrazené podokno Project Explorer (Prohlížeč projektu), klikněte v nabídce View (Zobrazení) na Project Explorer (Prohlížeč projektu).
- Rozbalte strom pod názvem databáze, ve které pracujete.
- V části Moduly poklepejte na
Converted Macro-<macro name>příslušný modul. Visual Basic Editor otevře příslušný modul.
Připojení funkce jazyka VBA k událostní vlastnosti
Když převedete globální makro na VBA, VBA kód se umístí do standardního modulu. Na rozdíl od modulu třídy není standardní modul součástí formuláře nebo sestavy. S největší pravděpodobností budete chtít tuto funkci přidružit k událostní vlastnosti ve formuláři, v sestavě nebo u ovládacího prvku tak, aby se kód spouštěl přesně v požadovaném okamžiku a na požadovaném místě. Chcete-li to provést, můžete zkopírovat VBA kód do modulu třídy a poté jej přidružit k událostní vlastnosti, nebo můžete provést speciální volání z událostní vlastnosti do standardního modulu pomocí následující procedury.
- Ve Visual Basic Editoru si poznamenejte název funkce. Pokud jste převáděli například makro s názvem
MyMacro, bude názevMyMacro()funkce . - Zavřete Visual Basic Editor.
- V navigačním podokně klikněte pravým tlačítkem myši na formulář nebo sestavu, ke kterým chcete funkci přidružit, a pak klikněte na Návrhové zobrazení.
- Klikněte na ovládací prvek nebo na oddíl, ke kterému chcete funkci přidružit.
- Pokud není zobrazen seznam vlastností, zobrazte jej stisknutím klávesy F4 .
- V seznamu vlastností klikněte na kartě Událostní do pole událostní vlastnosti, ke které chcete funkci přidružit.
- Do pole této vlastnosti zadejte rovnítko (
=) následované názvem funkce – například=MyMacro(). Nezapomeňte přidat závorky. - Kliknutím na Uložit na panelu nástrojů Rychlý přístup formulář nebo sestavu uložte.
- V navigačním podokně poklikejte na formulář nebo sestavu a otestujte, jestli kód funguje požadovaným způsobem.
Teď už znáte základní postup pro přidání VBA kódu do databáze. Tento článek obsahuje jenom základní informace o tom, jak začít. Mnoho vynikajících referenčních knih a online zdrojů vám může pomoci rozvíjet vaše programátorské dovednosti.
Viz také
Vytvoření makra uživatelského prostředí
Spuštění makra aplikace Access pomocí klávesové zkratky
Automatizace událostí při spuštění pomocí makra
Vytvoření makra, které se spustí při otevření databáze