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

6 bejegyzés megtekintése - 1-6 / 6
  • Szerző
    Bejegyzés
  • #4132
    helas1953
    Felhasználó

      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
      Adminisztrátor

        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
        Felhasználó

          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
          Adminisztrátor

            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
            Felhasználó

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

              #4169
              helas1953
              Felhasználó

                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.