dnes je 27.4.2024

Input:

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

23.4.2013, , Zdroj: Verlag Dashöfer

Při seznamování s formátem XML – eXtensible Markup Language jsme minule vytvořili zjednodušené schéma pro UNESCO. Předseda dostal vynadáno, co jim to poslal za výstup. Sestrojili jsme tedy lepší schéma, které respektovalo internacionalizaci našeho exportu. Dnes se zaměříme na to, aby nové schéma pracovalo podle očekávání mezinárodní komunity.

Podkladová úloha: Ponecháváme si příklad s Klubem Franze Kafky z minulých dílů. Stáhněte si sešit 2013-09 XML.xlsm. Sešit otevřete. Nezapomeňte zadat předsedovo heslo 4321 a odemknout list k úpravám s heslem 1234. Uvidíte zhruba toto:

Předseda se ještě jednou ujišťoval, že do Francie neodejde další náš člen typu Atráb Valsoraj. Uznával, že to byl jeho požadavek na testování uchazečů, ale snad prý nejsme tak neschopní, abychom programátorsky nepoznali, jak uchazeč své jméno vyplnil.

Již v minulé verzi byly vytvořeny vzorce, které z vyplněného jména vytvářely jméno konvenční, rozdělené do části Jméno, příjmení vpravo od formuláře. Podíváme se na to, jak je to provedeno:

E7: =HLEDAT(" ";B7)

F7: =ZLEVA(B7;E7-1)

G7: =ČÁST(B7;E7+1;100)                             

(tady si zjednodušujeme život. Správnější by bylo spočítat zbylou délku řetězce. Ale u jména osoby bude 100 znaků bohatě stačit)

F8: =STEJNÉ(ZLEVA(F7);VELKÁ(ZLEVA(F7)))       

(ověřujeme, zda je první znak velké písmeno)

F9: =KDYŽ(F8;F7;strRev(G7))                                    

(při vyplnění jména v obráceném pořadí bude jméno uloženo v druhé buňce pozpátku).

G9: =KDYŽ(F8;G7;strRev(F7))

Přitom využíváme UDF funkci pro obrácení řetěce:

Minule jsme vytvořili jednoduché schéma pro UNESCO, a to jsme importovali do našeho sešitu. Přejmenovali jsme ho na UNESCO_export. To nyní namapujeme na buňky, kde jsme vyřešili civilní jméno a příjmení (řešení není dokonalé, ale pro účely výkladu o XML se s touto zjednodušenou kontrolou, zda je jméno uvedeno běžně, nebo pozpátku, spokojíme):

Mapování provedeme pomocí pravého tlačítka myši:

Ale narazili jsme na problém. firstName i lastName se namapovat přes pravé tlačítko myši podařilo, zatímco birthDate

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