< 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   další »
#035354
avatar

Anonym napsal/a:

No pokud tady předhodíš vykuchaný kód, nemůžeš očekávat, že si někdo bude chybějíci řádky domýšlet.
Problém může být zrovna v nich.
A jen má doměnka:
GetInfoFromClosedFile() předpokládám, že ExecuteExcel4Macro()
No 9000 * 2500 * 2 ???
Do toho bych nešel.


Jo touhle funkcí zjišťuju jestli soubor obsahuje sheet který potřebuju, nicméně ani po promazání toho kódu uvnitř cyklu se nic nezmění a pořád to něco načítá do RAM. Takže to asi problém nebude...

A proč 9000 * 2500 * 2 ?
Nebo jak jinak to udělat? Prostě počet záznamů je daný, nějaký tip jak to obejít?citovat
#035355
avatar

marjankaj napsal/a:

Ani som sa nesnažil ten kód čítať.
Ale keď píšeš,že to funguje, tak v čom je potom problém?


Možná by stačilo přečíst ten první příspěvek, funguje, ale jen do doby než se zaplní paměť a pak "spadne", resp. vyhodí hlášku že došla volná RAM a musí se natvrdo ukončit.citovat
#035356
avatar

eLCHa napsal/a:

Nemůže fungovat.
Na začátku máte end if bez if.


Psal jsem že ten kód je upravený, smazal jsem tam jednu nepodstatnou podmínku, důležitý je ten cyklus, od toho tam začíná naskakovat RAM do tý doby je to OK, na začátku byl ještě jeden cyklus kterej prochází cca 15000 řádků a nepotřebný maže, ten je taky OK, RAM se ani nehne.citovat
icon #035357
eLCHa
Ještě vám věnuji jeden příspěvek.

Vložil jste tady kód, o kterém tvrdíte, že je funkční. Ten kód neprojde ani kompilací, takže v tu chvíli se tím přestávám zabývat.
Když už ale toto přeskočím, tak je tam funkce GetInfoFromClosedFile, o které se můžu jen domýšlet, co dělá.

Nezlobte se, ale chcete po nás poradit, sám tomu věnujete 10 minut času a my to máme zkoumat?

Tady vám bez přílohy poradí opravdu jen kouzelník. Výmluva o firemních datech a externích souborech neobstojí. Vy chcete poradit a vy byste měl připravit nějakou funkční alternativu (pro ukázku stačí i 5 souborů). Když už tady dáte pouze kód, tak by měl být alespoň detailně okomentovaný.

Ten kód je strašný, ale žádný učený z nebe nespadl. Nicméně makro, které jede několik hodin zahoďte a dělejte to raději ručně. Když už se vám to podaří zprovoznit, tak vypadne proud nebo se vám spustí aktualizace windows.
Cyklus 9000*2500 musí dojet max do 10 minut a to přeháním.

Ta úloha by mohla být zajímavá, kdyby byl lepší váš přístup.citovat
#035359
avatar

eLCHa napsal/a:


Ta úloha by mohla být zajímavá, kdyby byl lepší váš přístup.

Každý dělá to co umí.
Všetci sú tu blbci, len zadávateľ je nepochopený génius. A taký môže kritizovať všetko.citovat
#035363
avatar

eLCHa napsal/a:

Ještě vám věnuji jeden příspěvek.

Vložil jste tady kód, o kterém tvrdíte, že je funkční. Ten kód neprojde ani kompilací, takže v tu chvíli se tím přestávám zabývat.
Když už ale toto přeskočím, tak je tam funkce GetInfoFromClosedFile, o které se můžu jen domýšlet, co dělá.

Nezlobte se, ale chcete po nás poradit, sám tomu věnujete 10 minut času a my to máme zkoumat?

Tady vám bez přílohy poradí opravdu jen kouzelník. Výmluva o firemních datech a externích souborech neobstojí. Vy chcete poradit a vy byste měl připravit nějakou funkční alternativu (pro ukázku stačí i 5 souborů). Když už tady dáte pouze kód, tak by měl být alespoň detailně okomentovaný.

Ten kód je strašný, ale žádný učený z nebe nespadl. Nicméně makro, které jede několik hodin zahoďte a dělejte to raději ručně. Když už se vám to podaří zprovoznit, tak vypadne proud nebo se vám spustí aktualizace windows.
Cyklus 9000*2500 musí dojet max do 10 minut a to přeháním.

Ta úloha by mohla být zajímavá, kdyby byl lepší váš přístup.


Prosím Vás, pokud nechcete radit nebo kritizovat alespoň věcně tak se nevyjadřujte vůbec, ušetříte si čas i nervy. Kdybyste přesto chtěl nějak pomoci, tak mi napište kde konkrétně vidíte v mém kódu nedostatky nebo chyby.

Můj dotaz byl obecného rázu, jak zajistit aby Excel nežral systémové prostředky, případně jak upravit "ukázkový" kód. Jak jsem už psal, podobných cyklů mám spoustu a všechny fungují jak mají, jen tenhle ne. Co se týče toho okolo, všechno funguje jak má do chvíle kdy to doleze k tomu cyklu a tam to začne načítat data, stejně tak když ten cyklus promažu/zakomentuju a nechám to jenom běžet dokola, tak to zase načítá nesmyslně do paměti, tzn. co dělá funkce GetInfoFromClosedFile() je pro tenhle problém irelevantní...

A ano, příklad sem dát by bylo velice komplikované, protože se jedná o velké množství souborů a dat, která bych musel ručně anonymizovat, navíc přepsat všechny cesty apod. S realitou by to pak mělo pramálo společného a na malém vzorku dat by to jistě fungovalo bez problémů. Proto příklad nedávám...citovat
icon #035364
eLCHa
Můj dotaz byl obecného rázu

Hehe, OK, tak tedy obecně.
Najděte problematické místo a to upravte tak, ať to nežere paměť. ;)))citovat
#035366
avatar
Zadavatel tu zaměstnává několik lidí, reaguje jak idiot kecama okolo, ale my si tu honíme ego? Jako chlap možná chlapovi - sbalte si ty svoje dobré kódy a běžte do prdele :-)citovat
#035369
avatar

xlnc napsal/a:

Zadavatel tu zaměstnává několik lidí, reaguje jak idiot kecama okolo, ale my si tu honíme ego? Jako chlap možná chlapovi - sbalte si ty svoje dobré kódy a běžte do prdele :-)


Nikoho tu nezaměstnávám, reagujete dobrovolně, ovšem oba dva mimo téma a tím pádem zbytečně. Pokud neumíte/nechcete poradit proč pořád reagujete?citovat
#035372
avatar
Honíme si tu ego.
Baví nás zesměšňovat zadavatele.citovat

Strana:  « předchozí  1 2 3 4   další »

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

odpocet a storno tl.

PavDD • 28.3. 8:53

odpocet a storno tl.

Začátečník • 26.3. 14:39

odpocet a storno tl.

PavDD • 26.3. 10:22

odpocet a storno tl.

elninoslov • 26.3. 7:50

odpocet a storno tl.

PavDD • 26.3. 7:26

odpocet a storno tl.

elninoslov • 25.3. 22:34

odpocet a storno tl.

Začátečník • 25.3. 15:09