< návrat zpět

MS Excel


Téma: Vstup do světa maker rss

Zaslal/a 17.9.2015 21:23

Podle mých letitých zkušeností má odmítání práce s VBA řadu příčin, z nichž některé pokládám za zástupné. Základní je to, že se sám Microsoft od VBA dost distancuje. Přitom jeho hrozba makroviry mi připomíná varování před yettim v Krkonoších. Dělal jsem průzkum na jiném fóru o střetu s makroviry mezi opravdovými borci z oboru. S výjimkou jednoho deset let starého případu kolem jednoho francouzského sešitu nikdo z nich nikdy na makrovirus v praxi nenarazil. Někteří z oslovených jsou zapojeni do mezinárodního obchodu s aplikacemi, psanými v Excelu a píší své sešity pro kohokoliv na světě, kdo si to zaplatí. Ani oni na makroviry nenarazili.
Z úplně stejného důvodu aplikace s VBA často odmítají někteří manažéři. Jde jen o rozšířený strach z ničeho.
Jiný argument je, že moji aplikaci by mohl chtít používat někdo, kdo nemá Excel (zpravidla jde o vlastníky bezplatného OO. To je lepší argument, ale je otázkou, jestli to je dostatečný důvod k odmítnutí VBA. Podle mne nikoliv, pokud jde o využití "pouze pro čtení". V tom případě existují spolehlivé prostředky, jak takové čtení zajistit.
Při řadě školení jsem se přesvědčil, že značná část těch, kteří VBA odmítali, to dělala proto, že se jim do VBA prostě nepodařilo proniknout. Samozřejmě to nepřiznali a schovali se za veřejně rozšířenou pověru o jeho potenciální škodlivosti. Když se jim otevřela vrátka, silně většinou pookřáli.
Mezi vývojáři v Excelu je jakési skoro tabu o pochopení práce s VBA jenom promluvit. Zdá se, že by to byla hanba, kdyby někdo nevěděl. A tak raději VBA zavrhnou. Znám skvělého "vzorečkáře", který prostě odmítl VBA, protože se odmítl vžít do myšlení programátora. Hodně jsem se od něj o vzorcích naučil. On ode mne z VBA nepochytil nic. Ale to je naprostá výjimka, potvrzující pravidlo.
Pro jedno ze svých dávných školení jsem vytvořil obrázkový návodný text, jak do VBA proniknout alespoň na jeho krajíček. Chtěl jsem ho sem poslat jako přílohu, ale ty obrázky prostě překročily povolenou velikost místních příloh. Spouštěčem pro ten nápad byl dotaz, jak spustit proceduru s parametry z listu. Zkusil jsem tedy ten text předělat, aby se bez obrázků obešel a ještě pořád něco říkal. Nevím, jestli se mi to povedlo. Nevím, jestli to vůbec někdo zkusí číst. Kdyby to ale alespoň jednomu člověku na fóru něco přineslo, budu spokojený.

Příloha: zip26929_minikurz.zip (11kB, staženo 29x)
Zaslat odpověď >

#026934
avatar
Mám trochu jiné zkušenosti.

Jednak jsem se nikdy nesetkal s argumentací, která by zavrhovala VBA kvůli makrovirům. Osobně jsem se s makrovirem setkal. Detaily jsi úplně nepamatuji, ale myslím, že makrovir byl distribuován pomocí knihovny Scripting.FileSystemObject a nadělal slušnou paseku. Každá společnost by měla zvážit zda globálně povolit všechna marka. Stejně jako Excel doporučuji zvolit o úroveň větší zabezpečení.

Při řadě školení měla většina uživatelů zájem o makra a někteří se s nimi setkali přes záznamník maker. A tady se postupně dostávám k problému, který vidím jako jeden ze dvou hlavních důvodů proč se VBA vyhýbá např. management.

1) Tím, že mnohá řešení vznikla způsobem, že např. datový analytici pracující s nativními nástroji excelu si postupně začali vypomáhat makry, potažmo něčím, co se už dá nazývat pokusy o programování pomocí VBA. Toto rádoby programování bez zkušeností většinou vyplodilo rozvláčný, těžko čitelný a nepřehledný kód - velmi nákladný na údržbu, a to zejména v případě, kdy se z menších řešení stávají časem robustnější. Paradoxně tak flexibilita a přívětivost k uživatelům mohla zapříčinit, že management s těmito nebo podobnými zkušenostmi hledá jiné cesty.

Umím si představit např. situaci, kdy již zmiňovaní datový analytici, kteří využívají k práci MS Excel a jeho nativní nástroje si chtějí svojí práci ulehčit automatizací. Z pohledu managementu bych měl obavy, že po jejich odchodu budu muset místo "běžných excelistů" začít hledat programátory VBA.

Myslím si tedy, že odklon od VBA je dán neblahými zkušenostmi s neprofesionálními řešeními, kterých je podle mě většina.

2) (Ne)podpora VB6/VBA ze strany Microsoftu je už mnoho let zřejmá. Důvodem proč je VBE pořád součástí (nejen) excelu je, že po světě kolují milióny, ne-li desítky/stovky miliónů řešení, které využívají VBA.

Pro ty kteří chtějí programovat v rámci MS kancelářských aplikací existují jiné a v mnoha případech lepší možnosti než VBA. Jako příklad uvedu dvě základní:

1) Vytvoření tlb souboru pomocí Visual studia.
Můžete si vytvořit objektovou vrstvu (metody, vlastnosti) a využít k tomu jmenné prostory .net frameworku a z VBA je jen volat. Máte tak mnohem větší možnosti s využitím nejmodernějších technologií se všemi výhodami.

2) Vytvoření doplňků pomocí Visual studia
Tady vám bohužel nestačí free edice, ale musíte si sáhnout pro community edici nebo poměrně drahé plnohodnotné edice. V rámci Visual Studio Tools for the Office System máte (možná) plnohodnotnou alternativu k VBA se všemi výhodami nových technologií o kterých se myslím nemusím rozepisovat.citovat
#026952
avatar
Pohled na problém, jak ho vidí DAAL, odpovídá zavedenému pohledu na pozici a význam Excelu ve zpracování dat. S argumentací o makrovirech se všichni uživatelé Excelu léta potkávali na cedulích, kterými Microsoft uváděl a uvádí spouštění sešitů s VBA. Už dávno ty cedule nečtu, takže nevím, jestli se na těch cedulích termín makrovirus pořád ještě nachází, ale o makrech jako o něčem nepravém se na nich jistě mluvit nepřestalo. Moc tomu nerozumím. Připomíná mi to varování hoteliéra, že u nich v hotelu mají štěnice.
Naprosto souhlasím s argumentací o amatérské tvorbě špatných kódů VBA. To je svatá pravda, jako je svatá pravda, že neméně špatnou úroveň mívá i používání vzorců na listech. Zatím jsem téměř vždy rozluštil špatně napsanou proceduru VBA. Přiznám se ale, že řadu vzorečkových propletenců, okořeněných mocnými megavzorci, jsem nedokázal ani zčásti pochopit, natož je rozplést. Špatný řemeslník ohrožuje každé řemeslo, ať se ohání srpem, nebo kladivem...
Naprosto souhlasím, že dlouho nerozvíjené VBA již povážlivě kulhá za dobou. Je ovšem stále integrovanou součástí tabulkového procesoru od Microsoftu. Mohu získat zdarma OpenOffice, placený MS Office se zabudovaným VBA (v ceně), nebo si případně k němu pořídit ještě placenější Visual Studio.
Atmosféra v malých firmách asi bude vždycky nakloněná levnějším řešením zpracování dat. Excel bez VBA je ve srovnání s OO ekonomický nesmysl, protože zadarmo mohu dostat prakticky to samé, co si jinak mohu od MS za slušný peníz koupit. Nevidím důvod proč to dělat, když se dobrovolně vzdám funkčního (i když trochu fousatého) VBE s VBA.
Tady jsme na fóru, věnovaném Excelu. Proto doporučuji, abychom se tady věnovali možnostem, které nám tento nástroj v rámci svých možností nabízí a nevylučovali jsme dopředu jakékoliv jeho schopnosti.citovat
#026957
avatar
Hned pro začátek bych reagoval na Vaše doporučení věnovat se zde možnostem excelu. Přijde mi to trochu nefér, protože jsem se sice dostal za horizont VBA, ale nikoli excelu. K Excelu a VBA mám velmi vřelý vztah. Excel je můj nejoblíbenější nástroj, ale nechci a ani nebudu zavírat oči před významem VBA a Excelu v této době.

Otázka je, co je zavedený pohled na pozici a význam Excelu ve zpracování dat. Asi se na Excel bude dívat jinak IT oddělení, které Excel využívá v rámci business intelligence nebo jako jeden z možných exportů z webových nebo desktopových aplikací než oddělení kontrolingu nebo plánování.

Nechci se dlouze rozepisovat o tom kam Excel směřuje. Každý si může udělat vlastní názor na Office 365 a nástrojích pro BI, o nástrojích PowerPivot, PowerView a o nových verzích Excelu 2013, 2016. Dost by mě zajímal názor Váš i ostatních.

Sám si kladu ohledně MS Excel mnoho otázek. V posledních letech zejména ohledně VBA a programování pro aplikace MS Office.

VB6/VBA je v IT prostě pravěk. Pokud vytváříte aplikace (s VBA) pro klienty nebo i v rámci společnosti, chcete - myslím - odvést rychlou, profesionální práci a přitom se moc nenadřít. Uvedu příklad z praxe:

Před několika roky jsem dostal za úkol vytvořit řešení pomocí MS Excel, které si často tahá data z MS SQL Serveru a pomocí nativních nástrojů data zpracuje do finální podoby reportu. Šlo vytvořit report pomocí reporting services, ale výstup byl požadován v MS Excel s využitím dynamické vlastnosti konting. tabulek. Report mělo využívat cca 50 zaměstnanců. Na začátku jsem by upozorněn, že server je značně vytížen a že mám šetřit jeho zdroje. Protože jsem musel volat uložené procedury a dynamicky jim předávat parametry, sáhnul jsem si pro ADO.

ADO se ukázalo jako nedostačující. Využívá mnohovrstevný přístup k databázi (ovladače ODBC). Značná režie na opakované nebo držené připojení atd. Prostě mi to databázový administrátoři hodily na hlavu. A co teď s tím. Nakonec jsem vytvořil doplněk pro Excel pomocí VSTO, kde jsem využil ADO.NET (obsahuje nativní ovladač pro MSSQL Server, connection pooling atd). Tenkrát mě vystrašilo, že VBA začíná být v některých ohledech nedostačující a že mi ujíždí vlak. MS prostě nabízí nové nástroje pro vývoj v MS Office mimo VBA a je na každém zda tento trend zachytí nebo zůstane u VBA.

Chci tím vším říct, že VBA/VBE je nejen zastaralá technologie, ale začíná být v rámci některých požadavků nedostatečná.

Je jasné, že Excel jako kalkulátor se svými vestavěnými nástroji nemá konkurenci, ale často se využívá na všechno možné. Flexibilita excelu k tomu svádí, ale mnohdy je lepší sáhnout po něčem jiném (databanka do databáze apod.).

Je to logický krok, aby byly vývojové nástroje i pro MS Excel součástí dotNetu.

Jak vidíte vy budoucnost Excelu potažmo VBA a jeho budoucnost?citovat
#026958
avatar
Máte plnou pravdu, že zavedených pohledů na Excel bude mnoho podle toho, jaká profese se na něj dívá. Vcelku dobře to strukturuje např. Walkenbach, když charakterizuje oblasti profesí, kterým může Excel sloužit včetně odpovídajících technik řešení. Výbornou stať na téma psaní profesionálních aplikací v Excelu jsem četl z pera J.Číhaře (zkusil jsem ji najít na jeho Dataspectru, ale nenašel jsem ji).
Sám nejsem typický vývojář pro Excel. Pracuji sám na volné noze a nemám zázemí v nákupu nového softwaru. Co si chci pořídit, na to si musím vydělat.
Koncept společné vývojové základny a spolupráce členů MS Office mne před 17 lety nadchly. Žít 17 let z jednoho hrnce kdysi skvělé polévky je ale opravdu trochu nad poměry giganta typu Microsoft.
Mým snem o Excelu budoucnosti byla představa provozně-vývojového prostředí, kde by bylo možné věci zkoušet, vyvíjet a ladit, abych na závěr mohl vyvinuté dílo řádně zkompilovat do .EXE formy a v ní ho předat uživateli k provozování. Výsledná aplikace by měla být zcela oproštěná od prvků pro experimentování a měla by být plně podřízena logice, kterou do ní vloží vývojář. Léta jsem doufal, že tímto směrem má Excel namířeno. Nestalo se to a zřejmě se to ani nestane. Cesta, po které se Microsoft s MS Office vydal, je z mého pohledu velkým krokem stranou místo vpřed.citovat
icon #026963
eLCHa
@DAAL

krásně napsáno - souhlasím s Vámi.
Ono je třeba si uvědomit, že použití VBA bylo od MS dobrým krokem. Jsem rád, že nezůstali u XLM. Možná mohli vybrat jinak, ale v době rozhodování byla situace jiná než dnes. Jak já chápu smysl VBA je ale stejný jako XLM, tedy má pomáhat automatizovat práci (proto se většinou bavíme o makrech, nikoli programech) a ne vytvářet aplikace. Pokud by chtěli nyní přejít na jiný nástroj (jazyk), museli by navíc zachovat kompatibilitu s XLM a VBA (a už nyní nezvládne VBA některé věci tak, jak je uměl XLM).citovat
#026978
avatar
Omlouvám se uživateli VOVKA, protože jsem odvedl pozornost od jeho minikurzu. Osobně bych to vytvořil jinak, ale věřím, že začátečníkům může pomoci a tak ho doporučuji. Každá taková snaha je myslím vítaná. Díky za tento příspěvek a možnost se vykecat :)

@eLCHa

Krátké a výstižné. Díky za reakcicitovat
#026986
avatar
to DAAL:
dík za čerstvý vítr do stojatých vod VBA/VBE. O VSTO už pár let vím, na stole v knihovničce mi po léta tiše odpočívá knížka o VisualBasic.NET. Nikdy jsem se ale nedostal do stavu aktivní nouze s VBA, abych se na VSTO vrhl jak studiem, tak nákupem SW. Mám pocit, že už bych se výsledků vloženého úsilí u sebe nedožil.
Sám za sebe říkám, že už to s VBA doklepu. Mám pár aplikací pro natěšené zákazníky rozdělaných a když k tomu připočtu provoz tady na fóru, opravdu se nenudím.
DAAL je v tom směru daal :-). Je to dobře a je taky dobře, že tady potkávám ctitele VSTO.citovat

Uživatelské menu

Nejste přihlášen(a)
avatar\n

Menu

On-line nástroje

Formulář Faktura

Formulář Faktura IV

Oblíbený formulář Faktura byl vylepšen a rozšířen.
Více se dočtete zde.

Aktivní diskuse

Relativní cesta - zdroje Power Query

Alfan • 25.4. 10:49

Relativní cesta - zdroje Power Query

elninoslov • 25.4. 10:47

Relativní cesta - zdroje Power Query

Alfan • 25.4. 10:40

Relativní cesta - zdroje Power Query

Alfan • 25.4. 9:44

Relativní cesta - zdroje Power Query

elninoslov • 25.4. 9:02

Vynásobit hodnoty kurzem - Power Query

elninoslov • 25.4. 8:40

Relativní cesta - zdroje Power Query

Alfan • 25.4. 8:04