Błąd "przepełnienie stosu w wierszu 68" w Microsoft Word

Pytanie

Podczas pracy programu word występuje błąd "przepełnienie stosu w wierszu 68"

Odpowiedź Sztucznej Inteligencji


Bezpośrednia odpowiedź na pytanie

  • Komunikat „przepełnienie stosu w wierszu 68” najczęściej oznacza błąd w makrze VBA (rekurencja, pętla zdarzeń) albo problem z dodatkiem/komponentem HTML używanym przez Worda.
  • Zacznij od uruchomienia Worda w trybie awaryjnym (winword /safe), wyłączenia dodatków i sprawdzenia makr w edytorze VBA na linii 68. W dokumentach z makrami przeanalizuj obsługę zdarzeń pod kątem zapętlenia.

Szczegółowa analiza problemu

  • Co oznacza błąd: „stos” to pamięć używana do przechowywania kontekstu wywołań. Gdy procedury wywołują się w nieskończoność (bez warunku wyjścia) lub zdarzenie uruchamia samo siebie (re‑entrancy), stos się zapełnia i pojawia się błąd.
  • „Wiersz 68”:
    • Jeśli komunikat pojawia się jako okno VBA z przyciskiem „Debuguj” – chodzi o realną linię w module VBA.
    • Jeśli to mały komunikat „Przepełnienie stosu w wierszu: 68” bez przejścia do edytora – zwykle pochodzi z silnika skryptów/HTML (MSHTML/IE) wywołanego przez dodatek lub panel (np. okno zadań, usługi online). Wtedy często pomaga wyłączenie dodatków/połączenia sieciowego lub funkcji „connected experiences”.

Najczęstsze przyczyny:

  • Bezpośrednia lub pośrednia rekurencja w VBA:
    • A wywołuje A (bez warunku zakończenia) lub A→B→A.
  • Pętla zdarzeń w dokumencie/szablonie:
    • Zdarzenie modyfikuje dokument, co ponownie wywołuje to samo zdarzenie.
  • Dodatek COM/VSTO lub szablon globalny (Normal.dotm) wywołuje skrypty/HTML powodujące błąd stosu.
  • Uszkodzony szablon Normal.dotm / dokument, rzadziej: instalacja Office.

Aktualne informacje i trendy

  • Zgłaszano przypadki w Word 2016/2019, gdzie identyczny komunikat ustępował po odłączeniu komputera od sieci lub po wyłączeniu podejrzanego dodatku/okna zadań korzystającego z zawartości sieciowej. To wskazuje na źródło w komponencie HTML/dodatku, a nie w klasycznym VBA.
  • Dobre praktyki w 2020+ dla zdarzeń w Word VBA: zamiast „wyłączania zdarzeń” (Word nie ma Application.EnableEvents jak Excel) stosuje się bezpieczne „strażniki” (guard flags) i klasę z WithEvents.

Wspierające wyjaśnienia i detale

  • Jak zdiagnozować w VBA:

    1. Alt+F11 → Edytor VBA. Widok → Stos wywołań (Ctrl+L) – zobacz łańcuch aktywnych procedur.
    2. Ustaw punkt przerwania tuż przed linią 68 i krokowo (F8) obserwuj, co ponownie wchodzi w tę samą procedurę.
  • Przykłady charakterystycznych usterek i poprawek:

    • Rekurencja bez warunku:
      ' Błędnie
      Sub FormatujSekcje()
      ' ...
      FormatujSekcje ' wraca tu bez końca
      End Sub

      ' Poprawnie
      Sub FormatujSekcje(Optional ByVal poziom As Long = 0)
      If poziom > 100 Then Exit Sub
      ' ...
      ' FormatujSekcje poziom + 1 ' tylko gdy to ma sens i z limitem
      End Sub

    • Pętla zdarzeń (przykład dla SelectionChange w klasie WithEvents):
      ' W module klasy: clsAppEvents
      Option Explicit
      Public WithEvents App As Word.Application
      Private handling As Boolean

      Private Sub App_WindowSelectionChange(ByVal Sel As Selection)
      If handling Then Exit Sub
      handling = True
      On Error GoTo Fini
      ' ... modyfikacje dokumentu ...
      Fini:
      handling = False
      End Sub

      ' W module standardowym:
      Public gApp As clsAppEvents
      Sub HookApp()
      Set gApp = New clsAppEvents
      Set gApp.App = Word.Application
      End Sub

    • Uwaga: Word nie posiada globalnego Application.EnableEvents (jak Excel). Zatem stosuj „handling” jako strażnik re‑entrancyjny.

  • Normal.dotm:

    • Globalne makra i style mogą tam mieszkać. Uszkodzenie lub błędny kod w Normal.dotm potrafi wywoływać błąd przy starcie/edycji każdego dokumentu.

Aspekty etyczne i prawne

  • Bezpieczeństwo makr: nie włączaj makr z dokumentów od nieznanych nadawców. Makra mogą wykonywać dowolny kod, w tym szkodliwy.
  • Polityka IT: w środowisku firmowym zmiany dodatków/ustawień mogą podlegać politykom MDM/Group Policy – konsultuj z IT.
  • Prywatność: „connected experiences” w Office wysyłają dane diagnostyczne/treści do chmury; upewnij się, że jest to zgodne z polityką organizacji.

Praktyczne wskazówki

  1. Szybka izolacja:
    • Win+R → winword /safe → sprawdź, czy błąd znika.
    • Odłącz sieć (Ethernet/Wi‑Fi) i sprawdź, czy komunikat nadal się pojawia.
  2. Dodatki:
    • Plik → Opcje → Dodatki → Zarządzaj: Dodatki COM → Przejdź → odznacz wszystkie → uruchom Word. Włączaj pojedynczo.
  3. Makra:
    • Plik → Opcje → Centrum zaufania → Ustawienia → Makra: tymczasowo Wyłącz wszystkie makra (zablokujesz kod).
    • Jeśli to Twój dokument z kodem: Alt+F11, sprawdź moduł/linię 68, użyj Stosu wywołań, wstaw strażniki re‑entrancyjne jak wyżej.
  4. Szablony:
    • Zamknij Word. %appdata%\Microsoft\Templates → zmień nazwę Normal.dotm na Normal.old → uruchom Word (utworzy czysty).
  5. Dokument:
    • Plik → Otwórz → strzałka przy „Otwórz” → „Otwórz i napraw”.
    • Skopiuj zawartość (bez ostatniego akapitu) do nowego .docx i sprawdź.
  6. Instalacja i profil:
    • Office: Plik → Konto → Opcje aktualizacji → Aktualizuj teraz.
    • Aplikacje i funkcje → Microsoft 365/Office → Modyfikuj → Szybka naprawa (a w razie potrzeby Pełna).
  7. Funkcje sieciowe Office:
    • Plik → Opcje → Centrum zaufania → Ustawienia → Opcje prywatności/Doświadczenia połączone: tymczasowo wyłącz, sprawdź wpływ.
  8. Jeżeli błąd dotyczy tylko określonej czynności (np. otwarcie okna zadań, podgląd, wklejanie z sieci) – to cenna wskazówka, że winny jest określony dodatek lub komponent HTML.

Ewentualne zastrzeżenia lub uwagi dodatkowe

  • Sam komunikat „wiersz 68” nie gwarantuje, że w Twoim module VBA dokładnie linia 68 jest winna – w przypadku błędów skryptów HTML to numer wewnątrz ładowanej strony/fragmentu skryptu.
  • Czasem błąd ujawnia dopiero kombinacja dwóch dodatków – testuj je pojedynczo i parami.
  • W makrach ostrożnie z DoEvents i Selection – mogą prowokować dodatkowe zdarzenia i re‑entrancyjność.

Sugestie dalszych badań

  • Dokumentacja: „Out of stack space (Error 28)” w pomocy VBA; przegląd zdarzeń Word (Word VBA Reference).
  • Praktyka: przykłady klas WithEvents w Word VBA, techniki anty‑reentrancyjne.
  • Jeśli używasz dodatku firm trzecich: sprawdź dziennik zmian/FAQ producenta pod kątem znanych kolizji z bieżącymi aktualizacjami Office/Windows.

Krótkie podsumowanie

  • Najpierw wyklucz dodatki i sieć (safe mode, offline). Jeśli błąd znika – problem jest poza VBA (dodatek/HTML).
  • Jeśli pozostaje – przeanalizuj makra: rekurencja, pętla zdarzeń, brak „strażników”. Użyj Stosu wywołań i punktów przerwania.
  • Zresetuj Normal.dotm, napraw Office, aktualizuj. To typowo usuwa 90% takich przypadków.

Jeśli chcesz, prześlij:

  • Wersję Word/Office (np. Microsoft 365 z kanałem aktualizacji, Word 2019, itp.).
  • Zrzut okna błędu (czy oferuje „Debuguj”?).
  • Fragment kodu z okolic linii 68 oraz informację, jakie zdarzenie/akcja go wyzwala.
    Na tej podstawie przygotuję precyzyjną poprawkę.

Oceń odpowiedź:
Zastrzeżenie: Odpowiedzi udzielone przez sztuczną inteligencję (model językowy) mogą być niedokładne i wprowadzające w błąd. Elektroda nie ponosi odpowiedzialności za dokładność, rzetelność ani kompletność prezentowanych informacji. Wszystkie odpowiedzi powinny być zweryfikowane przez użytkownika.

Zadaj dodatkowe pytanie Sztucznej Inteligencji

Czekaj (2min)...