Live-Forum - Die aktuellen Beiträge
Datum
Titel
28.03.2024 21:12:36
28.03.2024 18:31:49
Anzeige
Archiv - Navigation
628to632
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
628to632
628to632
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

Performance optimieren Hilfe

Performance optimieren Hilfe
28.06.2005 17:56:01
Martin
Hallo
Habe zur Zusammenführung von ca. 1500 div. Excel Dateien einen Zusammenzug programmiert.
Einige Tips vom Herber Server waren sehr hilfreich.
Es ist jedoch verblüffend dass die Verarbeitungszeit der einzelnen Dateien noch nicht dem erwarteten entspricht.
Wir arbeiten auf einem Netzwerk und alle Dateien werden über das Netz abgerufen.
Wenn jemand die Zeit findet und den Code analysiert und dabei wesentliche Performance Verbesserungen entdekt, bin ich sehr dankbar über eine Antwort.
Damit ein guter Überblich entsteht, habe ich die Datei auf den Herber Server hochgeladen und kann mit folgendem Link aufgerufen werden (musste ein Zip erstellen)
https://www.herber.de/bbs/user/24283.zip
Zur noch besseren Unterstützung ein Original der 1500 Dateien die zusammengezogen werden.

Die Datei https://www.herber.de/bbs/user/24284.xls wurde aus Datenschutzgründen gelöscht

Leider ist die Datei passwortgeschützt und muss vorerst freigeschaltet werden
hier die Passwörter:
Das Passwort für den Start ist: ******
zum starten des Makro ebenfalls: ******
zum Code Edit im VBA Editor ist das Passwort: service
Mit freundlichen Grüssen
Martin Manhart

4
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Performance optimieren Hilfe
28.06.2005 20:07:16
Ramses
Hallo
Ohne alles jetzt angesehen zu haben, in 99% kann auf "Select" verzichtet werden.
Anstelle von

Public Sub UnitBWPizza()
Grundstellung
Range("D:F,H:H,K:L,N:N,R:U,W:AE,AH:AI,AL:AS").Select
Selection.EntireColumn.Hidden = True
Selection.AutoFilter Field:=35, Criteria1:="40001"
Selection.AutoFilter Field:=34, Criteria1:="310"
End Sub
<pre/>
zum Beispiel

Public Sub UnitBWPizza()
Grundstellung
With Range("D:F,H:H,K:L,N:N,R:U,W:AE,AH:AI,AL:AS")
.EntireColumn.Hidden = True
.AutoFilter Field:=35, Criteria1:="40001"
.AutoFilter Field:=34, Criteria1:="310"
End With
End Sub
<pre/>
oder ein anderes Beispiel.
Anstelle von

Public Sub DemandPlanning()
' Spalten ausblenden
Grundstellung
Range("C:C,E:E,L:L,M:M,P:P,S:S,U:U,AC:AC,AE:AE,AG:AG").Select
Selection.EntireColumn.Hidden = True
ActiveWindow.Zoom = 65
Range("A1").Select
End Sub
<pre/>
sollte es so verwendet werden

Public Sub DemandPlanning()
' Spalten ausblenden
Grundstellung
Range("C:C,E:E,L:L,M:M,P:P,S:S,U:U,AC:AC,AE:AE,AG:AG").EntireColumn.Hidden = True
ActiveWindow.Zoom = 65
End Sub
<pre/>
Anstelle von

Sub Formate()
Range("D18").Select
Selection.NumberFormat = "dd/mm/yyyy;@"
End Sub
<pre/>
soll es so verwendet werden

Sub Formate()
Range("D18").NumberFormat = "dd/mm/yyyy;@"
End Sub

Anstelle von
Markierbereich = "X" & LetzteZeile
Range(Markierbereich).Select
ActiveCell.FormulaR1C1 = Formel
so verwenden
Range("X" & LetzteZeile).FormulaR1C1 = Formel
Damit kannst du schon mal einiges rausholen.
Ein Grossteil ist natürlich von den Netzwerkverhältnissen abhängig
Gruss Rainer

Anzeige
AW: Performance optimieren Hilfe
28.06.2005 21:16:26
Martin
Danke Ramses
werde Deine Anregungen umsetzen und danach die erfahrung posten.
Die Hauptperformance geht jedoch im sub aktualisieren drauf, da würde die grösste Einsparung drinnliegen denke ich, aber meine Kentnisse sind noch etwas dürftig.
Gruss Martin
PS übrigens eine tolle Page Herber.de weil "da werden Sie geholfen" und dabei noch sehr zügig.
AW: Performance optimieren Hilfe
29.06.2005 13:20:09
Martin
Noch immer nicht optimal.
AW: Performance optimieren Hilfe
30.06.2005 15:09:58
Martin
Hat sich erledigt
Habe den Code komplett angepasst und auf das Auslesen aus geschlossenen Dateien verzichtet aus folgendem Grund.
Anscheinend wird bei jedem ausleseprozess immer die gleiche Perfomance verbraucht wie beim öffnen einer Datei. Neu öffne alle Dateien nach und nach kopiere alle Werte in Variablen welche ich anschliessend in eine Übersichtsmappe wieder eintrage.
Damit die lästige Flackerei aufhört, deaktiviere ich den Bildchirmaufbau der Übersichtsmappe mit
Application.ScreenUpdating = False
am ende des Makro wieder mit aktivieren mit
Application.ScreenUpdating = True
und deaktiviere die Anzeige in der Taskleiste der Dateien die geöffnet werden mit
Application.ShowWindowsInTaskbar = False
am ende der Schlaufe wieder mit aktivieren mit
Application.ShowWindowsInTaskbar = True
ebenfalls habe ich alle überflüssigen Select aus dem Code enfernt und neu überarbeitet.
Alle Tips haben dazu beigetragen, dass eine Performance-Steigerung von 50% erreicht wurde.
Danke, Danke, Danke
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige