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

Excel Arbeitsspeicher per VBA leeren

Forumthread: Excel Arbeitsspeicher per VBA leeren

Excel Arbeitsspeicher per VBA leeren
11.05.2004 21:25:29
Werner
Liebe Leute,
ich habe zu diesem Thema was in der Recherche gefunden (s.u.), aber ausgerechnet der Antwort-Link von Hans funzt nicht. Jetzt bin ich so schlau wie vorher. Weiß vielleicht jemand weiter?
Gruß
Werner
________________________________________________________
* Mit VBA Arbeitsspeicher cleanen - geht dat?
o Re: Mit VBA Arbeitsspeicher cleanen - geht dat? Hans W. Herber 04.6.2000 (0)
Mit VBA Arbeitsspeicher cleanen - geht dat? Hallo Leutz,
Habe seit einiger Zeit den Verdacht, daß Excel(97) keinen Bock hat, Excel-Dateien (über 4MB) zu speichern, wenn nebenbei noch eine Menge anderer Applikationen laufen.
Kann ich den Arbeitsspeicher mit Excel VBA irgendwie vor dem Speichern cleanen (wie z.B. mit dem Tool: TWEAK ALL)?
Anzeige

5
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Excel Arbeitsspeicher per VBA leeren
Ramses
Hallo
was meinst du mit "..Mit VBA Arbeitsspeicher cleanen..."
Das gerade kopierte entfernen ?
Application.CutCopyMode = false
Gruss Rainer
AW: Excel Arbeitsspeicher per VBA leeren
11.05.2004 22:00:21
Werner
Hallo Rainer,
nein, ich meine nicht die Zwischenablage, sondern den Excel-Arbeitsspeicher. Den will ich versuchen zu leeren.
Ich habe ein Excel-Proggi mit eigener Symbolleiste, per VBA lege ich im Hintergrund ein Backup an. Wenn ich nun das Backup nach Schließen des Originals öffne - ohne Excel zu beenden - öffnet Excel gleich beide Dateien - ich vermute also, daß im Arbeitsspeicher die Symbolleiste 'steckenbleibt', weil es nur dann richtig funktioniert, nachdem ich ich Excel vorher beendet habe.
Gruß
Werner
Anzeige
AW: Excel Arbeitsspeicher per VBA leeren
Ramses
Hallo
Du kannst den "Arbeitsspeicher" nicht leeren, weil jede Instanz einen exclusiven Arbeitsbereich verwaltet der nicht von anderen Programmen verwendet werden darf.
By the way:
Ich verstehe überhaupt nichts von dem was du geschrieben hast ;-))
Zeig mal den Code den du da verwendest, sonst muss ich mich leider ausklinken mangels Ideen.
Gruss Raienr
Anzeige
AW Danke: Excel Arbeitsspeicher per VBA leeren
11.05.2004 23:08:37
Werner
Hallo Reiner,
danke für Deine Antwort. Wenn's halt mit dem Arbeitsspeicher leeren nicht geht, reicht mir das schon als Lösung - und ich lasse Excel dann einfach nach Erzeugung des Backups beenden, fertig.
Da Du aber gefragt hast (ist etwas kompliziert):
Ich habe also eine Excel-Datei mit eigener Symbolleiste.
https://www.herber.de/bbs/user/6247.xls
Nur über die Symbolleiste kann die Datei bearbeitet werden.
Die Symbolleiste wird nach Öffnen der Datei temporär erzeugt:

Private Sub Sym_einschalten()
'Menüs:
Dim Menu1 As CommandBarControl ' Menü 'Datei'
'Untermenüs von 'Datei':
Dim Menu1a As CommandBarControl ' Untermenü 'Datei - Speichern'
Dim Menu1b As CommandBarControl ' Untermenü 'Datei - Schließen'
usw.
'Buttons:
Dim But1 As CommandBarControl 'Drucker
Dim But2 As CommandBarControl 'Haus
usw.
Rem Symbolleiste:
Set CBar = Application.CommandBars.Add("UPlg", MenuBar:=True, temporary:=True)
Rem Buttons
Rem Button Schließen
'    Set But1 = CBar.Controls.Add(Type:=msoControlButton)
'    With But1
'         .Caption = "Urlaubsplaner schließen"
'         .FaceId = 277
'         .OnAction = "Auto_close"
'    End With
usw.
Die Datei heißt 'Urlaub.xls'. Der Anwender kann jederzeit während der Arbeit per Klick ein Backup der Datei anlegen, ohne daß die Datei 'Urlaub.xls' geschlossen wird.
Dieses Backup heißt immer 'JJ.MM.TT Backup Urlaubsplaner.xls' und wird im selben Verzeichnis hinterlegt:
Sub Komplett()
Dim Datei, Pfad
Datei = ThisWorkbook.Name
Pfad = ThisWorkbook.Path
On Error Resume Next
ActiveWorkbook.Save
Kill Pfad & "\" & Format(Now, "DD-MM-YY") & " Backup Urlaubsplaner.xls"
ActiveWorkbook.SaveCopyAs FileName:=Pfad & "\" & Format(Now, "YY.MM.DD") & " Backup Urlaubsplaner.xls"
End Sub

Wenn er das nun getan hat, wird er wahrscheinlich die Datei 'Urlaubr.xls' schließen, ohne Excel zu beenden.
Weil er neugierig ist, öffnet er nun die Datei 'JJ.MM.TT Backup Urlaub.xls', die ja identisch ist.
Betätigt er nun irgendein Symbol in der Symbolleiste, öffnet sich nun aber ohne eigenes Zutun die Originaldatei 'Urlaub.xls'.
Darum vermute ich also, daß Excel die Symbolleiste aus der geschlossenen Datei 'Urlaub.xls' im Arbeitsspeicher hat, diese Datei darum öffnet und in der Datei 'JJ.MM.TT Backup Urlaubsplaner.xls' mit der Symbolleiste aus der Datei 'Urlaub.xls' arbeitet.
Darum wollte ich versuchen, ins 'Sub Komplett' die Leerung des Arbeitsspeichers einzubauen.
Aber ich hänge dann einfach 'Application.Quit' dran ... :-)), und gut iss :-))

Danke für Deine Mühe!
Gruß
Werner
Anzeige
Merci :-) Geschlossen m.T.
Ramses
Hallo
warum entfernst du nicht die Symbolleiste wenn du aus dem Button "Auto_Close" aufrufst ?
Damit eliminierst du auch das Problem,... ist aber etwas eleganter und weniger brutal ;-))
Gruss Rainer
;
Anzeige
Anzeige

Infobox / Tutorial

Arbeitsspeicher in Excel mit VBA leeren


Schritt-für-Schritt-Anleitung

Um den Arbeitsspeicher in Excel über VBA zu leeren, kannst du folgende Schritte ausführen:

  1. Öffne das VBA-Editor-Fenster:

    • Drücke ALT + F11, um den VBA-Editor zu öffnen.
  2. Füge ein neues Modul hinzu:

    • Klicke mit der rechten Maustaste auf "VBAProject (deinWorkbookName)" > Einfügen > Modul.
  3. Schreibe den folgenden Code:

    Sub ArbeitsspeicherLeeren()
       ' Leert den Excel-Arbeitsspeicher
       Application.CutCopyMode = False
       Application.DisplayAlerts = False
       Application.ScreenUpdating = False
       ' Hier kannst du weitere Optimierungen vornehmen
       Application.DisplayAlerts = True
       Application.ScreenUpdating = True
    End Sub
  4. Führe das Skript aus:

    • Drücke F5 oder gehe zu Run > Run Sub/UserForm, um das Skript auszuführen.
  5. Speichere deine Arbeit:

    • Vergiss nicht, deine Excel-Datei zu speichern, nachdem du die Änderungen vorgenommen hast.

Häufige Fehler und Lösungen

  • Problem: Der Excel-Arbeitsspeicher bleibt voll.

    • Lösung: Stelle sicher, dass alle Objekte, die du nicht mehr benötigst, auf Nothing gesetzt werden. Beispiel:
      Set meineVariable = Nothing
  • Problem: Die Symbolleiste bleibt nach dem Schließen einer Datei aktiv.

    • Lösung: Entferne die Symbolleiste manuell im Auto_Close-Sub, bevor die Datei geschlossen wird.

Alternative Methoden

  1. Excel Cache leeren:

    • Manuelles Leeren des Caches kann helfen, den Speicherplatz zu optimieren. Gehe zu Datei > Optionen > Erweitert und suche nach Optionen zur Cache-Bereinigung.
  2. RAM leeren:

    • Schließe nicht benötigte Anwendungen, um den Arbeitsspeicher auf deinem Computer zu optimieren.
  3. Verwendung von Task-Manager:

    • Überprüfe im Task-Manager, welche Programme viel RAM verwenden, und schließe unnötige Anwendungen.

Praktische Beispiele

Hier ist ein Beispiel, wie du den VBA-Zwischenspeicher leeren kannst, um den Arbeitsspeicher zu optimieren:

Sub Beispiel()
    ' Beispiel zur Verwendung des Arbeitsspeichers
    Dim rng As Range
    Set rng = ThisWorkbook.Sheets("Tabelle1").Range("A1:A10")

    rng.Copy
    ' Hier kannst du arbeiten...

    ' Nach der Arbeit den Zwischenspeicher leeren
    Application.CutCopyMode = False
    Set rng = Nothing
End Sub

Tipps für Profis

  • Regelmäßige Bereinigung: Integriere das Leeren des Arbeitsspeichers in regelmäßig ausgeführte Makros, um die Leistung von Excel zu optimieren.
  • Verwendung von DoEvents: Setze DoEvents in langen Schleifen ein, um Excel nicht einfrieren zu lassen und den Arbeitsspeicher besser zu verwalten.
  • Speichere in kleinen Abständen: Speichere deine Arbeitsdatei häufig, um den Arbeitsspeicher effizient zu nutzen und Datenverluste zu vermeiden.

FAQ: Häufige Fragen

1. Wie kann ich den Arbeitsspeicher in Excel leeren? Du kannst den Arbeitsspeicher in Excel leeren, indem du das VBA-Skript Application.CutCopyMode = False verwendest und alle nicht mehr benötigten Objekte auf Nothing setzt.

2. Was sind die besten Methoden, um den Excel-Arbeitsspeicher zu optimieren? Die besten Methoden umfassen das Schließen nicht benötigter Anwendungen, das manuelle Leeren des Caches und das regelmäßige Speichern deiner Excel-Dateien.

3. Kann ich den Arbeitsspeicher manuell leeren? Ja, du kannst den Arbeitsspeicher manuell optimieren, indem du Excel neu startest oder den Task-Manager verwendest, um nicht benötigte Prozesse zu beenden.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Entdecke mehr
Finde genau, was du suchst

Die erweiterte Suchfunktion hilft dir, gezielt die besten Antworten zu finden

Suche nach den besten Antworten
Unsere beliebtesten Threads

Entdecke unsere meistgeklickten Beiträge in der Google Suche

Top 100 Threads jetzt ansehen
Anzeige