Office-Ereignisse mit VBA programmieren

Lies in den Artikel rein und unten bekommst Du ein unschlagbares Angebot!

Visual Basic for Applications, kurz VBA, ist eine Ableitung der Programmiersprache Visual Basic. Im Gegensatz zu diesem, das mit Visual Basic 6 vor einigen Jahren seine letzte Version erlebt hat, erfreut sich VBA immer noch reger Beliebtheit. Das liegt vor allem an seinem Hauptzweck: der Programmierung und der Steuerung von automatisierten Abläufen in den Office-Anwendungen, zum Beispiel Access, Excel, Outlook, PowerPoint oder Word. Der Kern dieser Automatisierungen sind sogenannte Ereignisse, also Prozeduren, die an einer bestimmten Stelle unter einem vordefinierten Namen hinzugefügt und dann durch das jeweilige Ereignis automatisch ausgelöst werden – beispielsweise dem Öffnen eines Dokuments oder dem Anklicken einer Schaltfläche. Dieser Artikel zeigt, welche Möglichkeiten die einzelnen Office-Anwendungen zum Einrichten von Ereignisprozeduren bieten und was bei der Automatisierung grundlegend zu beachten ist.

Öffnen des VBA-Editors

Der dazu verwendete VBA-Editor steht zum Beispiel in den oben genannten Anwendungen wie Access, Excel, Outlook, PowerPoint und Word standardmäßig zur Verfügung und lässt sich schnell mit der Tastenkombination Alt + F11 öffnen. Unter Access gibt es sogar noch eine weitere Tastenkombination, um vom Hauptfenster der Anwendung zum VBA-Editor zu gelangen, nämlich Strg + G. Dies aktiviert direkt den Direktbereich des VBA-Editors.

VBA-Editor für eine Excel-Datei

Der VBA-Editor sieht für alle Office-Anwendungen ähnlich aus. Bild 1 zeigt den VBA-Editor für eine frisch erstellte Excel-Datei.

Der VBA-Editor

Bild 1: Der VBA-Editor

Der Unterschied bei der Darstellung des VBA-Editors für die verschiedenen Office-Anwendungen liegt im Wesentlichen im Aufbau der VBA-Projekte der jeweiligen Datei im Projekt-Explorer, den wir mit dem Menüeintrag Ansicht|Projekt-Explorer oder der Tastenkombination Strg + R öffnen.

In der Abbildung sehen wir beispielsweise das VBA-Projekt für eine Excel-Datei. Das Projekt erhält unter Excel standardmäßig den Namen VBAProject, in Klammern sehen wir dahinter den Namen, unter dem wir die Exceldatei gespeichert haben, in diesem Fall Excelbeispiel.

Im VBA-Projekt einer neuen, leeren Excel-Datei finden wir zwei Elemente. Bei diesen handelt es sich um Klassenmodule, die wir wie folgt nutzen können:

  • DieseArbeitsmappe: Dabei handelt es sich um das Klassenmodul für ein Objekt namens Workbook, welches das Excel-Dokument selbst repräsentiert, das wiederum eine oder mehrere Tabellen enthält. Für das Workbook-Objekt können wir verschiedene Ereignisse definieren, die zu verschiedenen Zeitpunkten ausgelöst werden – zum Beispiel beim Öffnen des Excel-Dokuments, beim Aktivieren von Tabellen oder auch vor dem Schließen des Dokuments.
  • Tabelle1 (Tabelle1): Dies ist ein Klassenmodul für die standardmäßig angelegte Tabelle namens Tabelle1. Dieses bietet ebenfalls verschiedene Möglichkeiten zum Definieren von Ereignisprozeduren an. Diese werden beispielsweise beim Ändern der Auswahl in der Excel-Tabelle ausgelöst oder beim Aktivieren der aktuellen Tabelle.

Standardmäßig zeigt Excel das Element DieseArbeitsmappe beim Öffnen des VBA-Editors für eine neue Excel-Datei an.

Ereignis beim Öffnen eines Excel-Workbooks

Wir wollen uns an einem Beispiel ansehen, wie ein Ereignis eines Excel-Workbooks funktioniert. Dazu klicken wir doppelt auf den Eintrag DieseArbeitsmappe des Projekts des aktuell geöffneten Excel-Workbooks und öffnen so das Klassenmodul DieseArbeitsmappe.

Hier wählen wir nun mit dem linken Kombinationsfeld im Codefenster den Eintrag Workbook aus, was automatisch im rechten Kombinationsfeld das standardmäßig festgelegte Ereignis für diese Klasse selektiert und die Ereignisprozedur Workbook_Open zum Codefenster hinzufügt. Diese ergänzen wir um die folgende Anweisung:

Private Sub Workbook_Open()
     MsgBox "Workbook_Open"
End Sub

Im VBA-Editor sieht das nun wie in Bild 2 aus.

Ereignisprozedur für ein Excel-Workbook

Bild 2: Ereignisprozedur für ein Excel-Workbook

Damit wir dieses Ereignis auslösen können, müssen wir das Workbook schließen und erneut öffnen. Beim Schließen erscheint allerdings direkt eine Meldung, die besagt, dass wir das VBA-Projekt nicht mit der Arbeitsmappe speichern können (siehe Bild 3).

Meldung beim Versuch, ein Excel-Dokument mit VBA-Code zu speichern

Bild 3: Meldung beim Versuch, ein Excel-Dokument mit VBA-Code zu speichern

Das liegt allerdings nur an dem aktuellen Format, das durch die Dateiendung .xlsx repräsentiert wird. Also klicken wir, wie in der Meldung vorgeschlagen, auf die Schaltfläche Nein und wählen im anschließend erscheinenden Speichern unter-Dialog den Datentyp Excel-Arbeitsmappe mit Makros (*.xlsm) aus (siehe Bild 4).

Auswahl eines Dateityps, der das Speichern des VBA-Projekts erlaubt

Bild 4: Auswahl eines Dateityps, der das Speichern des VBA-Projekts erlaubt

Schließen wir die Datei nun und öffnen diese anschließend erneut, zeigt Excel eine Sicherheitswarnung an (siehe Bild 5). Hier klicken wir auf Inhalt aktivieren, damit der VBA-Code im enthaltenen VBA-Projekt ausgeführt werden kann.

Sicherheitswarnung beim Öffnen eines Excel-Workbooks mit VBA-Projekt

Bild 5: Sicherheitswarnung beim Öffnen eines Excel-Workbooks mit VBA-Projekt

 

Schreibe einen Kommentar