Beschreibung
Um Ereignisse eines Objektes empfangen zu können, müssen Sie eine Variable des Objekttyps in einem Klassenmodul mit dem Schlüsselwort 'WithEvents' deklarieren.
Solange ein Anwender nur eine E-Mail zur Zeit öffnet, wäre das noch relativ leicht: Sie brauchen dann auch nur eine Variable. Sie warten einfach auf das NewInspector-Ereignis; wenn das feuert, wissen Sie, dass ein Element geöffnet wird; handelt es sich dabei um ein MailItem, dann speichern Sie einen Verweis darauf in der genannten Variable und können von da an die Ereignisse des MailItems empfangen.
In der Realität wird es aber umfangreicher, weil der Anwender mehr als nur eine E-Mail öffnen kann. Da die tatsächliche Anzahl unbekannt ist, nützt es auch nichts, nach obigem Muster z.B. drei Variablen zu deklarieren.
Um dem zu begegnen, brauchen Sie ein eigenes Klassenmodul, von dem Sie soviele Objekte erzeugen, wie eben benötigt werden. Alle Verweise darauf werden in einer Collection gespeichert, da die Objekte ansonsten zu früh wieder zerstört würden.
Das Beispiel zeigt, wie das funktioniert und berücksichtigt auch diverse Situationen, in denen der Inspector geschlossen wird. Außerdem sind bereits leere Funktionen enthalten, um an den geeigneten Stellen eine eigene Commandbar (Symbolleiste) zu erstellen bzw. zu entfernen.
Der folgende Code ist in zwei Module zu kopieren. Der erste Teil (bis </DieseOutlookSitzung>) gehört in eine Klasse. Wenn Sie das in Outlook VBA einsetzen, bietet sich dafür z.B. die Klasse 'DieseOutlookSitzung' an. Danach folgt Code, der in ein zweites Klassenmodul gehört, welches hier mit 'cInspector' benannt ist. |