Poradna - VBA nefunguje
hlavní kategorie | zpět | + odpovědět na toto témaVBA nefunguje - diskuze na toto téma |
Můžete mi poradit? Něco jsem asi provedl s mým excelem, co mi tu jeden profesionál dělal, a přestalo to fungovat. :-(
https://uloz.to/tamhle/dbU24EfyDJzb/name/Nahrano-24-7-2021-v-17-17-11#!ZGV1LGR2A2D0ATEwZQp0LmV4MzDkATW6FxEGHTuMM3NgoJAvBN==
To je pri dolovaní údajov zo stránok bežné, že sa trošku zmení stránka (interne, na pohľad nič nevidieť), teda jej kód, a Váš prestane fungovať, keďže predpokladá presnú (!) skladbu kódu stránky. Tu ide asi o tie veľké čierne tučné čísla. Môj tip je, že sa na ne zmenil reactid z 32 na 31, a v Split treba počítať s položkou (2) namiesto (1). Potom to funguje. Do ďalšej zmeny. Už si to nepamätám, ak ide o niečo iné, písnite... Odpověď A můžete se na to podívat? Je to v odkazu na uložto zde >>> https://uloz.to/tamhle/dbU24EfyDJzb/name/Nahrano-24-7-2021-v-17-17-11#!ZGV1LGR2A2D0ATEwZQp0LmV4MzDkATW6FxEGHTuMM3NgoJAvBN==
Já tomuto programování v excelu vůbec nerozumím. Odpověď ??? To je také ťažké zmeniť tie dve čísla ??? Const START_KEY = "D(ib)"" data-reactid=""32"">" zmeňte na Const START_KEY = "D(ib)"" data-reactid=""31"">", a potom ešte ... Split(kod, START_KEY)(1) ... zmeňte na ... Split(kod, START_KEY)(2) ... Odpověď elnino..: Můžu mít dotaz? Jak přesně si přišel na to kde je co špatně? Že mám dát místo 32, 31čku? Jak a kde přesně to vyčtu z kódu té stránky, abych příště věděl?
Díky. Odpověď To nejde vysvetliť len tak jednoducho, a tým duplom to niekoho ešte aj naučiť. Na to treba pochopiť princíp, na ktorom makro funguje (jednoduché rozdelenie textu kódu stránky pomocou známych {predtým zistených} počiatočných a ukončovacích reťazcov), vedieť čo na ktorom mieste čakať a ako to zistiť, teda mať trochu skúseností. A poznať programovanie VBA (premenné, polia, krokovanie, skúmanie premenných a medzivýsledkov vo Watches, a pod.). Takže najskôr krokovanie makra, a zistenie, že H(i, 3) nedostane hodnotu. Teda musí byť chyba v Splite. Zistím, že Split(kod, START_KEY) kód nerozdelí, čo znamená, že kód stránky neobsahuje START_KEY. Takže si v prehliadači otvorím stránku a dám si zobraziť kód. Hľadám dané výsledné číslo napr. 76.98 z pozerám aký data-reactid sa pred ním nachádza. No a zistím že je to 31 a nie pôvodné 32. Upravím, a znovu makro krokujem. Výsledok v H(i, 3) je, ale divný 34935,47. Tak si znovu pozriem Split(kod, START_KEY) a zistím, že vracia 3 prvky, z ktorých je Odpověď správne číslo až v tom treťom (index 2) namiesto druhého (index 1). Upravím, vyskúšam, funguje. Ak by to nešlo, skúmam ďalej, či kód stránky obsahuje aj ukončovací reťazec END_KEY v tom druhom Splite Split(Split(kod, START_KEY)(2), END_KEY) ... To je na kočku pri takomto dolovaní údajov zo stránok, lebo stačí malá zmena v kóde stránky, a je to nefunkčné. Odpověď Alebo lepšie bude, ak použijete PowerQuery (PQ) dotaz na históriu daných akcií, tak ako to navrhoval kedysi užívateľ Andrej. PQ je v Office od verzie 2016 obsiahnutý. Do verzií 2010 a 2013 sa dá stiahnuť priamo od MS ako doplnok, zadara, origo. Hodnoty obnovíte jednoducho kliknutím na "Obnoviť všetko" na karte "Údaje", alebo pravý klik na Tabuľku na liste Hodnoty a vybrať Obnoviť. Totálne jednoduché, a vyzerá to odolnejšie ako makro voči zmenám stránky. Ale je to o trošku pomalšie. Odpověď |