Autor: Rainer Beckerbauer (Ramses)  --- Aus Excel VBA - Gruppe: Outlook & Excel

Outlook und Excel (1) Grundlagen und Einführung

Autor: Rainer Beckerbauer (Ramses) - Erstellt: --      - Letzte Revision: --Gruppenthema: 6 Folgen 1 2 3 4 5 6 Sie sind in Folge:1

EXCEL und Outlook - Das fantastische Duo der Office Suite

Die Betonung liegt auf Microsoft Outlook,... und nicht Microsoft Outlook Express !!!
Dies sind zwei grundsätzlich unterschiedliche Programme, auch wenn sie beide von Microsoft sind.
Schon aus der Tatsache dass die Versionen Outlook 97 völlig unterschiedlich zu Outlook 2000 ist, erweiterte Microsoft mit Outlook XP bzw. mit Outlook 2003 die Syntax und die Möglichkeiten erheblich. Es ist nahezu unmöglich hier alle Eigenheiten zu berücksichtigen.
Die Beispiele sollen daher nur Basischarakter haben, und Ihnen den grundsätzlichen Aufbau näherbringen. Sie müssen daher die spezifischen Eigenheiten der von Ihnen verwendeten Version berücksichtigen. Wo immer möglich, weise ich auf grundsätzliche Probleme der Versionen hin, aber Fehler sind nicht ausgeschlossen

Alle Beispiele dieser Lektion wurden unter Outlook XP und 2003 getestet und geprüft.

Early-Binding / Late Binding

„Binding" bedeutet grundsätzlich „Verbinden". In VBA wird darunter verstanden, das Object-Modell der fremden Anwendung (Outlook) der Host-Anwendung (EXCEL) zur Verfügung zu stellen.
Um Outlook zu „automatisieren" muss EXCEL also für den Zugriff auf die Objekte einer fremden Anwendung vorbereitet werden und wissen welche Objekte in dieser Anwendung zur Verfügung stehen.
Um die Konstanten und Methoden der jeweiligen Anwendung in EXCEL zu verwenden, muss ein Verweis auf die Objektbibliothek (Im VB-Editor unter „Extras - Verweise") der jeweiligen Version !! ("Microsoft Outlook 11.0", wobei 11.0 die Version der von Ihnen verwendeten Outlook Version ist) gesetzt werden.




Early Binding

Hier unterscheidet man die Anbindung der fremden Objekte während der Entwicklung (Early Binding) und deren Anbindung während der Laufzeit .

Die erste Variante erlaubt den Zugriff auf die Eigenschaften und Methoden der entsprechenden Objekte bereits während der Entwicklung in VBA, eignet sich also vor allem für Anfänger.

Das bedeutet, dass Sie auch bei der Formulierung von Code durch die automatischen Auflistungen (Intellisense) unterstützt werden. Es soll nicht verhehlt werden, dass auch Fortgeschrittene Programmierer den Vorteil von „IntelliSensing" nutzen.

Codebeispiel EarlyBinding

Sub EarlyBinding()
    Dim MyOlApp As Outlook.Application
    Set MyOlApp = New Outlook.Application
    MsgBox MyOlApp.Name
End Sub







Late Binding

Bei der zweiten Variante wird die Objektvariable, welche die andere Anwendung repräsentiert, als Objekt deklariert.
Die Eigenschaften und Methoden des Objekts stehen erst während der Laufzeit zur Verfügung.
Sie können zwar die Eigenschaften und Methoden verwenden, haben aber keine Möglichkeit, die Syntax zu überprüfen und dürfen keine Object Konstanten benutzen (z.B. „CreateItem(olMaiItem)" oder „Create(olAppointmentItem)" steht nicht zur Verfügung, stattdessen müssen Sie „CreateItem(0) oder CreateItem(1) verwenden)


CodeBeispiel LateBinding

Sub LateBinding()
    Dim MyOlApp As Object
    Set MyOlApp = CreateObject("Outlook.Application")
    MsgBox MyOlApp.Name
End Sub






Warum nun 2 Methoden

Beide Methoden haben Ihre Vor- und Nachteile.
LateBinding ist langsamer als EarlyBinding, auch in der Ausführung, weil die Bindung der beiden Applikation Zeit benötigt.
Dagegen steht der Vorteil von EarlyBinding, dass sowohl beim Intellisensing (automatische Erweiterung der Befehlsfolge im VB-Editor) die möglichen Objekte zur Verfügung stehen, wie auch im Objekt-Explorer von EXCEL. Ein schnelles Auffinden von Methoden / Ereignissen ist damit gegeben.

Zugegeben

MyOlApp.GetDefaultFolder(olFolderCalender)

Sieht schon wesentlich besser aus, und lässt sich auch besser lesen,… aber

MyOlApp.GetDefaultFolder(9)

Funktioniert dafür in JEDER Outlook Version.
Down-Kompatibilät hat MS zwar versprochen,…. Aber was MS unter Kompatibilät versteht, erleben wir ja jeden Tag. Daher sind sie mit LateBinding auf der sicheren Seite.

Alternative:

Entwickeln Sie mit EarlyBinding,…. Aber wenn der Code läuft, verwenden Sie die Konstanten-Werte und wechseln zu LateBinding 


Für die Beispiele dieser Lektionen können !! Sie Early Binding einsetzen und dafür einen Verweis auf die Outlook-Objektbibliothek in EXCEL einrichten.
Dazu führen Sie den Menüpunkt Extras - Verweise aus, der Ihnen nur innerhalb der Entwicklungsumgebung von EXCEL zur Verfügung steht und aktivieren den Eintrag „Microsoft Outlook 11.0 Object Library" (Die „11" bitte durch ihre entsprechende Outlook-Version ersetzen.
Jetzt können Sie auf alle Outlook-Objekte, Eigenschaften (Konstanten), Methoden während der Entwicklung zugreifen, so als wären es EXCEL eigene Objekte.

Auch wenn Early-Binding offensichtlich einen grossen Vorteil bietet,…spätestens wenn Sie Ihre Datei weitergeben möchten, werden Sie Probleme bekommen, wenn auf dem Zielrechner der Verweis auf die Outlook-Bibliothek nicht gesetzt ist. Sie sollten daher in Ihrer VBA-Karriere sukzessive auf die Verwendung der entsprechenden Konstantenwerte wechseln.

Alle Lektionen werden mit Late-Binding umgesetzt.

Auch wenn Microsoft vor der Verwendung von Late-Binding mit Outlook 2003 explicit abrät (die Konstanten sind hier abhängig von der Installationsreihenfolge),… konnte ich noch keine Probleme feststellen. Aber ich habe auch nur einen „kleinen" Laptop.
Vermutlich ist dies bei der Verwendung von MS Exchange eher relevant.


Konstanten

Hier zum Einstieg ein paar der wichtigsten Konstanten die wir in den nächsten Lektionen verwenden werden.

 ABC
1Ordner KonstantenVersionWert
2olFolderDeletedItems  3
3olFolderOutbox  4
4olFolderSentMail  5
5olFolderInbox  6
6olFolderCalendar  9
7olFolderContacts  10
8olFolderJournal  11
9olFolderNotes  12
10olFolderTasks  13
11olFolderDrafts  16
12olPublicFoldersAllPublicFolders  18
13olFolderConflictsXP/200319
14olFolderSyncIssuesXP/200320
15olFolderLocalFailuresNur mit Exchange21
16olFolderServerFailuresNur mit Exchange22
17olFolderJunk XP/200323
 


Die in den Lektionen am häufigsten verwendeten Objekt-Konstanten:

 
  A B
1 Object Konstante Wert
2 olMailItem 0
3 olAppointmentItem 1
4 olContactItem 2
5 olTaskItem 3
6 olJournalItem 4
7 olNoteItem 5
8 olPostItem 6
9 olDistributionListItem 7
 


Eine Besonderheit von Outlook sei hier nur am Rande erwähnt. Entgegen der allgemein angewandten Reihenfolge der Wochentage (1-7) verwendet Outlook hier noch ein paar spezielle Werte 
 
  A B
1 Weekdays Konstante Wert
2 olSunday 1
3 olMonday 2
4 olTuesday 4
5 olWednesday 8
6 olThursday 16
7 olFriday 32
8 olSaturday 64
 





Sollten also Berechnungen von in EXCEL importierten/eingelesenen Datumswerten mit „Select Case Weekday()" nicht den gewünschten Erfolg bringen,… rufen Sie sich diese Tabelle nochmals in Erinnerung

Viel Spass




Weitere Artikel der Gruppe: Outlook & Excel Aus Excel VBA
Nach oben