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