Top-Themen

Aktuelle Themen (A bis Z)

Administrator.de FeedbackApache ServerAppleAssemblerAudioAusbildungAuslandBackupBasicBatch & ShellBenchmarksBibliotheken & ToolkitsBlogsCloud-DiensteClusterCMSCPU, RAM, MainboardsCSSC und C++DatenbankenDatenschutzDebianDigitiales FernsehenDNSDrucker und ScannerDSL, VDSLE-BooksE-BusinessE-MailEntwicklungErkennung und -AbwehrExchange ServerFestplatten, SSD, RaidFirewallFlatratesGoogle AndroidGrafikGrafikkarten & MonitoreGroupwareHardwareHosting & HousingHTMLHumor (lol)Hyper-VIconsIDE & EditorenInformationsdiensteInstallationInstant MessagingInternetInternet DomäneniOSISDN & AnaloganschlüsseiTunesJavaJavaScriptKiXtartKVMLAN, WAN, WirelessLinuxLinux DesktopLinux NetzwerkLinux ToolsLinux UserverwaltungLizenzierungMac OS XMicrosoftMicrosoft OfficeMikroTik RouterOSMonitoringMultimediaMultimedia & ZubehörNetzwerkeNetzwerkgrundlagenNetzwerkmanagementNetzwerkprotokolleNotebook & ZubehörNovell NetwareOff TopicOpenOffice, LibreOfficeOutlook & MailPapierkorbPascal und DelphiPeripheriegerätePerlPHPPythonRechtliche FragenRedHat, CentOS, FedoraRouter & RoutingSambaSAN, NAS, DASSchriftartenSchulung & TrainingSEOServerServer-HardwareSicherheitSicherheits-ToolsSicherheitsgrundlagenSolarisSonstige SystemeSoziale NetzwerkeSpeicherkartenStudentenjobs & PraktikumSuche ProjektpartnerSuseSwitche und HubsTipps & TricksTK-Netze & GeräteUbuntuUMTS, EDGE & GPRSUtilitiesVB for ApplicationsVerschlüsselung & ZertifikateVideo & StreamingViren und TrojanerVirtualisierungVisual StudioVmwareVoice over IPWebbrowserWebentwicklungWeiterbildungWindows 7Windows 8Windows 10Windows InstallationWindows MobileWindows NetzwerkWindows ServerWindows SystemdateienWindows ToolsWindows UpdateWindows UserverwaltungWindows VistaWindows XPXenserverXMLZusammenarbeit
GELÖST

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

Frage Entwicklung VB for Applications

Mitglied: XtremeCase

XtremeCase (Level 1) - Jetzt verbinden

01.05.2012, aktualisiert 21:53 Uhr, 12532 Aufrufe, 4 Kommentare

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!
Mitglied: mak-xxl
02.05.2012 um 07:40 Uhr
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
Bitte warten ..
Mitglied: NetWolf
02.05.2012 um 12:32 Uhr
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)
Bitte warten ..
Mitglied: XtremeCase
03.05.2012 um 00:34 Uhr
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!
Bitte warten ..
Mitglied: XtremeCase
17.05.2012 um 23:11 Uhr
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!
Bitte warten ..
Ähnliche Inhalte
Microsoft Office
Große Datei lange Ladezeit Word 2013
Frage von edvcamperMicrosoft Office2 Kommentare

Hallo zusammen, ich arbeite über WLAN mit großen Worddateien (>40MB) die jpg's enthalten. Bei Office 2007 wurde die Datei ...

VB for Applications
Excel Makros
Frage von chaos2goVB for Applications2 Kommentare

Hallo Gemeinde, File Größe über 500k Einträge Steigend . ich bekomme Monatlich ein Raw Dump aus unserer DB als ...

Microsoft
Excel-Datei mit VBA speichern
gelöst Frage von 116408Microsoft6 Kommentare

Guten Tag Ich habe eine Excel-Datei, in der in D4 der Kundenname und in D11 das Projekt benennt wird. ...

VB for Applications
VBA Excel Dateien zusammenfassen
Frage von cberndtVB for Applications3 Kommentare

Hi Leute. Ich bin dabei einen Ordner mit Excellisten zusammenzufassen. Im Ordner sind gut 600 einzelne Excel Dateien die ...

Neue Wissensbeiträge
DSL, VDSL

ALL-BM200VDSL2V - Neues VDSL-Modem mit Vectoring von Allnet

Information von Lochkartenstanzer vor 1 StundeDSL, VDSL

Moin, Falls jemand eine Alternative zu dem draytek sucht: Gruß lks

Windows 10

Microsoft bestätigt DMA-Policy-Problem in Win10 v1709

Information von DerWoWusste vor 1 StundeWindows 10

Wer sein Gerät mit der DMA-Policy absichert, bekommt evtl. Hardwareprobleme in v1709 von Win10. Warum? Weil v1709 endlich "richtig" ...

Verschlüsselung & Zertifikate

Die Hölle friert ein weiteres Stück zu: Microsoft integriert OpenSSH in Windows

Information von ticuta1 vor 4 StundenVerschlüsselung & Zertifikate

Interessant Die Hölle friert ein weiteres Stück zu: Microsoft integriert OpenSSH in Windows SSH-Kommando in CMD.exe und PowerShell

Apple

IOS 11.2.1 stopft HomeKit-Remote-Lücke

Tipp von BassFishFox vor 1 TagApple

Das Update für iPhone, iPad und Apple TV soll die Fernsteuerung von Smart-Home-Geräten wieder in vollem Umfang ermöglichen. Apple ...

Heiß diskutierte Inhalte
Windows Server
RODC kann nicht aus Domäne entfernt werden
Frage von NilsvLehnWindows Server19 Kommentare

HAllo, ich arbeite in einem Universitätsnetzwerk mit 3 Standorten. Die Standorte haben alle ein ESXi Cluster und auf diesen ...

Hardware
Kein Bild mit nur einer bestimmten Grafikkarten - Mainboard Konfiguration
gelöst Frage von bestelittHardware18 Kommentare

Hallo zusammen, ich hatte schon einmal eine ähnliche Frage gestellt. Damals hatte ich genau das gleiche Problem. Allerdings lies ...

Netzwerkmanagement
Mehrere Netzwerkadapter in einem PC zu einem Switch zusammenfügen
Frage von prodriveNetzwerkmanagement17 Kommentare

Hallo zusammen Vorweg, ich konnte schon einige IT-Probleme mit Hilfe dieses Forums lösen. Wirklich klasse hier! Doch für das ...

Hardware
Links klick bei Maus funktioniert nicht
gelöst Frage von Pablu23Hardware16 Kommentare

Hallo erstmal. Ich habe ein Problem mit meiner relativ alten maus jedoch denke ich nicht das es an der ...