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ářů.
NahoruZačá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.
NahoruKonec 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…