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.
Ten wpis uratował mi plik nad którym pracowałem wiele godzin. Dziękuję!!!
Nie ma sprawy 🙂
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
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.
Dzięki wielkie za pomoc! Dopiero raczkuję w VBA i myślałem że straciłem tak mój pierwszy projekt – godziny pracy.
Najlepszego!
Powodzenia w kolejnych projektach 🙂
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.
Proszę 🙂
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
Polecam się na przyszłość : )
Pozdrawiam
Człowieku, jesteś moim bohaterem!
Dobrze wiedzieć 🙂
A co jeśli nie da się wyeksportować Modułu?
A dlaczego miałoby się nie dać go wyeksportować?
Napisz coś więcej albo podeślij mi problematyczny plik na maila to rzucę okiem.
Dzięki wielkie! Proste, a jakże skuteczne! 🙂 No i ten zaoszczędzony czas…
Zgadza się 🙂
Wielkie dzięki za post ,bardzo cenny plik naprawiony wszystko działa 🙂
Cieszę się, że mogłem pomóc 🙂