Jdi na obsah Jdi na menu
Reklama
Založte webové stránky zdarma - eStránky.cz
 


Co je to vlastně VBA

29. 10. 2007
Obsah
  • Co je to VBA
  • K čemu je dobrý
  • Jak se ho naučit
  • Jak to bude dál ...
  • Anketa

  • Co je to VBA

    VBA( ví bí ej ) neboli Visual Basic for Application je úzce spojen s "velkým" Visual Basic (VB), ze kterého je kompletně odvozen. VBA převzal syntaxi jazyka VB - tedy styl zápisu programového kódu, ale nepřebral všechny jeho metody, události a vlastnosti a hlavně nelze pomocí jazyka VBA vytvářet spustitelné exe aplikace. Takže můžeme psát o "okleštění" velkého bratra.

    Jinak je ale VBA plně událostně řízení programovací jazyk a hlavně je zadarmo obsažen v každém kancelářském balíku Office od roku 1996. Jelikož od jeho uvedení získal velkou popularitu pro svou "jednoduchost", uvolnil Microsoft za licenční poplatek tento jazyk i dalším aplikacím z jiných vývojářských dílen - AutoCAD, WordPerfect, ESRI, ArcGIS - ale také pro jiné produkty ze své dílny - MapPoint, Visio. O VBA se hovoří jako o "makro" jazyku, teda jako jazyk který umí zopakovat posloupnost příkazu tak jak jej zaznamenal ( nahrál  ) uživatel. V dnešní době už to není pravda, protože pomocí rozhodovacích struktur, cyklu, polí, OLE automation může ovládat svou hostitelskou aplikaci nebo také jiné aplikace podporující OLE automatizací. (  Word, Excel, Access, Outlook aj.  ). Může otevírat textové soubory, měnit nebo přidávat nabídky, vytvářet dialogové boxy atd.


    Kčemu je dobrý

    Typický uživatel VBA je pokročilý uživatel aplikace, kterou chce ovládat. Většinou zjistí, že stejnou práci stále opakuje a pídí se po možnostech jak tuto práci zautomatizovat. Např. počítá nějaké údaje a jedinou změnou je počet řádku, ale postup výpočtu je stejný. Formátuje výstupní tabulky podle různých předem daných kriterií, tiskne listy nebo je posílá e-mailem. Exportuje data do textových souborů nebo zapisuje určitá data do Wordu nebo Accessu, popř. naopak data z nějakých souborů importuje do aplikace a následně formátuje. Stahuje data z internetu. Může také vyplňovat data do tabulek a potýká se s chybovosti uživatelů a nakonec může chtít udělat komplexní aplikaci na řešení jeho problému s Office aplikacemi. ( Můj kamarád mi jednou řekl o aplikaci, kterou si napsal v práci - Neustále připravuje velké množství sešitu z mnoha tabulkami, které potřebuje naformátovat, nastavit tiskové oblasti a nastavit záhlaví, sešity uložit a přidat jako přílohu do Outlooku a pak odeslat. Jak asi tušíte, napsal si na to kód, který toto vše dělá za něj, dnes jen připraví data do potřebné formy stiskne tlačítko a po návratu má vše "nasáčkované" v Outlooku a stačí stisknout "Odeslat". Jiný zkušený programátor říká - "Vše co vím že budu dělat více než jednou a má to svou posloupnost, zautomatizují".)
    Jak vidíte možností je mnoho a určitě jsem na něco zapomněl.


    Jak se ho naučit

    K zvládnutí VBA Vám postačí dobrá paměť a znalost objektového modelu dané aplikace (  Objektový model např. v Excelu - je to cokoliv co provádí nějaké akce, uchovává informace, v podstatě vše co má nějaké vlastnosti - tedy buňka, nakreslený objekt na listu, list, sešit, tlačítka, panel nástrojů, ale také hypertextový odkaz a mnoho dalších objektů ). Kde se tento objektový model naučit? Nejlépe v nápovědě pro vývojáře anebo ještě lépe prostě s objekty pracovat a pak sledovat výsledný kód. Nelze to však ve všech aplikacích, ale kód lze zaznamenat v Excelu a Wordu. ( Powerpoint ani Access záznam kódu nepodporují.  )  Takhle získanému kódu se obecně říká makro - je to kód který nemá "inteligenci" a dělá vždy ty stejné kroky ve stejném sledu jak je zaznamenal uživatel. Ve výsledku je taky značně neefektivní, což ale při učení objektového modelu až tak nevadí. Excel Object Model
    obr.1 - Část objektový modelu Excelu


    Jak už víme, lze takto nahraný kód upravit a dát mu tak určitou inteligenci a přizpůsobit si ho. Pro začátek přece jen doporučuji nějakou literaturu např. knihy od Jaroslava Černého jsou psány velice srozumitelně nebo klasika od John Walkenbacha.


    Jak to bude dál

    Jak už to bývá na poli techniky a hlavně počítačů vše směřuje kupředu a nejinak je tomu v Microsoftu. Už nějakou dobu internetem prosakují zprávy o chystané změně programovacího jazyka pro Office. Microsoft se snaží mohutně prosazovat Visual Studio Tool for OfficeVSTO ), které pracuje na .NETFramework a bez "velkého" Visual Studia VSTO nepochodíte. Nemusíte mít strach, že budete muset zaplatit velké peníze za tento programovací nástroj, protože pro nekomerční účely existuje neplacená verze Visual Studia - Express, které poskytuje dost prostoru pro vývoj aplikací pro Office. Je otázkou zda toto řešení je lepší než VBA implementované v každé Office aplikaci, kde pro vývoj, úpravu nebo zaznamenání kódu nepotřebujete žádný externí nástroj.
    Původně se spekulovalo, že Office 2007 už budou bez VBA, ale nakonec tomu tak nebylo. Ovšem, nějaké kroky ze strany Microsoftu už pozorovat jdou.

      1) v nové verzi VBA pro Office 2007 nejsou žádné větší změny, kromě přidání nových objektů a skrytí jiných.
      2) od 1. července 2007 bylo pozastaveno prodávání licenci jazyka VBA třetím stranám.
      3) podpora jazyka VBA pro Mac bude ukončena s vydáním nové verze Office v roce 2008.

    Zatím nemám osobní zkušenost s vývojem aplikací pro Office s VSTO tak nemohu soudit do jaké míry je toto řešení lepší nebo horší, ale pocitově se mi do této změny moc nechce. Ovšem vývoj půjde kupředu a my se budeme muset přizpůsobit.

    Zdroj:

  • Wikipedia
  • VBA - oficiální stránky
  • a mé zkušenosti :-)
  • Na závěr by mě zajímalo, jak jste se dostali k VBA Vy? A pokud máte nějaké zajímavé postřehy napište mi je do komentářů.


     

    Komentáře

    Přidat komentář

    Přehled komentářů

    Chcete se naučit VBA ?

    (Tomáš, 9. 12. 2012 11:54)

    doporučuji navštívit stánku http://www.jakprogramovat.cz/ vše přehledně vysvětleno po lekcích i pro naprosté laiky ..aktuálně probíhající kurzy a tutoriály vše ZDARMA !!

    VBA

    (Katka, 29. 5. 2009 16:58)

    Já mám VBA ve škole a čeká mě z něj zkouška. Tak jsem se o VBA dozvěděla. Jinak pěkná stránka.

    Jak jsem se dostal k VBA?

    (Michal Karlik, 1. 11. 2007 7:44)

    Bylo to jednoduche a podobne jako u vetsiny. Cele odpoledne jsem delal Ctrl C a Ctrl V, tak jsem si zapnul zaznamnik maker a "cumel (jako tele)" na vysledek zaznamu ...

    Díkyy za názory - přidám svůj

    (Přemek, 31. 10. 2007 20:42)

    Jestli Ladys prisel k VBA jak slepy k houslim tak ja jsem musel prijit i jako hluchonemy slepec. :-)
    O VBA jsem nemel ani paru a kdo vi co bych delal dneska, kdyby si pritelkyne nepujcila spatnou knizku na uceni ke zkousce o Excelu. Prisla za mnou s knihou v ruce a ze se budeme ucit excel, koukam na to a rikam ale to je uplne neco jineho - a teprve pak jsem objevil neco jako VBE. No a ted uz je to bezmala 7 let :-)

    Jinak co se tyce VBA versus VSTO, tak jsem rozpacity.
    Jsem rad ze se neco hnulo a pujdeme i my VBA vyvojari s dobou, jen mam obavy zda je to krok spravnym smerem.
    Snad do budoucna zustane paralela ve vyvoji aplikaci pro Office a bude na svobodne volbe pro kterou se rozhodneme.

    Co mě vedlo k programování ve VBA?

    (Ladys, 31. 10. 2007 20:02)

    Já se dostal k programování maker jako slepý k houslím. V době, kdy jsem si chtěl zjednodušit jednu pracovní operaci, jsem si zapnul záznamník maker... Jiný programovací nástroj jsem prostě neměl k dispozici, ale MS Office byly na každém PC nejen u mě, ale i u kolegů... O čtyři roky později poskytuji svá řešení (převážně přes Excel) svým dalším pětatřiceti kolegům, mám vyřešeny automatické aktualizace svého programu přes síťový disk, dokážu sdílet společná data... A pořád mám dost věcí, proč se v tomto oboru zdokonalovat.

    Visual Studia - Express

    (Zachy, 29. 10. 2007 19:22)

    No nevím zda-li to je ideální řešení ze strany Microsoftu. Při představě kolik existuje různých pomocných aplikací a udělátek v podnikové sféře, tak se mi nezdá zrovna dobré znemožnit vývoj těchto aplikací. Pochybuji že někdo v podniku pořídí pro komerční vývoj tuto aplikaci, pokud bude pouze pro nějaké pomocné věci.
    Zachy