Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

VBA: Speicherplatz freigeben

Forumthread: VBA: Speicherplatz freigeben

VBA: Speicherplatz freigeben
U-Sch
Hallo,
habe eine umfangreiche VBA gesteuerte Anwendung. Jetzt habe ich festgestellt, dass sich nur beim "Durchklicken" (per Schaltflächen) durch die Anwendung der benutzte Excel-Speicher immer weiter erhöht, ohne dass man Änderungen in der Tabelle durchgeführt hat. Um dieses "Speicherleck" zu finden, habe ich hinter jede Programmzeile den Befehl
Debug.Print Application.MemoryUsed
eingefügt - leider ohne Erfolg: die Stelle, ab der sich der benutzte Speicher erhöht, ist immer eine andere - und an den zum Teil betroffenen Stellen sehe ich auch keine Chance, etwas zu ändern:
z.B.
Sheets(Was).Columns(15).ColumnWidth = 6.5
oder
Sheets(Was).Columns("K:L").EntireColumn.Hidden = True
usw.
Daher die Frage: gibt es eine Möglichkeit (VBA; API), "zugemüllten" Speicherplatz wieder freizugeben?
Viele Grüße
Ulrich
Anzeige

2
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Benutzer
Anzeige
AW: VBA: Speicherplatz freigeben
11.01.2010 11:04:37
U-Sch
Hallo Tino,
danke für deine Antwort.
Leider lösen - die auch schon von mir aufgesuchten - Seiten mein Problem nicht.
Viele Grüße
Ulrich
Anzeige
;
Anzeige
Anzeige

Infobox / Tutorial

Speicherplatz in Excel freigeben: Tipps und Tricks


Schritt-für-Schritt-Anleitung

Um den Speicherplatz in Excel freizugeben, kannst Du folgende Schritte durchführen:

  1. VBA-Code überprüfen: Stelle sicher, dass Dein VBA-Code keine unnötigen Objekte oder Variablen speichert. Überprüfe, ob Du Objekte am Ende des Codes mit Set obj = Nothing freigibst.

  2. Debugging: Füge den Befehl Debug.Print Application.MemoryUsed an strategischen Stellen in Deinem Code ein, um zu beobachten, wann der Speicherverbrauch steigt.

  3. Bereinigung von Daten: Entferne nicht mehr benötigte Daten oder Formate, die den Speicher belasten könnten. Das kann durch die Verwendung von Range.Clear oder Range.ClearContents erfolgen.

  4. Pivot-Tabellen optimieren: Wenn Du mit Pivot-Tabellen arbeitest, achte darauf, dass die zugrunde liegenden Daten nicht unnötig groß sind. Überlege, ob Du die Pivot-Tabelle regelmäßig aktualisieren und unnötige Daten entfernen kannst.

  5. Arbeitsmappe speichern und schließen: Manchmal hilft es, die Arbeitsmappe zu speichern und zu schließen, um den Speicherplatz freizugeben. Öffne die Datei anschließend erneut.


Häufige Fehler und Lösungen

  • Speicherleck durch Objekte: Ein häufiges Problem ist das Vergessen, Objekte zu löschen. Verwende Set obj = Nothing, um sicherzustellen, dass der Speicher freigegeben wird.

  • Unnötige zellbezogene Formatierungen: Überprüfe, ob Du Formatierungen auf Zellen hast, die Du nicht benötigst. Diese können viel Speicherplatz beanspruchen.

  • Verlinkte Arbeitsmappen: Wenn Du mit externen Links arbeitest, kann dies ebenfalls zu Speicherproblemen führen. Überlege, ob Du diese Verlinkungen auflösen kannst.


Alternative Methoden

  • Verwendung von Excel-Funktionen: Du kannst auch Excel-Funktionen verwenden, um Daten zu filtern oder zu konsolidieren, bevor Du sie in eine Pivot-Tabelle einfügst.

  • Speichern als .xlsb: Speichere Deine Arbeitsmappe im .xlsb-Format. Dieses Format kann den Speicherplatz reduzieren, da es komprimiert ist.


Praktische Beispiele

  • Beispiel für die Verwendung von Clear:

    Sub ClearData()
      Sheets("Datenblatt").Range("A1:Z100").ClearContents
    End Sub
  • Pivot-Tabelle aktualisieren:

    Sub UpdatePivot()
      Dim pt As PivotTable
      Set pt = Sheets("PivotTabelle").PivotTables("PivotTabelle1")
      pt.RefreshTable
    End Sub

Diese Beispiele zeigen, wie Du gezielt Speicherplatz in einer Excel-Arbeitsmappe freigeben kannst.


Tipps für Profis

  • Regelmäßige Speicherüberprüfung: Überprüfe regelmäßig den Speicherverbrauch während der Nutzung Deiner Anwendung. So kannst Du frühzeitig eingreifen, wenn der Speicherverbrauch ansteigt.

  • Verwendung von Application.ScreenUpdating: Deaktiviere Application.ScreenUpdating am Anfang Deines Codes und aktiviere es am Ende. Dies kann helfen, die Leistung zu verbessern und den Speicherverbrauch zu senken.

  • Makros zur Speicherreinigung: Entwickle Makros, die regelmäßig nicht mehr benötigte Daten entfernen oder die Arbeitsmappe bereinigen.


FAQ: Häufige Fragen

1. Wie kann ich den Speicher in meiner Excel-Pivot-Tabelle freigeben?
Eine Möglichkeit, Speicher in einer Pivot-Tabelle freizugeben, ist es, unnötige Daten zu entfernen und die Pivot-Tabelle regelmäßig zu aktualisieren.

2. Was kann ich tun, wenn der Speicherverbrauch während der Anwendung kontinuierlich steigt?
Überprüfe Deinen VBA-Code auf Speicherlecks, indem Du sicherstellst, dass alle Objekte am Ende freigegeben werden. Verwende außerdem Debugging, um den Speicherverbrauch zu verfolgen.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige