xtremecase
Goto Top

Lange Ladezeiten (5min) für Excel-Datei mit VBA und Makros!

Ich stehe nun kurz vor der Fertigstellung eines Excel-basierenden Konfigurators. Sobald ich jetzt jedoch Änderungen durchführen will, resultiert es in EXTREM verlängerten Ladezeiten.
Es ist wie verhext.

Wir verwenden seit mehreren Jahren eine einfache Excel-Kalkulationshilfe, die es dem Vertrieb einfach macht unsere Produkte zu kalkulieren.
Dieses Jahr habe ich eine neue Version dazu erstellt mit wesentlich mehr Infos/Daten/Möglichkeiten.
Es wurden viele neue Funktionen integriert und das Teil eigentlich komplett neu erstellt/programmiert.
Mittlerweilen sind 2-3 Wochen Arbeit hineingeflossen und stehe nun kurz vor der Fertigstellung.

Die Exceldatei läuft einwandfrei und ist absolut in Ordnung. Ladezeiten sind ebenfalls ok. Im geöffneten Zustand ebenfalls sehr schnelle Handhabe.
Sobald ich jedoch die geringfügigste Änderung an der aktuellen Datei durchführe, (z.B. unter neuem Namen speichere) erhöht sich die Ladezeit drastisch. Je nach Rechnergeschwindkeit auf 3-10min.

Excel 2010 startet, läd die Datei und beginnt dann beim Öffnen der Datei bei 94-98% für etliche Minuten hängen zu bleiben. Die Prozessorauslastung ist dann bei 100%.
Nach dieser langen Wartezeit funktioniert die Datei wieder einwandfrei, als ob nie etwas gewesen wäre.

Da für mich die Programmierung im VBA-Quellcode bis vor 3 Monaten noch komplettes Neuland darstellte, vermute ich hier die größte Fehlerquelle.
Der Fehler trat vor einigen Wochen bereits auf, konnte dann aber mit eine Microsoft Office Repair-Tool wieder (kurzzeitig) repariert werden. Das Tool bemängelte die "bedingten Formattierungen"


Daten zum System:
- Excel-Datei mit ca. 3,4 MB
- Dateiformat: *.xlsm
- Programmiert mit Office2010PlusSP1 32bit auf x64 System.


häufig verwendete VBA-Befehle:


1. If/Else/EndIf

2. Static oldTarget

' Ausführung des Makros bei Differenz von 2 Feldern - Abgleich auf Ungleichheit (für Bestelltext)
Static oldTarget As String
If oldTarget = "" Then oldTarget = Range("A1")
If Range("A1") <> oldTarget Then
Call Bestelltext_IP
oldTarget = Range("A1")
Else
Exit Sub
End If

3. Ausführen des Bestelltexts

If Intersect(Target, Range("C19")) Is Nothing Then Exit Sub
Application.EnableEvents = False
Call Bestelltext_generieren
Application.EnableEvents = True

4. ScreenUpdates
Application.ScreenUpdating = False

Worksheets("Worksheet123").Range("A1").Copy
Worksheets("Produkt1").Range("B36:G51").PasteSpecial Paste:=xlPasteAll, Operation:=xlNone, SkipBlanks:= _
False, Transpose:=True
Application.ScreenUpdating = True
End Sub


Ich bin mir sicher, dass man das bestimmt noch viel schöner und professioneller hätte umsetzen können,
aber es erfüllt seinen Zweck.


Meine Vermutungen für den Fehler bzw. mögliche Lösungsansätze:

- Einfacher VBA-Anfängerfehler (Excel aktualisiert die Formeln während des Ladens extrem häufig)
- Sicherheitsprüfung von Office erhöht die Ladezeit
- Datei wurde vollständig passwortgeschützt (Quelltext, Arbeitsmappe, Struktur) und behindert das Öffnen
- Dateiformatproblem (xlsm)
- bedingte Formatierungen
- Nutzung eines "Repairtools"
- Bereits bekannter Bug/Fehler bei Verwendung eines VBA-Befehls in Excel


Ich freue mich auf Eure Unterstützung!

Content-Key: 184324

Url: https://administrator.de/contentid/184324

Printed on: April 24, 2024 at 03:04 o'clock

Member: mak-xxl
mak-xxl May 02, 2012 at 05:40:31 (UTC)
Goto Top
Moin XtremeCase,

Du hast es sicher schon bei der Beschreibung des Problems gemerkt - es ist ein sehr komplexes. Noch umfangreicher dürfte es werden, alle Möglichkeiten per Frage-/Antwortspiel hier zu posten und dann eventuell doch haarscharf am eigentlichen Problem (so es nur ein einziges gibt) vorbei zu raten. Eine einzige Zeile Code, an sich richtig geschrieben, aber zur falschen Zeit an der unpassenden Stelle ausgeführt, auf eine Seite bezogen, die eine Handvoll bedingter Formatierungen zu viel enthält - und so weiter ...
Es wäre aus meiner Erfahrung der bessere Weg, die Datei per PM den/dem Hilfswilligen zukommen zu lassen und die Fehlerbereinigungen bzw. Ratschläge in das Original einzupflegen - und, ganz wichtig, die Essenz hier zu posten - auch kein kleines Stück Arbeit.

Freundliche Grüße von der Insel - Mario
Member: NetWolf
NetWolf May 02, 2012 at 10:32:13 (UTC)
Goto Top
Moin Moin,

Sobald ich jedoch die geringfügigste Änderung an der aktuellen Datei durchführe, (z.B. unter neuem Namen speichere)
das ist keine geringfügige Änderung!!!

erhöht sich die Ladezeit drastisch.
der Ursprungsdatei, oder der neuen Datei?

Wo liegt die Ursprungsdatei? lokal oder auf Server / NAS / ?
Wo speicherst du die neue Datei? lokal oder auf Server / NAS / ?

Excel 2010 startet, läd die Datei und beginnt dann beim Öffnen der Datei bei 94-98% für etliche Minuten hängen
zu bleiben. Die Prozessorauslastung ist dann bei 100%.
Nach dieser langen Wartezeit funktioniert die Datei wieder einwandfrei, als ob nie etwas gewesen wäre.
d.h. auch spätere Starts laufen ohne Verzögerung ab?

Da für mich die Programmierung im VBA-Quellcode bis vor 3 Monaten noch komplettes Neuland darstellte, vermute ich hier die größte Fehlerquelle.
vermutlich nicht

Der Fehler trat vor einigen Wochen bereits auf, konnte dann aber mit eine Microsoft Office Repair-Tool wieder (kurzzeitig)
repariert werden. Das Tool bemängelte die "bedingten Formattierungen"
also sollte klar sein, woran es liegt! Darf ich dich bitten, in einem Forum immer die komplette Fehlermeldung zu posten und nicht nur, was du daraus interpretieren kannst?

Daten zum System:
- Excel-Datei mit ca. 3,4 MB
- Dateiformat: *.xlsm
- Programmiert mit Office2010PlusSP1 32bit auf x64 System.
schön, und das Wichtige:
?? Anzahl Spalten?
?? Anzahl Zeilen?
?? Anzahl Mappen?
?? Anzahl Bedingte Formatierungen?

Meine Vermutungen für den Fehler bzw. mögliche Lösungsansätze:

- Einfacher VBA-Anfängerfehler (Excel aktualisiert die Formeln während des Ladens extrem häufig)
Woran erkennst du das?
Wann wird dein Code ausgeführt? Was ist der Trigger?
Mache ein Kopie der Datei, entferne den VBA-Code Prozedur für Prozedur und teste dann.

- Sicherheitsprüfung von Office erhöht die Ladezeit
ja, aber minimal i.d.R. < 5 Sekunden

- Datei wurde vollständig passwortgeschützt (Quelltext, Arbeitsmappe, Struktur) und behindert das Öffnen
mache ein Kopie der Datei, entferne die Passwörter und teste dann.

- Dateiformatproblem (xlsm)
wieso? du speicherst doch wohl nicht im Kompatibilitätsmodus?

- bedingte Formatierungen
wenn ich der Fehlermeldung glauben darf, wird es wohl zu 90% daran liegen

- Nutzung eines "Repairtools"
während meiner Phase als Programmierer habe ich gelernt, häufig Sicherungen anzulegen, so dass eine unsichere Reparatur nie notwendig war.

- Bereits bekannter Bug/Fehler bei Verwendung eines VBA-Befehls in Excel
Von welchem Befehl reden wir? Dein hier gezeigter Code kann ja wohl nicht alles sein.....um das beurteilen zu können.

Grüße aus Rostock
Wolfgang
(Netwolf)
Member: XtremeCase
XtremeCase May 02, 2012 at 22:34:06 (UTC)
Goto Top
Zitat von @NetWolf:
Moin Moin,

das ist keine geringfügige Änderung!!!
Was konkret meinst du damit?

erhöht sich die Ladezeit drastisch.
der Ursprungsdatei, oder der neuen Datei?
Der neuen Datei.

Wo liegt die Ursprungsdatei? lokal oder auf Server / NAS / ?
Lokal auf dem Desktop
Wo speicherst du die neue Datei? lokal oder auf Server / NAS / ?
Lokal auf dem Desktop
Nach dieser langen Wartezeit funktioniert die Datei wieder einwandfrei, als ob nie etwas gewesen wäre.
d.h. auch spätere Starts laufen ohne Verzögerung ab?
nein leider nicht. Die weiteren Starts laufen ebenfalls, weiterhin verzögert ab
> Da für mich die Programmierung im VBA-Quellcode bis vor 3 Monaten noch komplettes Neuland darstellte, vermute ich hier die größte Fehlerquelle.
vermutlich nicht

> Der Fehler trat vor einigen Wochen bereits auf, konnte dann aber mit eine Microsoft Office Repair-Tool wieder (kurzzeitig)
> repariert werden. Das Tool bemängelte die "bedingten Formattierungen"
also sollte klar sein, woran es liegt! Darf ich dich bitten, in einem Forum immer die komplette Fehlermeldung zu posten und nicht
nur, was du daraus interpretieren kannst?
Werde morgen in der Firma das Tool erneut ausführen und dem Forum die Meldung als Screenshot mitnehmen
> Daten zum System:
> - Excel-Datei mit ca. 3,4 MB
> - Dateiformat: *.xlsm
> - Programmiert mit Office2010PlusSP1 32bit auf x64 System.
schön, und das Wichtige:
?? Anzahl Spalten?
von 15 bis 35, je nach Mappe
?? Anzahl Zeilen?
von 50 bis 1250 je nach Mappe
?? Anzahl Mappen?
10 Mappen
?? Anzahl Bedingte Formatierungen?
Verwendete Formeln (sverweise = ca. 40-50; IF/Else = ca. 25, Standardformeln, wie =Summe(...) etc. 200-300)
Die in Excel2010 neu erschienene Funktion "bedingte Formattierung" evtl. 30-40 Felder
> Meine Vermutungen für den Fehler bzw. mögliche Lösungsansätze:
>
> - Einfacher VBA-Anfängerfehler (Excel aktualisiert die Formeln während des Ladens extrem häufig)
Woran erkennst du das?
Das erkenne ich nicht, das ist nur eine Vermutung gewesen
Wann wird dein Code ausgeführt? Was ist der Trigger?
Der Code wird ausgeführt bei:
worksheet_calculate/_open/_change + Einige Subs die als Makro ausgeführt werden
Mache ein Kopie der Datei, entferne den VBA-Code Prozedur für Prozedur und teste dann.

> - Sicherheitsprüfung von Office erhöht die Ladezeit
ja, aber minimal i.d.R. < 5 Sekunden
Danke für die Info - schließe ich also absofort aus
> - Datei wurde vollständig passwortgeschützt (Quelltext, Arbeitsmappe, Struktur) und behindert das Öffnen
mache ein Kopie der Datei, entferne die Passwörter und teste dann.
getan, erfolglos.
> - Dateiformatproblem (xlsm)
wieso? du speicherst doch wohl nicht im Kompatibilitätsmodus?
Ich habe das Format ausgesucht, da Excel 2010 mir dies als Vorschlag gab.

Habe gerade einen Fortschritt erkannt. Nachdem ich in XLS (Also Excel 97-03 Format abgespeichert habe, ist das Ladezeitenproblem nichtmehr vorhanden. Mir fehlen jetzt jedoch einige (hart erkämpfte) Funktionen, aber es geht.
Ich denke hier könnte man bei der Problemlösung weiter ansetzen. Der Fehler scheint in einem Bereich zu stecken, der mit Excel 2007/2010 neu dazu kam... wo wir wieder bei dem Reiter "Bedingten Formatierungen" wären.


> - bedingte Formatierungen
wenn ich der Fehlermeldung glauben darf, wird es wohl zu 90% daran liegen
sehe ich nun auch so.
> - Nutzung eines "Repairtools"
während meiner Phase als Programmierer habe ich gelernt, häufig Sicherungen anzulegen, so dass eine unsichere Reparatur
nie notwendig war.
Die Tabellen beinhalten komplexe Funktionen und aufwändige Kalkulationsmatrizen, die "gewachsen" sind.
Es sind häufig Änderungen der Kalkulation durchgeführt worden, ohne diese zu dokumentieren (schriftlich).
Backups liegen zwar 20 vor. Genaue Informationen worin in den Dateien mal abgesehen vom Erstellungsdatum unterscheiden, ist nicht protokolliert. Mein Versäumnis, ich gestehe.

> - Bereits bekannter Bug/Fehler bei Verwendung eines VBA-Befehls in Excel
Von welchem Befehl reden wir? Dein hier gezeigter Code kann ja wohl nicht alles sein.....um das beurteilen zu können.

Grüße aus Rostock
Wolfgang
(Netwolf)



Besten Dank Netwolf!
Member: XtremeCase
XtremeCase May 17, 2012 at 21:11:50 (UTC)
Goto Top
Hallo liebe Gemeinde,

ich habe einen alten Versionsstand wieder entdeckt und anhand dieser funktionierenden Version die neuen Anpassungen durchgeführt.
Für mich ist das Thema also als "gelöst" zu betrachten.

Da ich denke, dass das Problem zu komplex und individuell ist, wird es für weitere Personen kaum nützlich sein. Kann von meiner Seite aus also gerne gelöscht werden.

Falls andere Personen einen ähnlichen Fehler feststellen unterstütze ich selbstverständlich gerne.


Gruß und Dank an die bisherigen Antworter!