Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1208to1212
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

Systemresourcen

Systemresourcen
Elke
Hallo Excelgemeinde,
bin mit meiner Programmieraufgabe "einigermaßen" vorangekommen und die VBA-Progrämmchen laufen einzelnd ohne Probleme. Diese nehmen nach bestimmten Kriterien Daten (nur Text, Zahlen und Datumswerte, keine Formeln und keine Verknüpfungen) aus einem Worksheet und setzen diese in bestimmte einzelne, neu angelegte Arbeitsblätter in ein anderes Workbook, was anfänglich kaum Daten enthält. (12K) Also eigentlich nichts besonders, bin aber glücklich, daß mir dies gelungen ist. ;-)
NUR, es werden nach und nach 20 bis 30 Arbeitsblätter in eben dieses ehemals fast leere Workbook reingeschaufelt und die Datei wächst, je nach Datenbestand, bis auf über 250 MB an. Manuell. d.h. wenn ich die Makros per F5 Knopf einzelnd starte, kein Problem. Per Programm, was über Call - Aufrufe diese Makros eigentlich nur nacheinander aufruft, bleibt Excel bei ca. 190MB mit der Meldung, daß nicht genügende Systemresourcen vorhanden sind, stehen.
Das Programm muß unter Excel-2002 laufen. Unter Office 2010 hab ich es auch versucht, nur die Geschwindigkeit ist wirklich erschreckend langsam, habe es nach Stunden abgebrochen. Das Programm speichert mehrmals zwischendurch ab und das zieht die Geschwindigkeit bei XL2010 extrem runter. Wenn hier jemand einen Tipp hat...? Für andere Aufgaben, ....... wäre interessant.
Kurz zur Aufgabenstellung:
Es werden per makrogesteuerten Spezialfiltern, Daten in, je nach Aufgabenstellung ca. 20 bis 30 Ergebnisblätter geschaufelt. (Eben in das separate Ergebnis-Workbook). Die Datensammlung besteht aus einem Datenblatt mit so grob 40.000 Zeilen und 75 Spalten, der Kriterienbereich ist je nach Kriterien bis 15 Spalten breit und je nach dem 1 bis 40 "Oder" Kriterien versehen, dies funktioniert bis auf die Datenübertragung alles einwandfrei und rattenschnell. Einzelnd gestartet, wie gesagt kein Problem.
Der XL2002 Rechner hat 2GB Ram, Windows-XP-SP3 eine fast leere 160er FP. Was mache ich falsch? Hat jemand damit Erfahrung? Im Archiv hier bei Herber wurde ich auch nicht befriedigend fündig. Würde mich über einenguten Rat sehr freuen
Elke

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

Betreff
Benutzer
Anzeige
AW: Systemresourcen
25.04.2011 10:28:40
ransi
HAllo
Zeigst du uns mal den Programmcode ?
Evtl. kann man dann schon mal abschätzen woran es liegt.
ransi
AW: Systemresourcen
25.04.2011 10:47:17
Gerd
Hallo Elke,
zeige bitte deinen Transfer-Code.
Gruß Gerd
AW: Systemresourcen
25.04.2011 17:06:35
elke
Hallo,
schnelle Antwort, toll. Da das alles etwas zeitlich drängt, habe ich jetzt die Filterrückgaben in jeweils eine neue, separate Datei reinschreiben lassen. Das ging schnell und einwandfrei. Aber irgendwann muß das alles in EINE Datei. Also unten beigefügt ist der angefragte Code für den Datentransfer.....
Danke und Grüße
Elke
Sub test()
' dies und das ...................
'++++   Öffnen der Ergebnis-Datei ..............
v_Path = ThisWorkbook.Sheets("Schalttafel").Range("C11").Value
v_This = ThisWorkbook.Sheets("Schalttafel").Range("C12").Value
If Right(v_Path, 1)  "\" Then
v_Path = v_Path & "\"
ThisWorkbook.Sheets("Schalttafel").Range("C11").Value = v_Path
End If
v_File = ThisWorkbook.Sheets("Schalttafel").Range("E12").Value
Workbooks.Open Filename:=v_Path & v_File
Windows(v_File).Activate
v_N = ActiveWorkbook.Sheets.Count
'++++   Wenn eine alte Version in der Ergebnisdatei ist, wird die _
jetzt gnadenlos geloescht.
For fn = v_N To 1 Step -1
v_Name = ActiveWorkbook.Sheets(fn).Name
If v_Name = Fall_X Then
Application.DisplayAlerts = False
ActiveWorkbook.Sheets(fn).Delete
Application.DisplayAlerts = True
End If
Next fn
'++++   Verschieben des Fall-Blattes, dann Speichern der _
Ergebnis-Datei, dann schliessen der Ergebnis- _
Datei ..........
Windows(v_This).Activate
ActiveWorkbook.Sheets(Fall_X).Select
Sheets(Fall_X).Move After:=Workbooks(v_File).Sheets(1)    ' noch sortieren lassen
Windows(v_File).Activate
ActiveWorkbook.Save
ActiveWorkbook.Close
Windows(v_This).Activate
Sheets("Schalttafel").Select
Range("A1").Select
'####   Ruecksetzen der Parameter, Werte und Einstellung.
Application.ScreenUpdating = True
Application.CutCopyMode = False
Application.StatusBar = False
End Sub

Anzeige
AW: Systemresourcen
25.04.2011 22:46:38
Gerd
Hallo Elke,
zum Ausprobieren. Die Bedeutung von "v_this" konnte ich nicht sicher herauslesen.
Daher die Zeile mit "Move" bitte ggf. ändern.
Sub test()
Dim wbErgebnis As Workbook
' dies und das ...................
Application.CutCopyMode = False
'++++   Öffnen der Ergebnis-Datei ..............
v_Path = ThisWorkbook.Sheets("Schalttafel").Range("C11").Value
v_this = ThisWorkbook.Sheets("Schalttafel").Range("C12").Value
If Right(v_Path, 1)  "\" Then
v_Path = v_Path & "\"
ThisWorkbook.Sheets("Schalttafel").Range("C11").Value = v_Path
End If
v_File = ThisWorkbook.Sheets("Schalttafel").Range("E12").Value
Set wbErgebnis = Workbooks.Open(Filename:=v_Path & v_File)
'++++   Wenn eine alte Version in der Ergebnisdatei ist, wird die _
jetzt gnadenlos geloescht.
For fn = wbErgebnis.Sheets.Count To 1 Step -1
If wbErgebnis.Sheets(fn).Name = Fall_X Then
Application.DisplayAlerts = False
wbErgebnis.Sheets(fn).Delete
Application.DisplayAlerts = True
End If
Next fn
'++++   Verschieben des Fall-Blattes, dann Speichern der _
Ergebnis-Datei, dann schliessen der Ergebnis- _
Datei ..........
ThisWorkbook.Sheets(Fall_X).Move After:=wbErgebnis.Sheets(1)    ' noch sortieren lassen
'? oder:
'Workbooks(v_this).Sheets(Fall_X).Move After:=wbErgebnis.Sheets(1)     ' noch sortieren  _
lassen
wbErgebnis.Close savechanges:=True
'####   Ruecksetzen der Parameter, Werte und Einstellung.
Application.ScreenUpdating = True
Application.StatusBar = False
End Sub

Gruß Gerd
Anzeige
AW: Systemresourcen
27.04.2011 23:31:16
Elke
hallo Gerd,
danke für die Bemühungen aber, echt schade, der Fehler bleibt.
'V_This' ist eine Stringvariable für den Namen des Thisworkbook..... Den liest das Programm aus einer Zelle C12 aus.
Ich belasse es erstmal aus Gründen der Ergebnisdringlichkeit bei den einzelnen Dateien.
Möchte wirklich zu gerne wissen, warum das Programm unter Excel2010 unbrauchbar langsam läuft.
Gruß
Elke

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige