Möchtest Du den gesamten Artikel lesen? Und vielleicht sogar den Artikel im PDF-Format und die Beispieldateien herunterladen? Dann hole Dir den Artikel gleich hier - völlig kostenlos!
In einem anderen Artikel namens “Outlook: Mails nach dem Senden per VBA verschieben” (www.vbentwickler.de/440) haben wir die grundlegenden Techniken gezeigt, mit denen wir E-Mails, die wir selbst versendet haben, nicht in den Ordner Gesendete Elemente verschieben, sondern in einen Ordner unserer Wahl. Damit können wir einfach E-Mails in bestimmten Kontexten direkt in einen Ordner verschieben, wo auch die übrigen E-Mails zu diesem Thema landen. Eigentlich läuft diese Funktion automatisch und bedarf keiner Benutzer-Interaktion, aber wir benötigen eine Möglichkeit, die Regeln für das Verschieben der E-Mails zu definieren. Dazu haben wir eine Textdatei benutzt, die wir für den Benutzer auf einfachem Wege zugänglich machen wollen, zum Beispiel durch das Anklicken eines Ribbonbuttons. Dazu verwenden wir ein COM-Add-In, dem wir auch noch die eigentliche Funktion hinzufügen – und noch ein paar Extras. In diesem Artikel beschreiben wir, wie Du ein solches COM-Add-In mit twinBASIC ganz einfach selbst bauen kannst.
Das fertige COM-Add-In findest Du in Versionen für 32-Bit und 64-Bit im Download zu diesem Artikel. Wir beschreiben in diesem Artikel die interessantesten Funktionen des COM-Add-Ins.
Funktion des COM-Add-ins
Das COM-Add-In soll Outlook um Funktionen erweitern, mit denen wir festlegen können, dass gesendete E-Mails mit bestimmten Empfänger-E-Mail-Adressen in vorgegebene Outlook-Ordner verschoben werden.
Das ist eine Funktion, die automatisiert ablaufen sollte. Allerdings ist dazu die Konfiguration der E-Mails und der gewünschten Zielordner erforderlich. Um diese zu realisieren, fügen wir dem Ribbon von Outlook mit dem COM-Add-In zwei Einträge hin einer eigenen Gruppe hinzu.
Diese soll wie in Bild 1 im Ribbon-Tab Senden/Empfangen erscheinen. Hier finden wir zwei neue Einträge:
Bild 1: Integration des COM-Add-Ins in die Benutzeroberfläche
- Ordner für gesendete E-Mails bearbeiten: Klicken wir diesen Eintrag an, erscheint zunächst die Meldung aus Bild 2. Danach wird die Textdatei mit der Konfiguration in der als Text-Editor voreingestellten Anwendung geöffnet – Erläuterung dazu siehe weiter unten.
- Speicherort der Konfigurationsdatei ändern: Dieser Befehl öffnet einen Dateiauswahl-Dialog, mit dem eine alternative Konfigurationsdatei ausgewählt werden kann.
Bild 2: Meldung mit Anweisungen für die Konfigurationsdatei
Die Konfigurationsdatei sieht beispielsweise wie in Bild 3 aus. Sie erwartet die Eingabe der einzelnen Zeilen in der Form, dass wir zunächst die E-Mail-Adresse des Empfängers eingeben, dessen E-Mails nach dem Versenden in einen anderen Ordner verschoben werden sollen.
Bild 3: Beispiel für die Konfigurationsdatei
Installieren des COM-Add-Ins
Wenn Du die Funktionen des COM-Add-Ins auch in Deinem Outlook nutzen möchtest, kannst Du das ganz einfach erledigen. Speichere die Datei amvSentMailFolders_win32.dll oder amvSentMailFolders_win64.dll, je nachdem, welche Office-Version Du verwendest, in einem beliebigen Verzeichnis.
Dann öffnest Du Outlook und klickst auf Datei|Optionen. Im Optionen-Dialog wählst Du den Bereich Add-Ins aus. Wähle unten unter Verwalten: den Eintrag COM-Add-Ins aus und klicke dann auf Los…, um den Dialog COM-Add-Ins zu öffnen.
Hier findest Du die Schaltfläche Hinzufügen…, mit der Du einen Dateiauswahl-Dialog öffnest (siehe Bild 4). Wähle hier eine der oben genannten DLL-Dateien aus und das COM-Add-In wird automatisch registriert und sollte nun direkt startbereit sein. Gegebenenfalls musst Du Outlook nochmal neu starten. Danach findest Du die beiden neuen Einträge im Ribbon von Outlook vor.
Bild 4: Installieren des COM-Add-Ins über die Benutzeroberfläche
Funktionsweise des COM-Add-Ins
Das COM-Add-In enthält die folgenden Elemente:
- amvSendMailFolders.twin: Enthält die Hauptfunktionen zum Starten und Steuern des COM-Add-Ins.
- DllRegistration.twin: Enthält die Funktionen zum Registrieren und De-Registrieren des COM-Add-Ins in der Registry.
- mdlAPI.twin: Enthält die Definition einer API-Funktion zum Öffnen einer Datei mit der dafür festgelegten Anwendung.
- mdlFileDialog.twin: Enthält die Funktion zum Öffnen eines Dateiauswahl-Dialogs.
- mdlGlobal.twin: Enthält globale Variablen.
- mdlRegistry.twin: Enthält Funktionen für das Lesen und Schreiben der Bereiche der Registry, die für VB- und VBA-Anwendungen vorgesehen sind.
Beim Starten des COM-Add-Ins
Wenn wir das COM-Add-In mit twinBASIC bearbeiten und dort auf den Menübefehl File|Build klicken, wird die Funktion zum Registrieren der Anwendung aus dem Modul DllRegistration ausgeführt. Die gleiche Funktion wird ausgeführt, wenn wir das COM-Add-In mit RegSvr32 registrieren oder über den entsprechenden Dialog von Outlook installieren – wie oben beschreiben.
Das COM-Add-In verwendet zwei Schnittstellen, um auf den Aufruf der Anwendung zu reagieren, in der es verwendet werden soll, in diesem Fall Outlook. Die erste heißt IDTExtensibility2 und die zweite IRibbonExtensibility.
Die erste stellt einige Ereignisprozeduren zur Verfügung, von denen wir die namens OnConnection mit Code füllen. Die anderen benötigen wir eigentlich nicht, aber wenn wir die Schnittstelle IDTExtensibility implementieren, müssen wir auch alle Ereignisprozeduren implementieren.
Die Prozedur OnConnection wird beim Starten des COM-Add-Ins aufgerufen und enthält den folgenden Code:
Sub OnConnection(ByVal Application As Object, _ ByVal ConnectMode As ext_ConnectMode, _ ByVal AddInInst As Object, _ ByRef custom As Variant()) _ Implements IDTExtensibility2.OnConnection Set objOutlook = Application Call CheckConfigurationFile() Call Aktivieren End Sub
Im Wesentlich liefert sie einen Verweis auf die aufrufende Outlook-Instanz, den wir in der folgenden Variablen speichern (im Modul mdlGlobal, da diese auch in anderen Modulen verwendet wird):
Public objOutlook As Outlook.Application
Außerdem ruft sie die Prozedur CheckConfigurationFile auf. Diese versucht, den Pfad aus dem entsprechenden Bereich der Registry auszulesen. Dieser wird beim ersten Start noch nicht vorhanden sein, was dazu führt, dass strFilePath nach der Abfrage der Registry mit GetAppSetting mit dem Pfad aus App.Path & “\SentMailFolders.txt” gefüllt ist. Wenn diese Datei noch nicht vorhanden ist, wird sie mit der Prozedur CreateConfigurationFile angelegt, der wir mit strFilePath den Pfad übergeben. Schließlich wird der Pfad in der Registry hinterlegt:
Ende des frei verfügbaren Teil. Wenn Du mehr lesen möchtest, hole Dir ...
den kompletten Artikel im PDF-Format mit Beispieldatenbank
diesen und alle anderen Artikel mit dem Jahresabo