Telefonszámunk: 1-472-0679

Munkafüzet megnyitás / mentés időigénye VBA programból

Kezdőlap Fórumok Excel programozás Munkafüzet megnyitás / mentés időigénye VBA programból

Ennek a témakörnek tartalma 5 hozzászólás, 3 résztvevő. Utolsó frissítés:  helas1953 6 napja, 11 órája telt el a bejegyzés óta.

6 bejegyzés megtekintése - 1-6 / 6
  • Szerző
    Bejegyzés
  • #4132

    helas1953
    Résztvevő

    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.

    #4133

    horvimi
    Kulcsmester

    Szia!

    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

    #4143

    helas1953
    Résztvevő

    Szia 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ó

    #4144

    horvimi
    Kulcsmester

    Szia!

    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

    #4146

    Titok
    Résztvevő

    Vannak benne képletek?
    Ha nincsenek, sorba rendezett adatok mentén darabolsz?
    A képernyőfrissítést kikapcsolod? (Application.ScreenUpdating=false)

    #4169

    helas1953
    Résztvevő

    Kö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ó

6 bejegyzés megtekintése - 1-6 / 6

Be kell jelentkezni a hozzászóláshoz.