Autor: Rainer Beckerbauer (Ramses) --- Aus Excel VBA - Gruppe:
Outlook & ExcelOutlook 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.
|
|
| A | B | C | 1 | Ordner Konstanten | Version | Wert | 2 | olFolderDeletedItems | | 3 | 3 | olFolderOutbox | | 4 | 4 | olFolderSentMail | | 5 | 5 | olFolderInbox | | 6 | 6 | olFolderCalendar | | 9 | 7 | olFolderContacts | | 10 | 8 | olFolderJournal | | 11 | 9 | olFolderNotes | | 12 | 10 | olFolderTasks | | 13 | 11 | olFolderDrafts | | 16 | 12 | olPublicFoldersAllPublicFolders | | 18 | 13 | olFolderConflicts | XP/2003 | 19 | 14 | olFolderSyncIssues | XP/2003 | 20 | 15 | olFolderLocalFailures | Nur mit Exchange | 21 | 16 | olFolderServerFailures | Nur mit Exchange | 22 | 17 | olFolderJunk | XP/2003 | 23 | |
|
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