WWW pro školy
Jak na Office - tutoriály, video návody











Vytvoř si párové triko

Poradna - VBA nefunguje

Vložení příspěvku
Předmět:
Vaše jméno: (povinný údaj) Váš e-mail:
Text:(Zbývá: 1000 znaků - povinný údaj)
Připojit ukázkový soubor:
(Maximální velikost souboru jsou 2MB.)
 Opište následující text (kvůli zneužití):  hvvBD   

hlavní kategorie | zpět | + odpovědět na toto téma
VBA 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==

elninoslov | 25.7.2021 00:09  
 
 
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ěď
kombo | 25.7.2021 00:15  
 
 
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ěď
elninoslov | 27.7.2021 14:25  
 
 
??? 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ěď
kombo | 30.7.2021 02:20  
 
 
Díky moc, z toho druhého návodu už jsem to pochopil :-)
Odpověď
kobo | 31.7.2021 08:15  
 
 
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ěď
elninoslov | 31.7.2021 18:51  
 
 
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ěď
elninoslov | 31.7.2021 18:56  
 
 
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ěď
elninoslov | 1.8.2021 01:44  
 
 
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ěď