Kezdőlap › Fórumok › Excel programozás › Munkafüzet megnyitás / mentés időigénye VBA programból
- This topic has 5 hozzászólás, 3 résztvevő, and was last updated 6 years, 10 months telt el by helas1953.
-
SzerzőBejegyzés
-
2018-01-03-17:20 #4132
Feladatom excel munkalapok darabolása egy-egy kulcs mező szerint. Minden darabolt állomány mentésre kerül önálló munkafüzetben.
Először Excel 2010-ben oldottam meg a feladatot. Adott darabolás időigénye kis méretű (< 500 kB) darabolt fájlok esetében = X.
Később át kellett térnem Excel 2016-ra. Ugyanannak a darabolási feladatnak az időigénye megnőtt kb. 4 * X -re.
Olvastam arról, hogy a 2016-os az xml mentési forma miatt igényel több időt.
Ehhez a megjegyzéseim:
1. A 2010-es (a VBA SaveAs parancsa szerint) xlsx esetében ugyancsak xml-formátumot készít.
2. A 2016-os darabolást kipróbáltam xlsb fájlok kezelésével – alig hozott időmegtakarítást.
Ha nő a darabolt fájlok mérete, azzal arányosan nő a végrehajtási idő, és ilyen módon csökken az időrés a két megoldás között. A legjelentősebb az eltérés kicsi fájlok esetében.Kérdéseim:
1. Mi okozza a 2010-hez képest jelentős lassulást?
2. Kiiktatható-e valamilyen beállítással a keletkező időtöbblet?Köszönettel várom a segítséget.
2018-01-03-18:54 #4133Szia!
A 2016-os Excelre sokan panaszkodnak mindenféle miatt. Lenne pár kérdésem:
– 2013-ban próbáltad?
– Kézzel mentve is lassabb a mentés?
– Excel 2016 vagy Office 365 Excel az, amivel a gond volt?
– Utána kerestél-e már a problémának, és ha igen, mit találtál?Imre
2018-01-06-23:10 #4143Szia Imre!
Annyit találtam, amit leírtam. Ezért próbálkoztam (nagy reménnyel) az xlsb formátummal.
Csak 2016-os Excelt használok a 2010-esen kívül. Valahol olvastam, hogy a 2013-assal jött olyan váltás, ami hosszabb fájlkezelést okoz (bár ahogyan írtam, a 2010-es is már xml-es mentést végez az xlsx-re.
Kézzel nem érzékelhető különbség (ha nagy a fájl, akkor azért, mert akkor közelít időben a két típus darabolási időigénye; ha kicsi a fájlméret, akkor timer-rel tudnám lemérni programból – de ezt nem csináltam.
Ami vizuális különbség a két darabolás (2010-es, 2016-os) között, hogy a tálcán, vagy a projekt-ablakban látok lényeges különbséget. A 2010-esnél ha kicsik a fájlok – vagy kimarad darabolt munkafüzet készítése – akkor szemmel alig követhető a fájlok váltása. A 2016-osnál bármilyen kicsik a darabolt fájlok, minden váltásnál van egy szünet (mintegy „rápihen” az excel a műveletre). És ez okozza a vállalhatatlan időkülönbséget (20-30 ezer darabolt munkafüzetet gyártok, és nem mindegy, hogy 2-3 óra kell hozzá, vagy 8-12 óra…).
Köszönöm, hogy időt fordítasz a problémámra!
László2018-01-08-10:13 #4144Szia!
Gondolom a screenupdating-et kikapcsoltad.
FSO-val próbáltad, nem gyorsabb?Itt egy trükk, ha a kézzel jó a sebesség, hátha:
Küldesz neki egy ctrl-S-t, majd bezárod.SendKeys "^s" DoEvents ThisWorkbook.Close
???
Imre
2018-01-08-12:03 #4146Vannak benne képletek?
Ha nincsenek, sorba rendezett adatok mentén darabolsz?
A képernyőfrissítést kikapcsolod? (Application.ScreenUpdating=false)2018-01-11-02:19 #4169Köszönöm szépen az ötleteket!
Természetesen kikapcsolom a frissítést, nem képletek okoznak lassulást…
Az időkülönbség UGYANAZZAL a daraboló VBA programmal és UGYANARRA a darabolandó állományra érvényes a 2010-es és a 2016-os verzió között.
Az ok keresése során a legfontosabb csalódásomat is említettem korábban: a darabolandó állományt az előkészítés során (tehát egyszer) .xlsb-re változtattam, és a darabolást .xlsb-n végeztem .xlsb daraboltakat mentve. Alig javult a helyzet…
Az ok valószínűleg mélyebben van. Megpróbálok választ kapni a Microsoft Excel fejlesztéstől – bár a múltban nem szereztem jó tapasztalatot. Találtam (bár nem kerestem) olyan vba műveleti szekvenciát, ami „determinisztikusan” alkalmazáshibába zavarta az excelt. Leírtam, semmi reakció…
Még egyszer köszönöm a segítségeteket! Ha mégis választ kapnék, jelentkezem újra. Tanulságos oka lehet annak, hogy fejlettebb verzióban romlik a használhatóság.
László -
SzerzőBejegyzés
- Be kell jelentkezni a hozzászóláshoz.