V předchozím článku jsme probrali makro, spouštěné pomocí tlačítka umístěného na listě. Tentokrát si vyzkoušíme uživatelskou funkci, jejíž pomocí upravíme data, získaná z internetu, a ta bude pracovat přímo z nitra Excelu.
Úloha zní: V sešitě na listu „Data“ budeme mít blok dat, která obsahují kód výrobku, název výrobku a popis. Ale popis jsme získali z nějakých webových stránek, a obsahuje různé http a XML příkazy, jichž se potřebujeme zbavit.
Mohli bychom postupovat tak, že přímo v Excelu pustíme povel „Nahradit“ a vždycky výrazy typu <B>, </B>,…, <STRONG>, </STRONG> prázdným znakem. To bude vyžadovat mnohokrát opakované vyhledávání a nahrazování. Pokud nás čeká podobná práce vícekrát za měsíc, určitě bychom uvítali, kdyby se našel nějaký účinnější způsob.
Při zběžné prohlídce dat zjistíme dva typy řetězců, které potřebujeme nahradit např. mezerou.
Stáhněte si sešit 10_26_Vycisteni_dat.xlsm z odkazu na konci článku. Bude obsahovat komentář k první části funkce, jež čištění dat organizuje. Sešit otevřete.
Otevřete si VBE (editor Visual Basicu) např. Alt+<F11> a zobrazte si funkci „Vycisti_http“ . Viz obrázek:
Řekneme si pár slov k úkolu, který nás čeká. Předně musíme v některém modulu VBA sestrojit funkci, a pak tuto funkci použijeme ke splnění úkolu přímo v excelovém listu. Podívejte se na následující obrázek:
Nejprve stiskneme levou myší značku pro funkci, a pak rozbalíme tlačítko u „Vybrat kategorii“. Zvolíme kategorii „vlastní“, kam Excel shromáždí názvy všech funkcí ve VBA, které momentálně vidí. Proveďte to např. na buňce E2. Měli byste vidět něco jako na následujícím obrázku:
Zvolte naši funkci „Vycisti_http“. V sešitě na listě Data, v buňce E2 potom vznikne nový výraz, jehož součástí je námi vytvořená funkce:
Funkce po nás chce doplnit argument „Zdroj“ což provedeme nejlépe myší ťuknutím na buňku C2. Všimněte si, že volba názvu argumentu hraje pozitivní roli. Parametr ve funkci jsme nazvali „Zdroj“, a teď nám trochu napovídá, že sem přijde to, co chceme čistit. Kdybychom si tento parametr nazvali vtipně třeba „S1“, nenapovídalo by nám to nic. A pokud bychom ještě vtipněji zvolili „Datum_10_narozenin_uzivatele“, přímo bychom mátli. – viz obrázek:
Seznámili jsme se s možností ovlivňovat výpočty v buňkách stejným způsobem, jako to dělá Excel sám. To je obecně velmi výhodné, protože někdy je takřka nemožné vyřešit nějaké požadavky pouze na úrovni Excelu, a…