Visual Basic - Technik, FAQ, Tricks, Beispiele

Home / Objekte / Office / Performance

VBA-Performance steigern

Bei der "Fernsteuerung" von Microsoft-Office-Anwendungen via ActiveX-Automation sollten folgende Punkte beachtet werden, um eine höhere Ausführgeschwindigkeit und eine größere Unabhängigkeit von Benutzer-Interaktion zu erreichen:

Fenster-Aktualisierungen
Mit der ScreenUpdating-Eigenschaft des jeweiligen Application-Objekts kann eingestellt werden, ob die Anwendung Bildschirm-Aktualisierungen anzeigen soll. Bei False werden (fast) alle Aktualisierungen unterdrückt, was im Allgemeinen zu einer schnelleren Abarbeitung von VBA-Befehlen führt. Bei True wird die Aktualisierung wieder eingeschaltet, so dass jede Änderung (z.B. im Word-Dokument oder in der Excel-Tabelle) wieder angezeigt wird.

Warn-Meldungen
Mit der DisplayAlerts-Eigenschaft des jeweiligen Application-Objekts kann eingestellt werden, ob die Anwendung Meldungsfenster (für Nachfragen oder Fehler) anzeigen soll. Bei False werden alle Meldungen unterdrückt, so dass (fast immer) ein sicheres Durchlaufen aller VBA-Befehle ermöglicht wird. Bei True werden wieder Meldungen angezeigt (falls überhaupt welche nötig sind).

Beispiel
Hier also das grundsätzlich empfohlene Schema für eine optimale Ausführung von mehreren Zeit-raubenden) VBA-Befehlen:
Dim App As Object 'allgemeine Anwendung
'Dim App As Word.Application
'Dim App As Excel.Application

'Referenz auf Word- oder Excel-Objekt "borgen":
Set App = ... (Tipp: GetApplication-Funktion)

With App
  .ScreenUpdating = False
  .DisplayAlerts = False

  'Hier App-Objekt benutzen...

  .DisplayAlerts = True
  .ScreenUpdating = True
End With

© Jost Schwider, 05.10.2000-05.10.2000 - http://vb-tec.de/off_perf.htm