Warum würde eine Excel 2010-Tabelle mit VBA verzögert angezeigt werden, wenn sie geöffnet wird, während bereits andere große Excel-Tabellen geöffnet sind?

Warum würde eine Excel 2010-Tabelle mit VBA verzögert angezeigt werden, wenn sie geöffnet wird, während bereits andere große Excel-Tabellen geöffnet sind?

Ich habe eine relativ kleine (~100 KB) Excel 2010-Tabelle, die (über VBA) beim Öffnen alle Arbeitsblätter außer der Startseite schließt, den Benutzernamen überprüft und ihn mit einer SQL-Tabelle abgleicht und den Datensatz des Benutzers zurückruft, um seine Berechtigungen zu überprüfen.

Einige Zellen werden aktualisiert: rangeUserName, rangeCurrentUser, rangeSystemAccess usw.

Wenn ich diese Arbeitsmappe öffne und andere große Tabellenblätter (die ebenfalls VBA enthalten) vorhanden sind, dauert das Öffnen etwa 30 bis 60 Sekunden. Wenn keine anderen Arbeitsmappen geöffnet sind, dauert es weniger als 5 Sekunden.

Warum ist das?

Antwort1

Standardmäßig öffnet Excel jede Datei innerhalb eines einzelnen EXCEL.EXE-Prozesses – Sie können dies auf der Registerkarte „Prozesse“ des Windows-Task-Managers verfolgen.

Das fortgesetzte Öffnen von Dateien kann daher zu Konflikten innerhalb des Prozesses führen - irgendwann wird der Arbeitsspeicher voll sein und der Prozess wird langsamer oder stürzt ab.

Um dies zu vermeiden, können Sie nachfolgende Excel-Fenster als separate EXCEL.EXE-Prozesse starten. Halten Sie dazu die Umschalttaste gedrückt, während Sie Excel aus dem Startmenü auswählen oder in Ihrer Taskleiste darauf klicken. Sobald sie als separate Prozesse gestartet werden, scheint Windows die Ressourcen besser zu verwalten – ich glaube, es lagert inaktive Prozesse in den virtuellen Speicher aus.

Für Excel 2013 haben sie das Spiel etwas schwieriger gemacht – Sie müssen Umschalt + Alt gedrückt halten, bis ein Bestätigungsfenster erscheint.

Ich neige dazu, jedes Excel-Fenster auf diese Weise zu öffnen, insbesondere wenn ich mit großen Dateien, VBA-Code, Pivot-Tabellen, externen Daten oder Add-Ins arbeite. Dies vermeidet nicht nur Ressourcenprobleme, sondern bedeutet auch, dass Sie bei einem Absturz oder Einfrieren nur Ihre Arbeit in einem Fenster verlieren, anstatt alle auf einmal.

verwandte Informationen