dnes je 30.10.2024

Input:

Excel 2010: Makra - VBA - XML - 15. část

13.9.2013, , Zdroj: Verlag Dashöfer

V předchozím dílu o XML jsme se v DOM = Document Object Model věnovali problematickým místům našeho VBA kódu s ohledem na výsledný XML, např. jsme nezapisovali prázdné položky. Jedna z věcí, které nám dosud kazily radost z vykonané práce, bylo namnožené používání proměnné „kniha1, kniha2,…“ místo obvyklejšího opakovaného využití jediné proměnné „kniha“.

Podkladová úloha: I v dnešním dílu ponecháváme příklad  s Klubem Franze Kafky z minulých dílů. Stáhněte si sešit 2013-15 XML.xlsm a sešit otevřete. (Heslo k projektu jsme nastavili "1234", předsedovo heslo "4321").

V úvodu učiníme odbočku na základě dotazů některých čtenářů.

Začátek odbočky

V dílu 10 jsme začali pracovat s DOM, a k tomu účelu jsme přes Tools->References zapojili knihovnu "Microsoft XML, v6.0", která odpovídá souboru "msxml6.dll". Tento soubor je umístěn v závislosti na operačním systému v některé systémové složce Windows. Jak i sám Microsoft přiznává, nejsou všechny DLL, označené "msxml6.dll" stejné. U některých čtenářů vznikl problém (nejčastěji na 64-bitových systémech), že deklarace:

Dim oXML As MSXML2.DOMDocument

hlásila syntaktickou chybu "User-defined type not defined". Po prozkoumání v Object Browseru (rychle spustíte ve VBE klávesou <F2>) se ukázalo, že mají definován pouze objekt  DOMDocument60  nikoli obecný DOMDocument. Po nahrazení v patřičných místech začalo vše fungovat.

Konec odbočky

Předseda dal chvíli pokoj. Ale někde v zátylku vám poblikává kontrolka, že nemáte všechno tak docela v pořádku. Předsedova dcera začala chodit s nějakým počítačovým expertem, a co když mu předseda předhodí vaše dílo, aby se podíval, jak jste postupovali profesionálně? A ten tam najde 16 x namnožený kód s knihovnami, a i kdyby nebyl odborníkem na VBA, jistě by to v něm vyvolalo podezření o vaší profesionalitě.

Minule jsme odstranili nejzřetelnější nedostatky = prázdné řádky u knih, které uchazeč nevyplnil. Dále jsme zaznamenali potenciální problém s formátem datumu. Abychom se vyhnuli mezinárodním rozdílům, zapsali jsme datum jako přirozené číslo, reprezentující vnitřní tvar v Excelu a použili jsme k tomu konverzní funkci typu CLng.

Dnes se zkusíme vypořádat s namnoženým elementem kniha1. Po pravdě řečeno, namnožené elementy kniha1, kniha2,...   nám umožňovaly dodatečně opravovat vlastnosti každého  tohoto elementu, např. použít nějakého systému překladu slov, která uchazeč zadal, a pro

Nahrávám...
Nahrávám...