Kategorie szkoleń | Egzaminy | Kontakt
  • 1
  • 4
  • 273

Witam.

Problem dotyczy MS Excel 2013 64-bit, co ciekawe w wersji 2003 nie występował. Potrzebuję otworzyć zestaw 200 plików (skoroszytów) Excela. Pomińmy tu rady, że Excel się do tego już nie nadaje itd. Nie jest możliwa też żadna optymalizacja liczby otwieranych plików (zbyt kosztowne). W sumie w pamięci trwałej pliki te zajmują ok. 500 MB. W MS Excel 2003 udawało się wszystkie te pliki otworzyć na raz (wtedy proces Excela zajmował ok. 700 MB). Obecnie są to pliki .xls. Ten sam zestaw plików w Excelu 2013 64-bit (nadal, jako .xls) już się nie otwiera, tzn. udaje się otworzyć powiedzmy 70 plików (proces Excela zajmuje wtedy już powyżej 1 GB) i wtedy pojawia się błąd:





Problem czasem występuje po 50 plikach, czasem udaje się otworzyć prawie 100. Komputer, na którym pracuje, wyposażony jest w 16 GB pamięci operacyjnej, przy czym w momencie otwierania plików ok. 12 GB jest wolnych. Próbowałem zarówno z plikiem stron, jak i bez. Na zagranicznych forach czytałem o problemie tzw. pofragmentowania pamięci RAM, tzn. pojedyncza instancja Excela wymaga ciągłego obszaru pamięci operacyjnej, ale istniejące programy do "defragmentacji" RAM-u wydają się nie działać (ciekawe czy to w ogóle możliwe w systemie Windows na poziomie aplikacji). Inna sprawa, że nie chce mi się wierzyć w to pofragmentowanie, jako że problem występuje natychmiast po uruchomieniu komputera, gdy mam 12 GB wolnej pamięci i raczej niepofragmentowanej. Pamięć RAM, którą posiadam przeszła testy i nie posiada błędów. Pytanie osobne, po co w takim razie w ogóle Excel 64-bit, skoro nawet tych 2 GB nie udaje się osiągnąć...

Uwaga: gdy pliki zostały przekonwertowane na format binarny tzn. .xlsb to zajmują nieco mniej miejsca w pamięci operacyjnej po otwarciu, efektem czego udaje się ich otworzyć więcej (ponad 100), jednak nadal przy ok. 800 MB - 1200 MB procesu Excela wyskakuje powyższy komunikat.

Obecnie problem rozwiązałem, dzieląc pulę plików na kilka instancji Excela, jednak skoroszyty te posiadają wiele (miliony) formuł ze wzajemnymi powiązaniami (linkami) międzyplikowymi i teraz trudniej zapanować nad odświeżaniem. Poza tym, tak czy inaczej, drażni mnie w tej sytuacji zachowanie Excela, który nie ma zamiaru wykorzystać więcej pamięci. Próbowałem oczywiście bez odświeżania linków w momencie otwarcia oraz z ręcznym przeliczaniem arkusza.

Ostatnie odkrycie: problem z pamięcią nie występuje, gdy otwieram pliki z poziomu VBA jako niewidoczne (czyli ustawiam dla nich .Windows(1).Visible = False). Wtedy udaje się otworzyć wszystkie i proces Excela zajmuje ponad 2 GB. Czy więc problem dotyczy kwestii samego interfejsu graficznego? Może w systemie Windows jest jakiś limit na liczbę okien?

  • Zapytał
  • @ | 30.07.2015
  • TRENER ALTKOM AKADEMII

Odpowiedź (1)

  • 0

Nie wiem jak Windows i Excel zarządza pamięcią

Zadziwia mnie potrzeba jednoczesnego otwarcia tylu plików, ale to zupełnie inna sprawa.

Z ciekawostek tego typu mogę dorzucić, że Excel 2003 był rzeczywiście pod względem zarządzania pamięcią niezły, bo jako pierwszy potrafił do PivotCache przyjąć miliony rekordów, czego poprzednie Excele nie potrafiły, a nowsze też mają z tym problem (choć gdzie indziej, bo w źródłowym obiekcie Range, który wywala się gdy LW>65536).

I w ogóle dzięki za ciekawe informacje.

 

  • Odpowiedział
  • @ | 13.08.2015
  • TRENER ALTKOM AKADEMII