Anzeige
Archiv - Navigation
1768to1772
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Speicherüberlauf beim Kopieren (Blätter)

Speicherüberlauf beim Kopieren (Blätter)
29.06.2020 13:25:46
Jen
Hallo,
wieder einmal wende ich mich mit einem scheinbar unlösbarem Problem und meinem uraltem Excel an euch:
Folgendes: Excel 2003 auf Windows XP (derzeit in einer leistungsarmen virtuellen Maschine)
Ich muss ein Worksheet (Diagrammblatt) mehrfach kopieren pro Makroausführung. Für die nächste Ausführung werden die Kopien wieder gelöscht. Führe ich dieses Makro nun ein paar mal aus, ohne Excel zwischendurch komplett zu schließen, dann erscheint:
"Laufzeitfehler 1004: Die Methode 'Copy' für das Objekt '_Chart' ist fehlgeschlagen." mit Verweis auf die Zeile in der der Kopiervorgang stattfindet.
Ab diesem Zeitpunkt kann ich auch manuell kein Blatt der Arbeitsmappe mehr innerhalb der Mappe kopieren. In eine andere Mappe geht hingegen.
Es scheint so, als läuft ein für diese eine Mappe reservierter Speicher voll. Wenn ich Excel komplett schließe und dann neu öffne, dann funktioniert das Kopieren wieder für eine Weile. Eine zufriedenstellende Lösung ist das aber nicht.
Ich habe mal eine Beispieldatei hochgeladen: https://www.herber.de/bbs/user/138631.xls
Wenn ich diese mit besagtem Excel 2003 auf Windows XP ausführe, dann kommt der Laufzeitfehler bei i=14, also sprich nach 14 Wiederholungen.
Screenupdating an oder aus ist in dem Fall egal.
Es wäre toll, wenn jemand dafür eine Lösung parat hätte, damit diese Abstürze nicht mehr passieren. Ich habe auch bereits versucht die Zwischenablage entsprechend dieser Anleitung zu leeren, das hat aber auch nicht geholfen: https://www.excel-inside.de/beispiele_vba/vba-zellen-bereiche/1030-zwischenablage-per-vba-leeren
P.s: nur falls die Frage kommt: in Excel 2010 unter Windows 10 (dem Hostsystem) trott der Fehler nicht bzw. nur sehr spät auf. Nach 575 Durchläufen stürzt das Makro ab, allerdings mit der Meldung "Laufzeitfehler 1004: Dimension ist ungültig für den aktuellen Diagrammtyp". Ausgeführt werden soll das Makro aber in Excel 2003 unter Windows XP.

12
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Speicherüberlauf beim Kopieren (Blätter)
29.06.2020 14:02:30
Christian
Hallo Jen,
wie sieht es denn aus, wenn du den Code sauber programmierst?
Bsp:
- reserviere Speicher für das zu kopierende Sheet und setzte diesen anschließend wieder frei.
- setze fehlende Referenzen auf das Workbook
- ...
Ich stell die Frage auf offen, da du als VBA-Profi sicher mehr Erfahrung hast.
Gruß
Christian
AW: End-of-Life: Win XP 2014;XL 2003 ebenso (owTI
29.06.2020 15:23:36
EtoPHG

Ich habe XP und xl2000 ... und bin zufrieden
29.06.2020 15:38:11
lupo1
... mit dem Rechner sollte man nicht gerade wild im Internet unterwegs sein.
AW: Dann bist du der ideale Testkandiat! (owT)
29.06.2020 15:42:20
EtoPHG

Also ich würde, wenn ich mich mit der VBA-
29.06.2020 16:11:52
lupo1
oder Excel-Speicherverwaltung nicht auskenne, vor dem Start des Diagramm-Zirkus immer die Datei speichern lassen. Nach den mit den Diagrammen erfolgten Tätigkeiten würde ich dann ohne Speichern die Datei verlassen und wieder öffnen.
Anzeige
AW: Speicherüberlauf beim Kopieren (Blätter)
29.06.2020 16:28:38
Jen
Hallo Christian,
ich bin ja der Meinung, dass man nie alles wissen kann, daher hätte ich eher "Fortgeschritten" gewählt, wenn es verfügbar gewesen wäre, aber die Optionen sind eben recht eingeschränkt und "gut" hätte es definitiv nicht getroffen.
Der Code im Beispiel ist nur ein kurzes Snippet, da das Original viel zu umfangreich ist, dort sind die Referenzen natürlich ordentlich gesetzt. Das Original läuft wie gesagt nicht in einer Schleife ab, sondern wird immer wieder manuell neu gestartet. D.h. Excel sollte den Speicher eigentlich nach Beendigung des Makros selber leeren. Da die Zwischenablage da aber eine Ausnahme darstellt, hätte ich am ehesten auf diese als Problem getippt.
Im vorliegenden Beispiel wird lediglich die For-Schleife verwendet, um es demjenigen, der das Makro testen möchte, zu ersparen immer wieder auf einen Button zu klicken, so wie es in Realität geschieht.
Allerdings wie man für den .Copy-Befehl Speicher reservieren kann, ist mir neu. Wie würdest du das denn machen?
@EtoPHG: Du glaubst doch wohl hoffentlich nicht, dass ich aus Lust und Laune unter Windows 10 eine virtuelle Maschine mit Win XP und Excel 2003 aufsetze, statt auf dem Hostsystem mindestens mit Excel 2010 zu arbeiten? Ich würde auch andere Umstände präferieren, aber so ist nun mal die Voraussetzung.
Anzeige
XP und 2003
30.06.2020 11:14:47
EtoPHG
Hallo Jen,
Ich glaube gar nix!
Mit über 6 Jahren End-Of-Life Systemen zu arbeiten ist nun mal ein (Hoch-)Sicherheitsrisiko.
Den Produktowner darauf hinzuweisen und jede Verantwortung für das Weiterlaufen dieser Systeme abzulehnen, wäre die Pflicht des Application-Managements, bzw. der Systembetreuer.
Von Seiten MS wird klar auf die schlechten Speicherausnutzung der erwähnten Komponenten verwiesen!
Ich bin auch der Meinung, dass nach möglichst jedem solcher manuellen ausgelösten Kopiervorgänge ein .Save der Mappe erfolgen sollte und nach einer bestimmten Anzahl (z.B. 10 Vorgänge) ein forcierter .Close und (Re-).Open, oder ggf. gar ein Neustart der Excel-Instanz.
Gruess Hansueli
Anzeige
AW: XP und 2003
30.06.2020 11:44:03
Jen
Hallo Hansueli,
Das System ist nicht an das Internet angebunden und es ist, wie gesagt, nicht meine Entscheidung das unter der besagten Konfiguration auszuführen und ich kann daran auch nichts drehen. Auch für mich als Entwickler wäre es angenehmer unter einer aktuellen Version zu arbeiten. Ich habe auch gestern noch mal recherchiert und Excel 2003 scheint auch noch gar nicht über Möglichkeiten zur aktiven Speicherverwaltung zu verfügen?
Derzeit fange ich den Laufzeitfehler ab und bitte den Nutzer manuell Excel einmal komplett zu schließen und das Makro nach dem erneuten Öffnen der Mappe noch mal auszuführen. Diese Lösung fand ich aber selber nicht so schön und hatte daher gehofft, dass es eventuell einen besseren Weg gibt.
Nach jedem Kopiervorgang speichern, schließen und neu öffnen wäre zu zeitaufwendig, da die Datei auf einem lokalem Server liegt und alles so schon sehr träge ist. Alle 10 Durchläufe automatisch schließen und neu öffnen wäre zumindest ein Workaround, am besten mit Vorwarnung für den Nutzer... Ich muss nur mal gucken wie zeitaufwendig das ist.
Gruß Jen
Anzeige
Träges Arbeiten ...
30.06.2020 12:26:15
lupo1
... kostet nicht nur unglaublich viel Kohle durch Wartezeiten, sondern auch Motivation der Mitarbeiter.
Meiner Partnerin wollte ich für ihr Home-Office ein Notebook (250 Euro, Aldi) zur Verfügung stellen (mit billigem emmc-Speicher, nicht schneller als ein USB-Stick). Als ich ihr darauf ein Nutzerkonto einrichten wollte, nervte mich schon die Antwortzeit jeder einzelnen Aktion.
Ich hatte das Notebook nur für einen Wohnmobilurlaub gekauft, damit es ohne Ärger ruhig geklaut hätte werden können.
Ich sagte ihr, dass ich ihr lieber ein 500-700 Euro-Notebook bezahle, damit ihr Home-Office nicht zum Frusterlebnis wird.
Anzeige
AW: Träges Arbeiten ...
30.06.2020 12:47:56
Jen
Ich weiß, ich bin von meiner privaten Ausstattung zuhause auch ganz andere Geschwindigkeiten gewohnt (dann kommt einem alles andere irgendwie NOCH langsamer vor).
Aber so ist eben bei dem besagtem Rechner der Stand der Dinge. Jammern bringt mich auch nicht weiter also mache ich das Beste aus der Sache. Nur werden durch zusätzliche Anforderungen die verschiedenen Mappen mit ihren Makros immer größer und aufwendiger und ich muss immer wieder prüfen, ob ich es nicht mit weniger Rechenschritten hinbekomme, damit der Nutzer nicht bei jeder Ausführung des Makros erstmal ein Käffchen trinken geht.
Anzeige
AW: Träges Arbeiten ...
30.06.2020 13:04:51
Mullit
Hallo,
hab's grad mal auf einer virt. Machine mit Win7 u. xl2003 laufen lassen, da gibt's den von Dir beschr. Laufzeitfehler nicht...
Gruß, Mullit
AW: Träges Arbeiten ...
30.06.2020 13:57:53
Jen
Hallo,
ich denke das hängt auch stark von der Leistungsfähigkeit der Maschine ab, ab wann der Fehler auftritt, unter Windows 10 und Office 2010 muss ich das Makro auch sehr lange laufen lassen, bis es abstürzt.
Gruß Jen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige