📡 Aktuelle Trefferliste ist gefiltert!
👀 Alles 📋 Index 📅 Zuletzt 🌐 Links

 

Outlook


Outlook Anhaenge extrahieren
Outlook Kalender Termine auf Webserver veroeffentlichen


 

Outlook



 

Outlook Anhaenge extrahieren

download

 
VBA Makro (Visual Basic for Applications) für Outlook 2003 zum extrahieren (speichern Anhänge als Datei) von Anhängen eines MailItem ins Filesystem (Laufwerk Pfad Dateiname). Die Anhänge werden anschliessend im Outlook (Exchange) in der Mail gelöscht - in einem neuen Anhang zur Mail wird aber ein (anklickbarer) Verweis mit dem Dateinamen hinterlegt - der Body (als Nur-Text) und die wesentlichen Header werden ebenfalls dokumentiert

 

Installation

Den Pfadnamen sucht man im Makro nach folgender Zeile:
'Hier wird im Dialog nach dem Ort gefragt wo gespeichert werden soll - muss schon existieren
Wenn man diesen Pfad ohnehin nie ändert, ersetze man die ganze Folgezeile durch eine simple Zuweisung anstelle jedesmal eine Dialogbox aufpoppen zu lassen, z.B.:
myOrt = "d:/user/juergen/Archive/Outlook/Anlagen/"
 

Anwendung



 

Arbeitsweise


Zumindest für Nur-Text-Mails könnte man die Hinweise zu extrahierten Anlagen auch einfach im Body der Ursprungsmail hinterlegen (einfach myItem.Body ergänzen). Für HTML/RichText-Mails ist mir das nicht gelungen (die Felder lassen sich zwar ändern, aber die Msg konnte nicht mehr gespeichert werden (als zur Nur-Text-Mail umgewandelte Nachricht schon). Liegt an der "weak Object Reference" für myItem vermute ich. Wahrscheinlich wäre nur eine Kleinigkeit zu ändern gewesen - jetzt ist es mittels externer Anlage gelöst...

 

Wen die Sicherheitsabfrage des Makros nervt



 

Hinweise


14.10.2008


 

Outlook Kalender Termine auf Webserver veroeffentlichen

download

 

Termine (inclusive Serientermine) mittels voll automatisierbarem VBscript aus einem Outlook (2003) Kalender extrahieren und in CSV-Datei zur Weiterbearbeitung bereitstellen und veröffentlichen dieser Daten als navigierbarer Monatskalender auf einem Webserver


 

Automizable Visual Basic script to extract outlook 2003 appointment items (personal calendar) into CSV-file - publishing this data in an web based calendar. Includes (nearly) all possible recurrence types of appointmentItems with handling exceptions too (deleted or modified instances of recurrence appointment items) (Sorry - further documentation in german language only!)...


update 05/2012:

Todo:

---

 

Wieso eigentlich?


Den Web-Monatskalender kann man prima mittels activeDesktop(?) in jeweils aktueller Form angezeigen lassen (Desktop-Hintergrund). Bei der Suche nach fertigen OpenSource Scripts zum exportieren haperte es immer an der ein- oder anderen Stelle. Insbesondere die Serientermine werden da - selbst bei HowTo-Artikeln auf MS-Webseiten - recht stiefmütterlich behandelt (entweder wurden nur ganz simple Serientermine - z.B. jährliche Wiederholungen - wenn überhaupt - mit extrahiert, oder die Scripte agierten schlicht fehlerhaft Beispielscript aus MS Technet - Retrieving a List of Recurring Appointments from Microsoft Outlook).

 

Prinzipielle Funktionsweise



 

Features des Datenextrakt-Scripts aus Outlook mit VBscript (Visual Basic Script)



 

Features bei der Umsetzung des Datenextraktes aus Outlook mit dem php-Script



 

Beispiel zur vollständigen Automatisierung der Vorgänge

...das Batchfile enthält z.B.:
(1) cscript vbs_outlook_terminliste.vbs
(2) c:/proginst/wput/wput -a wputlog.txt -u -B Outlook_Termin_Definitionen.csv ftp://username:passwort@ftp.irgendeine-domain.de
(3) c:/proginst/wget/wget -b -r -a wgetlog.txt -t 1 -T 30 --dns-cache=off --cache=off http://irgendeine-domain.de/somewhere/outlookkalender.php
(1) VBscript extrahiert aus den lokalen Outlookdaten den Inhalt des Ordners Kalender in eine CSVDatei
(2) WPUT transportiert die Datei mit FTP an passende Stelle auf dem Webserver - ich empfehle den UploadManager oder - besser vielleicht - ein hierfür speziell anzulegendes Incoming-Verzeichnis oder ein /tmp-Verzeichnis
(3) WGET triggert einfach nur das Script, dass die Daten auf dem Webserver passend umsetzt, man könnte auch einen cronjob o.ä. aufsetzen

Insbesondere für das WPUT bietet sich evtl. im Einzelfall eine sicherere Alternative an, bei der man z.B. eine verschlüsselte / gesicherte Verbindung nutzt und nicht das normale FTP-Protokoll...

 

Modifikationen an den bisherigen Kalenderbibliotheken


Tja, das Downloadarchiv oben ist kein \"einsatzbereites\" Paket! Wenn man schon einen lauffähigen Kalender (evtl. sogar mitsamt Wiki) von mir hat, sollte es reichen, die Dateien aus dem Archiv zu extrahieren und auf dem Webspace zu ersetzen (Anpassungen und Einstellungen nicht vergessen...) bzw. hinzuzufügen. Allen Anderen wünsche ich viel Spaß beim knobeln :->
Um den Änderungsaufwand an alten Scripten zu minimieren, ist am alten CSV-Dateiformat wenig geändert, aber ich habe zwei neue Felder angehangen. Das erste - ein Notizenfeld - davon nimmt Daten auf, die bisher so nicht vorgesehen waren (Kategorien, Angaben zu Sensitivity u.a. - siehe Scripte! - aus Outlook), das letzte Feld enthält jetzt das Last Modification Date des Terminsatzes). Übrigens: Location, Uhrzeiten und ggf. der Besprechungsstatus von Outlook-Meetings landen einfach im Subject der Termine...

 

Neuentwicklungen



 

Tipps



 

ergänzende Infos


Aus der Microsoft Outlook (c) - Onlinehilfe entnommen: Ein Outlook recurrence AppointmentItem (Serientermin) definiert sich über folgende Eigenschaften:

'===========================================================================
'RecurrenceTyp    Eigenschaften      Beispiel 
'===========================================================================
'0 olRecursDaily    Interval           Alle N Tage 
'                   DayOfWeekMask      Jeden Dienstag, Mittwoch und Donnerstag 
'  
'2 olRecursMonthly  Interval           Alle N Monate 
'                   DayOfMonth         Der N-te Tag im Monat 
'                  
'3 olRecursMonthNth Interval           Alle N Monate 
'                   Instance           Der N-te Dienstag 
'                   DayOfWeekMask      Jeden Dienstag und Mittwoch 
'                   
'1 olRecursWeekly   Interval           Alle N Wochen 
'                   DayOfWeekMask      Jeden Dienstag, Mittwoch und Donnerstag 
'  
'5 olRecursYearly   DayOfMonth         Der N-te Tag im Monat 
'                   MonthOfYear        Februar 
'  
'6 olRecursYearNth  Instance           Der N-te Dienstag 
'                   DayOfWeekMask      Dienstag, Mittwoch, Donnerstag 
'                   MonthOfYear        Februar 
'===========================================================================
'Legende: 
'Instance         1-4(5), 6=Letzter
'DayOfWeekMask Or 1=So, 2=Mo, 4=Di, 8=Mi, 16=Do, 32=Fr, 64=Sa
'DayOfMonth       1-31
'MonthOfYear      1-12
'NoEndDate        true/false
'PatternStartDate Datum
'PatternEndDate   Datum oder... 
'Occurrences      ...Anzahl von Wiederholungen
'===========================================================================
...setzt mein Script um in eine für die php-Scripte / Kalenderlib voradaptierte Form (weil sich jetzt die meisten fragen werden wo denn hier bitteschön die/eine Verbesserung gegenüber dem Outlook-Datenmodell vorliegt)...
'Minidoku
'Subject              Betreff
'Location             Ort
'Start                Beginndatum und ggf. (nicht immer!) Uhrzeit  tt.mm.jjjj hh:mm - betrifft auch alle anderen DatFelder
'End                  Endedatum und ggf. Uhrzeit - der 31.12.4500  23:59:00 scheint das \"Highdate\" zu sein (=ohne Ende)
'AllDayEvent          AllDayEvent (ganztägig) oder leer
'Duration             Dauer in Minuten
'ReminderMinutes      Erinnern x Minuten vor dem Termin
'Categories           Kategorien, getrennt durch Komma(!)
'Importance           Wichtigkeit/Prio, sofern abweichend von Normal
'MeetingStatus        Status des Meetings
'ResponseStatus       Antworten auf Meeting-Anfrage
'Sensitivity          Vertraulichkeit (z.B. \"Privat\"-Schalter)
'LastModificationTime zuletzt geändert am...

'Serie                S, wenn Serientermin, genau wie alle folgenden Felder nur für Terminserien relevant seind:

'Ausnahmen            zu/von einer Serie (gelöscht oder geändert) nach folgendem Schema:
'Trenn1 ^             trennt einzelne Ausnahmeregeln einer Serie
'Trenn2 °             trennt die Felder einer Ausnahme
'isDeleted°21.12.2006^... an diesem Tag findet die Terminserie nicht statt
'isModified°Datum°Start°End°Duration°AllDayEvent°Subject°Location^ ... an diesem Tag ist etwas anders

'StartSerie        Startdatum der Terminserie
'AllDayEvent_Time  AllDayEvent oder Startzeit
'EndSerie          Endedatum der Terminserie
'Type              Typ der Wiederholung:       DAILY   PERIOD   WEEKLY   MONTHLY   MONTHLYnTH  YEARLY   YEARLYnTH
'Monat_Interval    Monat oder Intervall           -     Tage    Interval  Interval   Interval   Monat    Monat
'Day_Instanz       Tag oder Instanznummer         -       -        -        Tag      1-4/L (Wo)  Tag     1-4/L (Wo)
'DayOfWeekMask     Maske betroffener Wochentage   -       -       Maske      -         Maske      -      Maske

'Interval:   Gibt das regelmäßige Intervall an, z.B. bei Wochenterminen ist 1=jede Woche, 2=alle zwei Wochen...
'1-4/L (Wo): Gibt bezogen auf den Wochentag die n.te Woche im Monat an (L=letzte)
'Maske:      Siebenstelliges Feld (Montag-Sonntag), \"MDMDF--\" z.B. wäre Montags-Freitags, \"---D---\" wäre Donnerstags...
'isModified: Beachten, dass auch andere Felder geändert sein könnten (z.B. Meeting..., Categories...)
...diverse weitere Infos finden sich im Quelltext der Scripte, die im übrigen natürlich vor erstem Einsatz angepasst werden müssen (Pfade, Dateinamen etc.).

Wie man sieht, habe ich beim Entwurf nicht ''aufs Bit geschaut'' - natürlich kann man da einiges optimieren (ist bei einer geringen Anzahl an Terminen aber nicht wirklich relevant)...
13.12.2020