Beschädigt die Größenbeschränkung von 64 KB für Module die Makros für Excel 365?

Beschädigt die Größenbeschränkung von 64 KB für Module die Makros für Excel 365?

Bei mir treten zufällige Makrobeschädigungen auf, sodass ich die Arbeitsmappe nicht öffnen kann.

Ich müsste alle Makros ohne Benachrichtigungen deaktivieren, dann die Arbeitsmappe öffnen, die Makros neu kompilieren und speichern und schließen. Dann die Makros aktivieren und die Arbeitsmappe öffnen, dann wird die Arbeitsmappe einwandfrei geöffnet. Es ist fast so, als würde das Aktualisieren der Makros helfen, die Arbeitsmappe erneut zu öffnen. Ich habe einige meiner Module überprüft und einige sind größer als 64 KB. Ich habe einige Artikel zu Größenbeschränkungen für Module gelesen, die zu Beschädigungen führen.

Kann jemand überprüfen, ob dies auch für Excel 365 gilt oder ob es Gründe für die Beschädigung von Makros gibt?

Antwort1

Das 64-KB-Limit bezieht sich nicht auf die Größe der exportierten Datei, sondern auf die maximale Größe eines kompilierten Moduls.

Wenn Ihr Modul weniger als 10.000 Zeilen umfasst, kann es kompiliert werden.

Ein schweres, aber wahrscheinlich noch gesundes Modul hätte höchstens 1.000 Zeilen - das scheint bei etwa 40 KB zu liegen, wenn es in eine Textdatei exportiert wird; 64 KB erscheinen mir nicht ganz unanständig, obwohl esIstdefinitiv über 1.000 Zeilen Code und könnte daher wahrscheinlich einige Optimierungen vertragen.

Wenn Ihre Module zB Module8oder heißen Utilities, überprüfen Sie, wiezusammenhängendihre Mitglieder sind - ist alles mit derselben Funktionalität verbunden? Oder fühlt es sich an, als wären dort zufällig Funktionen hineingekippt worden?

Suchen Sie nach sich wiederholendem Code und überarbeiten Sie ihn. Extrahieren Sie Methoden, parametrisieren Sie sie und beobachten Sie, wie Ihr Modul verschwindet, während alle seine Funktionen erhalten bleiben.

Die interne Speichermechanik für VBA-Code hat sich seit 20 Jahren nicht verändert. Ich sehe keinen Grund, warum sich das in letzter Zeit ändern sollte, insbesondere, da VBA mittlerweile so gut wie eingefroren ist und jede Änderung der Speichermechanik Millionen von Dingen überall kaputt machen würde.

Es ist jedoch nicht unmöglich, dass in O365 vor kurzem etwas geändert wurde (verwenden Sie einInsiderBuild?), und etwas ist kaputt gegangen und Ihre Arbeitsmappe wurde irgendwie beschädigt.... aber wenn Ihr Modul etwas über 64 KB groß istdes Textquellcodes, es ist sehr unwahrscheinlich, dass dies damit zusammenhängt: Der kompilierte Code wäre viel kleiner ... vorausgesetzt, das Projekt wird kompiliert.

Antwort2

Das Limit liegt bei 64K proVerfahrenZitat ausProzedur zu groß

Beim Kompilieren darf der Code für eine Prozedur 64 KB nicht überschreiten. Dieser Fehler hat die folgende Ursache und Lösung:

  • Der Code für diese Prozedur überschreitet nach der Kompilierung 64 KB. Teilen Sie diese und alle anderen großen Prozeduren in zwei oder mehr kleinere Prozeduren auf.

Ich verwende eine 811 KB große VBA-Datei in Access 2013. Sie enthält viele kleine Prozeduren und hat noch nie Probleme verursacht.

Um also die Frage des OP zu beantworten: Wenn Sie irgendwo in Ihrem Projekt eine riesige Subroutine haben, teilen Sie sie auf. Ansonsten sind die von Ihnen gemeldeten Modulgrößen kein Grund zur Sorge.

verwandte Informationen