Odzyskiwanie uszkodzonego pliku xlsm

Od jakiegoś czasu obserwuje problem, który dotyczy plików Excel z rozszerzeniem .xlsm, a więc tych przechowujących makra. Ciężko określić powód, ale z jakichś względów, pliki z dnia na dzień tracą swoją użyteczność. Zostają w jakiś sposób uszkodzone i nie jesteśmy w stanie dalej na nich pracować (co jest szczególnie bolesne gdy nie mamy aktualnego backupa naszego skoroszytu). Otwarcie takiego pliku skutkuje zawieszeniem i wyłączeniem całej aplikacji Excel (wszystkich innych już otwartych skoroszytów). Spotkałem się także z przypadkami gdy po otwarciu takiego zepsutego skoroszytu pojawia się okno z informacją „Can’t find project or library”. Poniżej opisuję proces pozwalający na odzyskiwanie uszkodzonego pliku Excel w formacie xlsm.

Skutek kliknięcia w „Ok” jest identyczny jak wcześniej – cała sesja Excela zostaje zamknięta. Jak podaje oficjalna strona Microsoftu komunikat ten pojawia się gdy w referencjach edytora VBA brakuje nam niektórych bibliotek. Te, których brakuje widzimy z przedrostkiem „MISSING”. Problem w tym, że w żadnym z moich dotychczasowych przypadków, nie spotkałem się z wystąpieniem wspomnianego „MISSING”.

Co zatem zrobić aby odzyskać taki niedziałający plik i zaoszczędzić sobie godziny pracy nad jego przygotowaniem od nowa? Rozwiązanie jakie przyszło mi do głowy okazuje się szybkie, banalnie proste oraz w 100% skuteczne. Jeszcze nie zdarzyło mi się abym nie odzyskał jakiegoś skoroszytu korzystając z tej metody.

Jak przeprowadzić odzyskiwanie uszkodzonego pliku xlsm?

Przejdźmy do rzeczy. Odzyskiwanie uszkodzonego pliku Excel zaczynamy od zrobienia kopii naszego xlsm w innej lokalizacji i jej otwarcia. Kopia nie powinna zawieszać naszego Excela. Jeśli nic nie zmienialiśmy w domyślnych ustawieniach bezpieczeństwa makr to widzimy żółty pasek na górze arkusza z informacją, że makra zostały wyłączone.

Kliknięcie w przycisk „Włącz zawartość” poskutkuje włączeniem makr i ponownym zawieszeniem pliku. Nic nie klikamy i przechodzimy do edytora VBA, najszybciej skrótem Alt + F11. W oknie VBAProject odszukujemy moduły naszego uszkodzonego pliku. Wszystkie z nich eksportujemy do osobnych plików .bas wybierając polecenie „Export File…” dostępne po kliknięciu prawym przyciskiem myszy na moduł.

Następnie zapisujemy nasz skoroszyt jako plik .xlsx – czyli standardowy plik Excel bez obsługi makr. Pojawi się okno jak poniżej ostrzegające przed utratą projektu VB. W tym wypadku zależy nam na utracie i klikamy „Tak”.

Otwieramy utworzony plik .xlsx i przechodzimy do edytora VBA (Alt + F11). Po kliknięciu prawym przyciskiem myszy w obszarze VBAProject wybieramy opcję „Import File…” i dodajemy wszystkie uprzednio wyeksportowane moduły.

Zapisujemy skoroszyt jako obsługujący makra czyli z rozszerzeniem .xlsm i Voilà! Bez utraty danych właśnie zakończyliśmy odzyskiwanie naszego uszkodzonego pliku Excel w formacie xlsm. Jeśli w skoroszycie mieliśmy jakieś przyciski wywołujące makra to one również będą działać jak przed awarią. Zaoszczędziliśmy nerwy i godziny dodatkowej pracy potrzebnej do utworzenia pliku od nowa.



1 gwiazdka2 gwiazdki3 gwiazdki4 gwiazdki5 gwiazdek (23 głosów, średnia: 4,26 z 5)
Loading...


Powiązane

  1. Tomek

    Ten wpis uratował mi plik nad którym pracowałem wiele godzin. Dziękuję!!!

  2. Adam S

    Cześć, pomimo iż post ma 2 lata problem może nadal występować.
    Moje rozwiazanie problemu to wejście do pliku bez włączonych makr, otworzenie edytora VBA, otworzenie dowolnego modułu i wcisnięcie [CTRL] +[S] (zapisanie go). Jest to najszybsze rozwiązanie jakie do tej pory znalazłem ,a problem z bibliotekami wg mnie zależy od wersji excela.

    Pozdrawiam

    1. Dzięki za komentarz. Przetestuję Twoją metodę gdy kolejny raz trafię na uszkodzony plik.
      A sam problem jest ciągle aktualny, prawdopodobnie jeszcze wiele osób będzie się z nim borykało.

  3. Wojtek

    Dzięki wielkie za pomoc! Dopiero raczkuję w VBA i myślałem że straciłem tak mój pierwszy projekt – godziny pracy.
    Najlepszego!

    1. Powodzenia w kolejnych projektach 🙂

  4. taaatooo

    Dziękuję, pomogło !
    Dwa lata pracowałem bez przeszkód na swoim projekcie VBA, a dzisiaj … skucha 🙁
    Dzięki temu rozwiązaniu udało się zaoszczędzić sporo czasu nad jego odtwarzaniem.

  5. Zibiusz

    dziękuję bardzo za podzielenie się wiedzą, super ścieżka postępowania, zaoszczędziła mi wiele godzin i nerwów przy przywracaniu plików Excel z makrami do sprawności. Pozdrawiam

    1. Polecam się na przyszłość : )
      Pozdrawiam

  6. Michał

    Człowieku, jesteś moim bohaterem!

  7. Jakub

    A co jeśli nie da się wyeksportować Modułu?

    1. A dlaczego miałoby się nie dać go wyeksportować?
      Napisz coś więcej albo podeślij mi problematyczny plik na maila to rzucę okiem.

  8. Artur

    Dzięki wielkie! Proste, a jakże skuteczne! 🙂 No i ten zaoszczędzony czas…

  9. Zbiiwi

    Wielkie dzięki za post ,bardzo cenny plik naprawiony wszystko działa 🙂

    1. Cieszę się, że mogłem pomóc 🙂

Komentarze