Hier entsteht ein E-Book für VBA-Programmierung mit Outlook.
Fragen, Vorschläge und Anfragen für VBA-Macros sind willkommen.
Senden Sie Ihre Kommentare bitte an
missmapi@olfolders.de
Wer schon mal in Word, Excel oder anderen Programmen
Scripts verwendet hat, weiß wie man Zeit sparen kann und
langweilige Tätigkeiten dem Computer überträgt. In Word
gibt es einen Macrorecorder, man zeichnet einfach alles
auf was man macht und kann dann das Macro ausführen und
abändern, eigentlich muss man dazu gar nicht programmieren
können.
In Outlook gibt es keinen Macrorecorder, da dieser keinen
Sinn machen würde, dafür aber die gleiche VBA-Oberfläche
und mindestens Zwei Objektmodelle um auf Outlook-Daten zugreifen
zu können.
VBA ist eine ausgewachsene Programmieroberfläche für die
Sprache Visual Basic, sie kann fast alles, was das richtige
Visual Basic kann, theoretisch könnte man sogar Spiele damit
programmieren oder eine Datenbank.
Der Nachteil ist die Art der Speicherung. Man kann nicht
einfach ein ganzes Projekt auf einen anderen Computer übertragen,
sonder muss jede Datei einzeln exportieren und importieren,
oder dies in einem Installationsprogramm automatisieren.
Der Script-Editor kann mit ALT-F11 oder Extras/Macros/Visual
Basic Editor gestartet werden. Wir sehen ungefähr folgendes
Bild:
Im Baum können folgende Dinge hinzugefügt werden:
- Formulare
Dialoge mit Kontrollelementen
- Module
VBA-Scripts mit Funktionen die irgendetwas ausführen
- Klassenmodule
Eine Klasse enthält Daten (zum Beispiel eine Adresse)
und Funktionen (zum Beispiel einen Brief schreiben).
Mit Klassen lassen sich Funktionen mit Daten koppeln,
wir schreiben dann hinterher Adresse.Drucken statt Drucken(Adresse).
Dies hat den Vorteil, dass für jede Klasse Funktion
Drucken genau das macht, was mit den Daten sinnvoll
ist.
- Microsoft Office Outlook
Objekte
Ereignishandler, hier werden Funktionen eingefügt, die
irgendetwas machen, wenn in Outlook ein Ereignis auftritt,
zum Beispiel eine E-Mail versendet oder empfangen wird.
Ein Script ausführen
Sie haben irgendwo im Internet oder in einer Newsgroup
ein interessantes Script gefunden, welches genau Ihr Problem
löst und wollen es ausführen. Hier die Anleitung:
Zunächst einmal sind die meisten Outlooks so eingestellt,
das VBA Scripts gar nicht ausgeführt werden, wir müssen
erst die Sicherheit zurückdrehen: Öffnen Sie in Outlook
Extras/Macros/Sicherheit und stellen eine andere Sicherheitsstufe
ein. In Outlook ist die VBA-Sicherheit weniger wichtig als
zum Beispiel in Excel oder Word, weil keine VBA-Macros per
E-Mail kommen, sondern nur vom Benutzer. Virenprogramme
könnten zwar auch Macros erstellen, aber mit einem aktuellem
Virenwächter sollte sich dies verhindern lassen.
Nach dem Runterdrehen der Sicherheitsstufe muss Outlook
neu gestartet werden.
Drücken Sie nun ALT-F11 um den Macroeditor zu starten,
oder wählen Sie Extras/Macros/Editor.
Wenn das Macro keine Formulare hat, sondern einfach nur
aus "sub" und "function" besteht, legen Sie ein neues Modul
an: Rechtsklick auf "Projekt 1" und Einfügen Modul.
Fügen Sie jetzt das Macro ein, zum Beispiel:
' Diese Funktion ändert das Feld "Speichern Unter" in
Kontakten so
' dass erst der Name, dann der Nachname erscheint.
' Zum Ausführen müssen die gewünschten Kontakte in Outlook
selektiert sein.
shared Sub SetContactFileAs()
Dim msg As ContactItem
Dim name As String
Dim vorname As String
Dim fileas As String
For Each msg In Application.ActiveExplorer.Selection
name = msg.LastName
vorname = msg.FirstName
fileas = name & " " & vorname
If msg.fileas <> fileas Then
msg.fileas = fileas
msg.Save
End If
Next msg
End Sub
Sie können die Prozedur direkt
mit F5 starten, ggf. muss auf der Outlook-Seite etwas vorbereitet
sein, in diesem Fall müssen Kontakte selektiert werden,
welche vom Macro bearbeitet werden.
Sie können den VBA-Editor jetzt
schließen. Um das Macro aus Outlook heraus auszuführen,
gibt es mehrere Möglichkeiten:
1. Extras/Macros/Ausführen und
den Namen des Macros angeben.
2. Extras/Anpassen und das Macro
auf eine Symbolleiste oder eine Tastenkombination legen
3. Manche Macros werden automatisch
ausgeführt, zum Beispiel Macros die auf das Empfangen oder
Versenden von E-Mails reagieren. Diese Macros müssen in
das Modul "Diese Outlooksitzung" eingefügt werden.
Von VBA nach VB
Das Startobjekt heißt Application, über Application kommen
wir an alle Outlook-Objekte heran.
Alle VBA-Programme können auch außerhalb von Outlook
verwendet werden, in diesem Fall muss das Application-Objekt
als globale Variable definiert und irgendwo zugewiesen werden,
z.B.
shared Application as Outlook.Application
Falls wir über Sub Main starten, ansonsten gehört dieser
Code in die Initialisierung unsers Hauptformulars
Sub Main()
on Error Resume
Next
set application
= nothing
set Application
= GetObject("Outlook.Application")
if Application
is Nothing then set Application=CreateObject("Outlook.Application")
... Starten unsers
Programms
end Sub
Eine gute Möglichkeit, ohne Lesen der Dokumentation herauszufinden,
was man machen kann, ist das Hauptobjekt in das Überwachungsfenster
zu platzieren und sich die Eigenschaften anzusehen, wir
können uns dann interaktiv alle Ordner, Felder usw. ansehen
und daraus einen Programmcode entwickeln. An einer interessanten
Stelle kann dann per F1-Taste die Hilfe für dieses Objekt
ausgegeben werden, dazu muss eventuell die VBA-Hilfe nochmals
von der Office-CD nachinstalliert werden.
Kapitel 1 Selektionen
Zugriff auf
die Selektion |
Viele
Dinge lassen sich mit den aktuell in Outlook ausgewählten
Elementen machen. Zum Beispiel Exportieren, Ausdrucken,
Felder setzten, Versenden usw. |
Ausführen
von Scripts |
Wie
man Scripts komfortabel aufruft, zum Beispiel durch
Anpassen der Toolbar. |
Eine kleine
Projektverwaltung |
Basierend
auf den Zugriff auf die Selektion wird ein Feld
"Projekt" verwaltet um Elemente zu einem Projekt
zuordnen zu können. Mit QSearchFolders können dann
alle Elemente des Projektes automatisch in einem
Ordner angezeigt werden. In Aufgaben eingegebene
Zeiten werden zusammenaddiert.
|
Kapitel 2 Nützliche Module
GetFolder |
Auswahl eines Ordners und Abspeichern
in der Registry. |
CDO |
Das Outlook Objektmodell ist
ziemlich langsam und hat einige Nebenwirkungen,
CDO ist um einiges schneller. |
Kapitel 3 Nützliches
Erinnerungen in öffentlichen
Ordnern |
Sie wollen aus anderen Ordnern Erinnerungen
erhalten. Hier ein Script dazu. Es kopiert einfach
alle Elemente aus einem anderen Ordner in den persönlichen
Ordner. Wird nun der Erinnerungsordner der Hauptdatei
angepasst, erscheinen auch die Erinnerungen aus
anderen Datendateien.
Dieses Modul verbindet CDO mit
Outlook und kopiert Nachrichten. Es wird ein sehr
einfaches Synchronisationsprogramm geschrieben.
|
|
|
Kapitel 4 Ereignisse
Einführung in Ereignisse |
Wenn irgendetwas in Outlook passiert,
zum Beispiel eine E-Mail eintrifft, kann ein Script
ausgeführt werden. |
Sie haben neue E-Mails |
Statt einfach nur einen Ton auszugeben,
verwenden wir die Sprachausgabe um Details zur neuen
E-Mail vorlesen zu lassen. |
Kapitel 5 Formulare entwerfen
Kapitel 5.1 Formulare und VB Script
Kapitel 6 Formulare und VBA
Kapitel 5 Vom Script zum Add-In
AddIns in Visual Basic 6 |
Der Hammer: Wir nehmen genau
die Dateien aus unseren Macros und bauen ein echtes
Add-In, eine einzige DLL, welche einfach installiert
werden kann. Das beste daran, wir können weiter
am Script arbeiten und hinterher einfach das Add-In
neu kompilieren und verteilen. |
|
|
|