Kostenlose VB6/VBA-profiler und besten Excel-Praktiken
Wir haben eine Menge von berichten, die generiert werden über VBA & Excel. Nur ein kleiner Prozentsatz der Berichte sind die tatsächlichen Berechnungen - die Mehrheit der arbeiten ist die sql-Aufrufe und formatieren/schreiben der Zellen. Die längste davon dauert mehrere Stunden, die Mehrzahl dauert etwa 20-30 Minuten, jeder.
Den VBA - /Excel-code wird in eine dll, die die VB6-desktop-apps verwenden Sie - es ist hier, dass alle sql-Aufrufe gemacht werden. Während ich bin sicher, dass es Raum für Verbesserung, hier ist es nicht diese, die mir sorgen - die desktop-apps sind ziemlich bissig.
Zwei VBA-Funktionen sind in Hülle und fülle: Diese werden als GetRange und SetupCell und werden Sie fast immer gemeinsam erscheinen. Die GetRange-Funktion ist ein wrapper für die Excel.Range-Objekt. Es nimmt ein Blatt, und 4 Werte für die Blöcke der Reihe. Seine hauptsächliche Verwendung ist, wählen Sie die Zelle zur Bearbeitung. Es scheint nicht viel chance, optmising es, aber es ist der beste Weg?
Seine partner SetupCell. Das dauert ein Excel.Range-Objekt, das text und ein Dutzend Parameter über die Zelle (Schrift, Rahmen, etc). Die meisten dieser Parameter sind optional, Boolean, aber wieder, es scheint sehr verschwenderisch. Einige von Ihnen können eingestellt werden, posthum, aber einige sind abhängig von den Werten in der Zelle.
Gibt es eine Menge von code, der in diese Funktionen, vor allem if-Anweisungen und die Arbeit nicht zu schätzen, mir postest.
Ich denke, ich habe zwei Fragen: gibt es einen besseren Weg, und was ist es und ist es frei profiler, die ich verwenden können, um zu sehen, ob der Großteil der Zeit hier oder in der dll?
Du musst angemeldet sein, um einen Kommentar abzugeben.
mehrere Stunden ist lächerlich für einen Bericht.
Wenn das problem VBA-kaufen "Professional Excel Development" (stephen Bullen, Rob Bovey et al): das ist ein kostenloses VBA-profiler genannt PerfMon.
Wenn das problem ist, Excel-Berechnung siehe http://msdn.microsoft.com/en-us/library/aa730921.aspx?ppud=4
Aber ich würde sagen, das problem ist der hohe Aufwand im Zusammenhang mit verweisen auf Dinge, die cell-by-cell: Sie sollten auch immer in großen Blöcken von Zellen zu einem Zeitpunkt.
Haben Sie sich Gedanken über die Verwendung eines aktuellen reporting-Lösung? Was ist Ihre backend-db? Wenn Sie MSSQL 2000 oder höher, es ist ein ziemlich anständiges reporting-Lösung, die Sie kostenlos nutzen können. SQL Server Reporting Services.
Klingt es so, als wenn die Berichte sind, verbringen den Großteil Ihrer Zeit formatieren von Zellen. Dies könnte sein, warum die Berichte scheinen so langsam und die desktop-app nicht.
Alternativ, wenn Sie wissen, die Formatierung vor der hand, und es ist relativ statisch, Sie könnten pre-format der Blätter zu reduzieren auf einige der Arbeit.
Werde ich werfen diese dort auch. Die meisten reporting-Lösungen können für die bedingte Formatierung und so, aber da Sie entworfen sind, um die Arbeit als solche ist die Leistung viel besser, als wenn Excel es tun.
Dies ist nicht eine profiler-Empfehlung, aber es ist ein Vorschlag, für die Beschleunigung von Excel-Makros, die verbringen Ihre Zeit mit der Aktualisierung des Bildschirms. Ich habe hervorragende Ergebnisse durch ausschalten der Bildschirmaktualisierung während der makro ausgeführt wird: set Anwendung.ScreenUpdating= False, und auch mit einer Reihe von anderen ähnlichen Einstellungen. Nur sicher sein, um Sie wieder einzuschalten, wenn das makro beendet ist 😛
Es ist nicht kostenlos, aber Sie können das Profil mit diese. Ich vermute die demo wird ausreichen, um Ihre Bedürfnisse: http://www.aivosto.com/vbwatch.html
Es klingt wie der VBA-code (oder VB-code schreiben, um die Blätter) ist dabei Zeile für Zeile, das kann Jahre dauern, und das ist schlechtes design. Schreiben Sie Excel als eine Variante in einem Rutsch. Formatieren Sie das Blatt nach der alle Daten importiert.
Dank
Ross