< návrat zpět

MS Excel


Téma: Pád Excelu po zaplnění paměti rss

Zaslal/a 6.3.2017 13:35

Dokázal by někdo poradit jak upravit makro tak aby využívalo méně systémových prostředků? Mám 64bit Win7 ale 32bit Excel. Makro jsou 2 cykly, jeden prochází cca 9000 řádků a na každém spustí cyklus který prochází dalších cca 2500 řádků v jiném listu. Porovnávají se záznamy a vkládají se odkazy na jiné soubory pomocí vzorců. Makro běží několik hodin ale nikdy nedoběhne protože se zaplní paměť (cca 1,6GB) a Excel zkolabuje, výsledek nelze uložit, nic.

Jméno
Kontrola
Text
  b i u s img code url hr   1 2 3 4 5 6 7 8 9 10

Strana:  « předchozí  1 2 3 4
icon #035437
avatar
Ano svět se v prdel obrací, díky lidem jako vy.
Venouši, ty si mi fakt asi zdáš :) O VBA určite neviem všetko, ale skutočne sa domnievaš, že pokiaľ sem dáš vykuchaný kód, tak niekto dokáže rozkľúčovať, v čom môže byť problém?
...proč na to proboha ale reagujete když vám to podle všeho za to nestojí? Pretože internet je slobodný priestor, napríklad. Z rovnakého dôvodu ty sem môžeš písať svoje zadania. Potom ale si bohužiaľ nútený strpieť reakcie, ktoré ti asi nie sú po chuti. Tak to proste je. Buď to riešenie hľadáš na fórach, kde ti ho niekto možno dá zadarmo, daňou za to potom ale budú reakcie, ktoré pokladáš za nejapné. Môžeš ovšem požiadať o platenú službu niekde inde, kde s tebou budú jednať v rukavičkách. To si rozhodni sám. Pokiaľ sem ale zadáš kravinu, počítaj s tým, že reakcia nemusí byť vždy taká, ktorú oceníš. Nás nenúti nikto reagovať na kraviny, teba nikto nenúti sem kraviny písať. Kapiš?citovat
#035438
elninoslov
Skúste, či som to prerobil správne na polia. Čiastočne som eliminoval opakovanie testov ExecuteExcel4Macro, úplne minimalizoval neustály prestup medzi VBA a Cells, a iné, nechce sa mi to písať. Vyskúšajte. A polepšite sa.

Ostrý súbor si zálohujte a pokusy robte výhradne na kópii !
Příloha: zip35438_error_test_array.zip (184kB, staženo 25x)
citovat
icon #035440
eLCHa
Mno, když to vemu kolem a kolem.
Nechce se mi to klíčovat, ale řekl bych že postup je následující
1) Nejdříve si děláte výpis existujících souborů na následující líst
To umí PowerShell (Get-ChildItem) - když to dobře načtete do Collection, tak se zbavíte úvodní procedury Recurse2 nebo tak nějak a zároveň 1 cyklu (cestu souboru vyhledáte pomocí Key)
2) Pak pokud existuje v souboru list načítáte z něj 2 hodnoty a ty vkládáte do sloupce
Test existence listu například pomocí ADO jak jsem psal včera (Connection.OpenSchema), pokud by navíc byla jistota, že ty listy jsou vždy stejné, dá se ADO rovnou využít na vrácení hodnoty (když už je otevřené).
Mělo by to být celkem rychlé - závisí to na umístění souborů (pokud je to na síti, je tam vždycky riziko)

Pokud by na začátku tématu byla příloha a popsaný problém, je možné, že bych vám to napsal i zadarmo, protože to je zajímavý problém. Za ty kecy o mistrech světa se omezím pouze na toto nasměrování, i tak je to více, než si zasloužíte. Pokud po vás totiž něco chceme, tak k tomu máme důvod. V opačném případě tady potom následují další a další dotazy (své by mohl říct elninoslov - to téma už si nepamatuji, ale většina z nás je alergická na "super, to je ono. a prosím šlo by ještě..."). Navíc, já jsem toho viděl hodně, ale aby někdo zaplnil 1,6GB RAM jsem neviděl a proto vám na tento podle vás obecný dotaz nikdo nebyl schopen bez přílohy odpovědět.

Jednu radu zadarmo vám ale dám
Nepoužívejte ActiveWorkbook, ale ThisWorkbook nebo Workbooks(jméno). Protože nejhorší věci jsou ty, které fungují jen z 99%...citovat
#035442
avatar
No vidíte "eLCHa" a kdybyste mi tohle napsal rovnou místo "dělejte to radši ručně" apod. tak jsme si mohli ušetřit spoustu času. Já ten původní příspěvek psal s vědomím že tady prostě nesedí někdo dobrovolně 24h denně aby opravoval kódy nováčkům, proto jsem chtěl první nasměrovat od zkušenějších, kde by asi mohl být problém abych se v tom pohrabal sám. tím se zároveň i něco naučím, nenárokoval jsem si tady žádný služby zdarma abych někomu předhodil co mám a co chci a on to za mě napsal. Ale chápu že někdy je to i pro toho kdo radí jednodušší a rychlejší postup než vypisovat všechny varianty apod.

Nicméně děkuji všem kteří přispěli k tématu, děkuji uživateli "elninoslov" za upravený kód, popravdě, budu se tím muset trochu prokousat, na ostrých datech to pořád nefunguje jak má, nicméně RAM to nežere a je to rychlejší, takže snad ten zbytek zvládnu už sám, případně se na vás ještě obrátím.citovat
icon #035444
eLCHa
je to marnýcitovat

Strana:  « předchozí  1 2 3 4

Uživatelské menu

Nejste přihlášen(a)
avatar\n

Menu

On-line nástroje

Formulář Faktura

Formulář Faktura IV

Oblíbený formulář Faktura byl vylepšen a rozšířen.
Více se dočtete zde.

Aktivní diskuse