Forum » Programiranje » [VBA] Uvažanje ECB tečajnice glede na datum
[VBA] Uvažanje ECB tečajnice glede na datum
avtek ::
Živjo,
Delam si en programček v Excelu oz VBA, pa se mi je pri tečajnici malo ustavilo.
Govorim o tečajnici ECB (link: klik).
Na desni strani je gumb "Prenos zadnjih podatkov", kjer so izpisani XML podatki za zadnji dan na voljo (navadno za pretekli oz. okoli 16.15 se posodobijo za tisti dan). Takšno tečajnico lahko uvozim in jo osvežim vsak dan, vendar to ni to kar iščem.
Sam pa bi rad izvozil za točno določen datum, in mi nikakor ne uspe.
V excelu želim imeti eno celico, kamor bi vpisal datum (še bolje koledarček na userform), ta pa bi preko poizvedbe poiskal in importal tečaje, ki so bili za tisti dan aktualni. Če poizkusite na spletni strani ima tabela datum, kjer izbereš datum in klikneš "prikaži", in se v URL doda atribut datum za tisti določen datum, ter prikažejo se tečaji. Kako bi to zadevo avtomatiziral v Excelu? Me lahko lepo prosim kdo usmeri, ker mi nikakor ne uspe. Kaj pa v primeru, da se izbere vikend, kadar se tečajnica na ECB ne osvežuje, ampak javi opozorilo in da datum petek (oz zadnji delovni dan), kar je super. To bi si želel tudi sam, da ne javlja opozoril.
Se pravi:
Korak 1: Vpis datuma v celico (ali izbira na Userform koledarčku)
Korak 2: Klik na gumb "Osveži"
Korak 3: Zadeva bi se v ozadju osvežila oz. pobrala podatke za izbran datum
Korak 4: Finito in bi lahko začel z obdelovanjem podatkov naprej
Lepo prosim za pomoč oz. usmeritev.
Najlepša hvala!
Delam si en programček v Excelu oz VBA, pa se mi je pri tečajnici malo ustavilo.
Govorim o tečajnici ECB (link: klik).
Na desni strani je gumb "Prenos zadnjih podatkov", kjer so izpisani XML podatki za zadnji dan na voljo (navadno za pretekli oz. okoli 16.15 se posodobijo za tisti dan). Takšno tečajnico lahko uvozim in jo osvežim vsak dan, vendar to ni to kar iščem.
Sam pa bi rad izvozil za točno določen datum, in mi nikakor ne uspe.
V excelu želim imeti eno celico, kamor bi vpisal datum (še bolje koledarček na userform), ta pa bi preko poizvedbe poiskal in importal tečaje, ki so bili za tisti dan aktualni. Če poizkusite na spletni strani ima tabela datum, kjer izbereš datum in klikneš "prikaži", in se v URL doda atribut datum za tisti določen datum, ter prikažejo se tečaji. Kako bi to zadevo avtomatiziral v Excelu? Me lahko lepo prosim kdo usmeri, ker mi nikakor ne uspe. Kaj pa v primeru, da se izbere vikend, kadar se tečajnica na ECB ne osvežuje, ampak javi opozorilo in da datum petek (oz zadnji delovni dan), kar je super. To bi si želel tudi sam, da ne javlja opozoril.
Se pravi:
Korak 1: Vpis datuma v celico (ali izbira na Userform koledarčku)
Korak 2: Klik na gumb "Osveži"
Korak 3: Zadeva bi se v ozadju osvežila oz. pobrala podatke za izbran datum
Korak 4: Finito in bi lahko začel z obdelovanjem podatkov naprej
Lepo prosim za pomoč oz. usmeritev.
Najlepša hvala!
111111111111 ::
Moj predlog je kakšna phyton skripta, ki jo excel samo pokliče za določen datum in mu dostavi podatke.
https://stackoverflow.com/questions/181...
Če pa hočeš excel all the way:
https://www.wiseowl.co.uk/blog/s393/scr...
Listo pa na web strani izpisuješ:
https://www.bsi.si/statistika/devizni-t...10.03.2020
Excel je prava nočna mora za webscraping in potegne za sabo ogromno dela in težaškega popravljanja skript.
https://stackoverflow.com/questions/181...
Če pa hočeš excel all the way:
https://www.wiseowl.co.uk/blog/s393/scr...
Listo pa na web strani izpisuješ:
https://www.bsi.si/statistika/devizni-t...10.03.2020
Excel je prava nočna mora za webscraping in potegne za sabo ogromno dela in težaškega popravljanja skript.
Zgodovina sprememb…
- spremenilo: 111111111111 ()
SeMiNeSanja ::
Excel prav lepo podpira direktni uvoz xml podatkov s spleta.
Tudi sam imam eno tabelo, ki vsebuje BSI tečajnico (kompletno od 2007 - cca. 110k vrstic).
Ko desno kliknem na tabelo mi ponudi 'refresh' in se direktno s spleta posodobi. Nič ne čaram 'dan po dan', ker je refresh celotne tabele dovolj hiter in preprost (se ti ne more zgoditi, da bi kakšen datum preskočil).
Vse ostalo pa potem delaš z filtri nad tabelo (izbereš leto, valuto,...)
V drugi tabeli, ki uporablja tečaj pa potem iščeš z indexom datum ki je enak želenemu ali zadnjemu pred njim, če za tega ni podatka. Ta del je itak standarden.
Bolj bistveno je najbrž zagotoviti uvoz in posodabljanje s spleta?
Tudi sam imam eno tabelo, ki vsebuje BSI tečajnico (kompletno od 2007 - cca. 110k vrstic).
Ko desno kliknem na tabelo mi ponudi 'refresh' in se direktno s spleta posodobi. Nič ne čaram 'dan po dan', ker je refresh celotne tabele dovolj hiter in preprost (se ti ne more zgoditi, da bi kakšen datum preskočil).
Vse ostalo pa potem delaš z filtri nad tabelo (izbereš leto, valuto,...)
V drugi tabeli, ki uporablja tečaj pa potem iščeš z indexom datum ki je enak želenemu ali zadnjemu pred njim, če za tega ni podatka. Ta del je itak standarden.
Bolj bistveno je najbrž zagotoviti uvoz in posodabljanje s spleta?
Pričujoče sporočilo je (lahko) oglasno sporočilo
- četudi na prvi pogled ni prepoznavno kot tako.
(Zdaj me pa obtožite prikritega oglaševanja, če morete!)
- četudi na prvi pogled ni prepoznavno kot tako.
(Zdaj me pa obtožite prikritega oglaševanja, če morete!)
111111111111 ::
SeMiNeSanja je izjavil:
Excel prav lepo podpira direktni uvoz xml podatkov s spleta.
Prosim en primer webscrapinga v excelu. V zadnji službi sem imel precejšnje težave z direktnim branjem podatkov iz spletnih strani.
In potem vse tiho je bilo?
Zgodovina sprememb…
- spremenilo: 111111111111 ()
avtek ::
SeMiNeSanja je izjavil:
Excel prav lepo podpira direktni uvoz xml podatkov s spleta.
Tudi sam imam eno tabelo, ki vsebuje BSI tečajnico (kompletno od 2007 - cca. 110k vrstic).
Ko desno kliknem na tabelo mi ponudi 'refresh' in se direktno s spleta posodobi. Nič ne čaram 'dan po dan', ker je refresh celotne tabele dovolj hiter in preprost (se ti ne more zgoditi, da bi kakšen datum preskočil).
Vse ostalo pa potem delaš z filtri nad tabelo (izbereš leto, valuto,...)
V drugi tabeli, ki uporablja tečaj pa potem iščeš z indexom datum ki je enak želenemu ali zadnjemu pred njim, če za tega ni podatka. Ta del je itak standarden.
Bolj bistveno je najbrž zagotoviti uvoz in posodabljanje s spleta?
V enem drugem dokumentu uporabljam izpis cele tečajnice, da. Vendar sem mislil bolj elegantno, da bi se refreshalo samo na tist dan.
Seveda potrebujem tudi mesečno tečajnico, kar je spet Xk vrstic od 2007. + Belorusija je vmes uvedla spremembo iz BYR in BYN, in je potrebno vse BYR valute deliti z 10000 da je primerljivo (info na strani BSI).
@Chuapoizm hvala za linke, nekaj sem na hitro včeraj probaval ampak mi ni uspelo(danes nisem imel časa). Bom v prihodnjih dneh nadaljeval in javim, če mi bo kaj uspelo. Hvala še enkrat.
Argonavt ::
111111111111 je izjavil:
SeMiNeSanja je izjavil:
Excel prav lepo podpira direktni uvoz xml podatkov s spleta.
Prosim en primer webscrapinga v excelu. V zadnji službi sem imel precejšnje težave z direktnim branjem podatkov iz spletnih strani.
In potem vse tiho je bilo?
Excel ima dve verziji branja tabel z Weba. Stari Web Query tam nekje do 2007 do 2013 dela bolj tako tko. Sesuva se zaradi skript na straneh + prepoznavanje tabel je bolj bogo. Recimo BSI, SKB in NLB dnevnih tečajnic ne prepozna kot tabelo in lahko uvažas samo cel page z vsem balastom.
Novejši Get& transform ( Power Query) dela top. Vsaj BSI dnevno tečajnico prebere in uvozi BP.
XML tečajnico od 2007 testiral včeraj in dela tudi BP. Vklopiš v možnostih trak razvijalec. Dodaš XML Vir - Najprej Strukturo XML - Dodaj - v ime datoteke prilepiš link do XML tečajnice od 2007 dalje - Odpri - Pojamra da ima težave pri branju daš samo V redu. Na desni starni v kartici dobiš XML strukturo- Potegneš elemente XML v A1, B1, C1, D1 (datum oznaka, sifra, tečaj).
Desni klik v stukturi tabele- XML - Osveži XML podatke. Pozavga vse tečaje od 20007 do danes.
Vrineš stolpec na leviv Excel tabeli - razširiš obseg Excel tabele še na novi Stolpec A. Uporabiš CONCATENATE ali & formulo in zlepiš skupaj datum in oznako valute.
NA X lokaciji vpišeš datum, v sosednjo celico oznako valute, tudi zlepiš skupaj s CONCATENATE. Nastaviš drop down na datume brez vikendov in imena valut in Xlookup na iskanje v BSI bazi tečajev. Ali na enako način vlečeš v XY tabelo.
Refresh dnevno za nove tečaje, škoda ne vleče samo nove podatke.
Zgodovina sprememb…
- spremenilo: Argonavt ()
111111111111 ::
Mislim da sem takrat delal na office 2010 ali še starejšem in je bila muka od muke. Zgornjega pa ne bom kometiral, ker mi na prvo oko izgleda legit, še posebej ker se potem ni treba posebej s phytonom matrat.
SeMiNeSanja ::
Dodaš XML Vir - Najprej Strukturo XML - Dodaj - v ime datoteke prilepiš link do XML tečajnice od 2007 dalje - Odpri - Pojamra da ima težave pri branju daš samo V redu. Na desni starni v kartici dobiš XML strukturo- Potegneš elemente XML v A1, B1, C1, D1 (datum oznaka, sifra, tečaj).
Desni klik v stukturi tabele- XML - Osveži XML podatke. Pozavga vse tečaje od 20007 do danes.
Točno to metodo sem mislil.
To ni noben web scraping, saj je vedno na voljo točno definirana XML datoteka. Torej je govor o XML uvozu, ne pa o 'praskanju' podatkov s strani, ki je popolnoma druga kategorija, katera že sama po sebi kliče po težavah. Pa bog ne daj, da kdo spremeni stran, ker si potem praktično spet na začetku.
Drugače pa, ko enkrat imaš komplet tabelo, ni noben problem iz te tabele izvoziti samo tiste podatke, ki te zanimajo.
Tudi če bi rabil osvežiti v neki tretji tabeli zgolj manjkajoči dan, bi se to moralo dati napraviti z malo skriptico, ki prenese samo novejše zapise.
Kompletna lista ima drugače 5MB, kar pri današnjih hitrostih prenosa ni noben bau-bau. Sicer imajo na voljo tudi dnevno xml datoteko, ki je velika kakšne 2KB, vendar imaš z njo več dela (ne smeš zamuditi nekega dneva, appendat jo moraš k obstoječi listi že prenešenih podatkov,...). Skratka manj dela in bolj trotelziher je potegniti kompletno listo. Tisti 'Refresh' pa naučiš delat tudi ta najbolj blont tajnico z dvema levima rokama.
P.S.: opisov postopkov pa jaz ne maram delat za Excel&Co, ker sam od nekdaj že uporabljam angleško verzijo uporabniškega vmesnika in bi klatil neumnosti, če bi pisal prevod na pamet.
Pričujoče sporočilo je (lahko) oglasno sporočilo
- četudi na prvi pogled ni prepoznavno kot tako.
(Zdaj me pa obtožite prikritega oglaševanja, če morete!)
- četudi na prvi pogled ni prepoznavno kot tako.
(Zdaj me pa obtožite prikritega oglaševanja, če morete!)
Zgodovina sprememb…
- spremenilo: SeMiNeSanja ()
Argonavt ::
Itak to ni scrapping.
Slucajno smo danes finisiral Excel nadaljevalni tecaj in sta dve iz financ izkazali interes za BSI tecajnico, ces da rocno iscejo in kopirajo dnevno tri, stiri valute za nekaj razlicnih dni. Punce zamorit s Phytonim blo skrajno nepoduktivno, tole si pa zapisale recept in ga same takoj sprobale. Pa se lusten primer spajanja celic, ad hoc IDjev, lookup funkcij in delitve podatkov iz ene v vec celic in nekaj tekstovnih funkcij za vsakodnevno poslovno rabo.
Ce to naucis userje, ki so prej poznali samo sum in average, ves da si nekaj jih naucil.
Slucajno smo danes finisiral Excel nadaljevalni tecaj in sta dve iz financ izkazali interes za BSI tecajnico, ces da rocno iscejo in kopirajo dnevno tri, stiri valute za nekaj razlicnih dni. Punce zamorit s Phytonim blo skrajno nepoduktivno, tole si pa zapisale recept in ga same takoj sprobale. Pa se lusten primer spajanja celic, ad hoc IDjev, lookup funkcij in delitve podatkov iz ene v vec celic in nekaj tekstovnih funkcij za vsakodnevno poslovno rabo.
Ce to naucis userje, ki so prej poznali samo sum in average, ves da si nekaj jih naucil.
Zgodovina sprememb…
- spremenilo: Argonavt ()
Vredno ogleda ...
Tema | Ogledi | Zadnje sporočilo | |
---|---|---|---|
Tema | Ogledi | Zadnje sporočilo | |
» | Sinhronizacija podatkov iz Excela v WordOddelek: Programska oprema | 3111 (2650) | jukoz |
» | Spletni bralnik excel dokumentovOddelek: Programiranje | 2721 (2289) | b3D_950 |
» | Izšel LibreOffice 3.6Oddelek: Novice / Pisarniški paketi | 6237 (4304) | Icematxyz |
» | Excel in podatki iz internetaOddelek: Programska oprema | 1026 (928) | demokedes |
» | eur paritetni tecaj v xmlOddelek: Izdelava spletišč | 1854 (1779) | rokpok |