Opakovane som analyzoval spôsoby importu údajov do Excelu z internetu s následnou automatickou aktualizáciou. Konkrétne:
- V starších verziách Excelu 2007-2013 to bolo možné vykonať priamou webovou požiadavkou.
- Od roku 2010 to možno urobiť veľmi pohodlne pomocou doplnku Power Query.
K týmto metódam v najnovších verziách programu Microsoft Excel teraz môžete pridať ďalšiu – import údajov z internetu vo formáte XML pomocou vstavaných funkcií.
XML (eXtensible Markup Language = Extensible Markup Language) je univerzálny jazyk určený na popis akéhokoľvek druhu údajov. V skutočnosti je to obyčajný text, ale sú k nemu pridané špeciálne značky na označenie štruktúry údajov. Mnoho stránok poskytuje bezplatné toky svojich údajov vo formáte XML, aby si ich mohol stiahnuť ktokoľvek. Najmä na webovej stránke Centrálnej banky našej krajiny (www.cbr.ru) sú pomocou podobnej technológie uvedené údaje o výmenných kurzoch rôznych mien. Z webovej stránky Moskovskej burzy (www.moex.com) si rovnakým spôsobom môžete stiahnuť kotácie akcií, dlhopisov a mnoho ďalších užitočných informácií.
Od verzie 2013 má Excel dve funkcie na priame načítanie údajov XML z internetu do buniek hárka: WEBOVÁ SLUŽBA (WEBOVÁ SLUŽBA) и FILTER.XML (FILTERXML). Pracujú vo dvojiciach – najprv funkcia WEBOVÁ SLUŽBA vykoná požiadavku na požadovanú stránku a vráti svoju odpoveď vo formáte XML a potom pomocou funkcie FILTER.XML túto odpoveď „analyzujeme“ do komponentov a extrahujeme z nej údaje, ktoré potrebujeme.
Pozrime sa na fungovanie týchto funkcií na klasickom príklade – importovanie kurzu ľubovoľnej meny, ktorú potrebujeme pre daný dátumový interval z webovej stránky centrálnej banky našej krajiny. Ako polotovar použijeme nasledujúcu konštrukciu:
Tu:
- Žlté bunky obsahujú dátumy začiatku a konca obdobia, ktoré nás zaujíma.
- Modrý má rozbaľovací zoznam mien pomocou príkazu Údaje – Validácia – Zoznam (Údaje – Validácia – Zoznam).
- V zelených bunkách použijeme naše funkcie na vytvorenie reťazca dotazu a získanie odpovede servera.
- Tabuľka vpravo je odkaz na kódy mien (budeme to potrebovať o niečo neskôr).
Poďme!
Krok 1. Vytvorenie reťazca dotazu
Ak chcete získať požadované informácie zo stránky, musíte sa ich správne opýtať. Ideme na www.cbr.ru a otvoríme odkaz v päte hlavnej stránky“ Technické zdroje - Získavanie údajov pomocou XML (http://cbr.ru/development/SXML/). Posunieme sa trochu nižšie a v druhom príklade (Príklad 2) bude to, čo potrebujeme – získanie výmenných kurzov pre daný interval dátumov:
Ako vidíte z príkladu, reťazec dopytu musí obsahovať dátumy začiatku (date_req1) a koncovky (date_req2) obdobia, ktoré nás zaujíma, a kód meny (VAL_NM_RQ), mieru, ktorú chceme získať. Hlavné kódy mien nájdete v tabuľke nižšie:
mena | kód | | mena | kód |
Austrálsky dolár | R01010 | litovský litas | R01435 | |
rakúsky šiling | R01015 | litovský kupón | R01435 | |
azerbajdžanský manat | R01020 | Moldavský leu | R01500 | |
libra | R01035 | РќРµРјРµС † РєР ° СЏ РјР ° СЂРєР ° | R01510 | |
Angolská nová kwanza | R01040 | holandský gulden | R01523 | |
Arménska dráma | R01060 | nórska koruna | R01535 | |
bieloruský rubeľ | R01090 | zlotý | R01565 | |
belgický frank | R01095 | Portugalské escudo | R01570 | |
Bulharský lev | R01100 | Rumunský leu | R01585 | |
Brazílsky real | R01115 | Singapurský dolár | R01625 | |
Maďarský forint | R01135 | Surinamský dolár | R01665 | |
Hong Kong dolár | R01200 | tadžický somoni | R01670 | |
grécka drachma | R01205 | tadžický rubeľ | R01670 | |
Dánska koruna | R01215 | Turecká líra | R01700 | |
americký dolár | R01235 | turkménsky manat | R01710 | |
euro | R01239 | Nový turkménsky manat | R01710 | |
Indická rupia | R01270 | uzbecká suma | R01717 | |
írska libra | R01305 | Ukrajinská hrivna | R01720 | |
islandská koruna | R01310 | Ukrajinský karbovanec | R01720 | |
španielska peseta | R01315 | fínska značka | R01740 | |
talianska líra | R01325 | francúzsky frank | R01750 | |
Kazachstan tenge | R01335 | Česká koruna | R01760 | |
kanadský dolár | R01350 | Švédska koruna | R01770 | |
Kirgizský som | R01370 | Švajčiarsky frank | R01775 | |
Čínsky jüan | R01375 | Estónska koruna | R01795 | |
Kuvajtský dinár | R01390 | Juhoslovanský nový dinár | R01804 | |
lotyšský lat | R01405 | Juhoafrický rand | R01810 | |
Libanonská libra | R01420 | Kórejská republika vyhrala | R01815 | |
japonský jen | R01820 |
Kompletný sprievodca menovými kódmi je dostupný aj na webovej stránke centrálnej banky – pozri http://cbr.ru/scripts/XML_val.asp?d=0
Teraz vytvoríme reťazec dotazu v bunke na hárku s:
- operátor zreťazenia textu (&), ktorý ho spojí;
- Vlastnosti VPR (VLOOKUP)aby sme v adresári našli kód meny, ktorú potrebujeme;
- Vlastnosti TEXT (TEXT), ktorý prevedie dátum podľa daného vzoru deň-mesiac-rok cez lomku.
="http://cbr.ru/scripts/XML_dynamic.asp?date_req1="&ТЕКСТ(B2;"ДД/ММ/ГГГГ")& "&date_req2="&ТЕКСТ(B3;"ДД/ММ/ГГГГ")&"&VAL_NM_RQ="&ВПР(B4;M:N;2;0)
Krok 2. Vykonajte požiadavku
Teraz použijeme funkciu WEBOVÁ SLUŽBA (WEBOVÁ SLUŽBA) s vygenerovaným reťazcom dopytu ako jediným argumentom. Odpoveďou bude dlhý riadok kódu XML (je lepšie zapnúť zalamovanie slov a zväčšiť veľkosť bunky, ak ju chcete vidieť celú):
Krok 3. Analýza odpovede
Na uľahčenie pochopenia štruktúry údajov odpovedí je lepšie použiť niektorý z online analyzátorov XML (napríklad http://xpather.com/ alebo https://jsonformatter.org/xml-parser), ktorý dokáže vizuálne formátovať kód XML, pridávať doň zarážky a zvýrazniť syntax farbou. Potom bude všetko oveľa jasnejšie:
Teraz môžete jasne vidieť, že hodnoty kurzu sú orámované našimi značkami
Ak ich chcete extrahovať, vyberte stĺpec desiatich (alebo viacerých – ak sa to robí s okrajom) prázdnych buniek na hárku (pretože bol nastavený 10-dňový interval dátumov) a zadajte funkciu do riadka vzorcov FILTER.XML (FILTERXML):
Tu je prvým argumentom odkaz na bunku s odpoveďou servera (B8) a druhým je reťazec dotazu v XPath, špeciálnom jazyku, ktorý možno použiť na prístup k potrebným fragmentom kódu XML a na ich extrahovanie. Viac o jazyku XPath si môžete prečítať napríklad tu.
Je dôležité, aby ste po zadaní vzorca nestlačili vstúpiťa klávesovú skratku ctrl+smena+vstúpiť, tj zadajte ho ako vzorec poľa (zložené zátvorky okolo neho sa pridajú automaticky). Ak máte najnovšiu verziu Office 365 s podporou dynamických polí v Exceli, potom je to jednoduché vstúpiť, a nemusíte vopred vyberať prázdne bunky – samotná funkcia zaberie toľko buniek, koľko potrebuje.
Ak chcete extrahovať dátumy, urobíme to isté – vyberieme niekoľko prázdnych buniek v susednom stĺpci a použijeme rovnakú funkciu, ale s iným dotazom XPath, aby sme získali všetky hodnoty atribútov Dátum zo značiek Record:
=FILTER.XML(B8;”//Záznam/@Dátum”)
Teraz v budúcnosti, keď zmeníte dátumy v pôvodných bunkách B2 a B3 alebo vyberiete inú menu v rozbaľovacom zozname bunky B3, náš dotaz sa automaticky aktualizuje s odkazom na server centrálnej banky pre nové údaje. Ak chcete vynútiť aktualizáciu manuálne, môžete použiť aj klávesovú skratku ctrl+ostatné+F9.
- Importujte bitcoinovú sadzbu do Excelu cez Power Query
- Importujte výmenné kurzy z internetu v starších verziách Excelu