Microsoft Office. Outlook Add-in und Add-on Software.

 

Zeiterfassung

 

 VBA; Programmierung mit Outlook - Einleitung

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.