Top-Themen

AppleEntwicklungHardwareInternetLinuxMicrosoftMultimediaNetzwerkeOff TopicSicherheitSonstige SystemeVirtualisierungWeiterbildungZusammenarbeit

Aktuelle Themen

Administrator.de FeedbackApache ServerAppleAssemblerAudioAusbildungAuslandBackupBasicBatch & ShellBenchmarksBibliotheken & ToolkitsBlogsCloud-DiensteClusterCMSCPU, RAM, MainboardsCSSC und C++DatenbankenDatenschutzDebianDigitiales FernsehenDNSDrucker und ScannerDSL, VDSLE-BooksE-BusinessE-MailEntwicklungErkennung und -AbwehrExchange ServerFestplatten, SSD, RaidFirewallFlatratesGoogle AndroidGrafikGrafikkarten & MonitoreGroupwareHardwareHosting & HousingHTMLHumor (lol)Hyper-VIconsIDE & EditorenInformationsdiensteInstallationInstant MessagingInternetInternet DomäneniOSISDN & AnaloganschlüsseiTunesJavaJavaScriptKiXtartKVMLAN, WAN, WirelessLinuxLinux DesktopLinux NetzwerkLinux ToolsLinux UserverwaltungLizenzierungMac OS XMicrosoftMicrosoft OfficeMikroTik RouterOSMonitoringMultimediaMultimedia & ZubehörNetzwerkeNetzwerkgrundlagenNetzwerkmanagementNetzwerkprotokolleNotebook & ZubehörNovell NetwareOff TopicOpenOffice, LibreOfficeOutlook & MailPapierkorbPascal und DelphiPeripheriegerätePerlPHPPythonRechtliche FragenRedHat, CentOS, FedoraRouter & RoutingSambaSAN, NAS, DASSchriftartenSchulung & TrainingSEOServerServer-HardwareSicherheitSicherheits-ToolsSicherheitsgrundlagenSolarisSonstige SystemeSoziale NetzwerkeSpeicherkartenStudentenjobs & PraktikumSuche ProjektpartnerSuseSwitche und HubsTipps & TricksTK-Netze & GeräteUbuntuUMTS, EDGE & GPRSUtilitiesVB for ApplicationsVerschlüsselung & ZertifikateVideo & StreamingViren und TrojanerVirtualisierungVisual StudioVmwareVoice over IPWebbrowserWebentwicklungWeiterbildungWindows 7Windows 8Windows 10Windows InstallationWindows MobileWindows NetzwerkWindows ServerWindows SystemdateienWindows ToolsWindows UpdateWindows UserverwaltungWindows VistaWindows XPXenserverXMLZusammenarbeit
GELÖST

Outlook Kalender ics per VBA Script automatisch per Email verschicken

Frage Entwicklung

Mitglied: fliegerx11

fliegerx11 (Level 1) - Jetzt verbinden

07.08.2014, aktualisiert 09.08.2014, 9230 Aufrufe, 30 Kommentare

Hallo zusammen,

leider hat Microsoft das veröffentlichen seid April eingestellt.

Ich würde gerne meinen Outlook Kalender mit einem geplanten Task automatisch als *ics Datei verschicken.
Kann mir bitte einer beim VBA Script behilflich sein.

Wenn möglich sollen die schon einmal versendeten Kalendereinträge nicht doppelt verschickt werden.
Geht sowas?

Vielen Dank
Dirk
30 Antworten
Mitglied: colinardo
08.08.2014, aktualisiert 28.08.2014
Hallo Dirk, Willkommen auf Administrator.de!
Kein Problem. Mit folgendem VBS-Script kannst du dieses Ziel erreichen. In diesem Beispiel gehe ich einfach mal davon aus, dass du jede Woche einmal die Termine verschickst und die ICS-Datei dann die Termine für diese Woche enthält. Start- und Enddatum lassen sich in Zeile 6 und 7 festlegen. In Zeile 9 trägst du noch deine E-Mail-Adresse ein, feddich.
Outlook-Kalender als ICS-Datei via Mail verschicken (VBS)
01.
On Error Resume Next 
02.
Dim objCal, objOL, objMail 
03.
Set objOL = GetObject(, "Outlook.Application")  
04.
If Err.Number <> 0 then 
05.
  Set objOL = CreateObject("Outlook.Application") 
06.
End if 
07.
Set objCal = objOL.GetNamespace("MAPI").GetDefaultFolder(9).GetCalendarExporter    'Standardkalender Exporter holen 
08.
With objCal 
09.
    .CalendarDetail = 2    'FullDetails 
10.
    .StartDate = Date 
11.
    .EndDate = Date + 6 
12.
    Set objMail = .ForwardAsICal(1)    'Als Ereignisliste darstellen 
13.
    objMail.To = "mail@domain.de" 
14.
    objMail.Subject = "Termine vom " & .StartDate & " bis " & .EndDate 
15.
    objMail.Send 
16.
End With 
17.
Set objCal = Nothing 
18.
Set objMail = Nothing 
19.
Set objOL = Nothing
Grüße Uwe
Bitte warten ..
Mitglied: fliegerx11
08.08.2014 um 21:22 Uhr
Hallo Uwe,

erst mal vielen Dank das Du mir so schnell geholfen hast.
Gerade fällt mir aber auf, das sobald ich dieses mehrfach starte jedes mal die Termine doppelt im Kalender vorkommen.

Kann man da auch noch was dran machen?

Gruß
Dirk
Bitte warten ..
Mitglied: colinardo
LÖSUNG 08.08.2014, aktualisiert 09.08.2014
Zitat von fliegerx11:

Hallo Uwe,

erst mal vielen Dank das Du mir so schnell geholfen hast.
Gerade fällt mir aber auf, das sobald ich dieses mehrfach starte jedes mal die Termine doppelt im Kalender vorkommen.

Kann man da auch noch was dran machen?
Ich hatte ja oben geschrieben das du es in Zeitabständen aufrufen musst. Im Moment exportiert es ja die kommenden 6 Tage (Aufrufdatum +6 Tage) du musst also den gewünschten Export-Zeitraum an das Aufrufintervall anpassen !
In dem Beispiel müsste der Taskplaner also alle 7 Tage das Script aufrufen.

Möglich ist hier leider nur die Angabe von Zeiträumen und nicht expliziter Termine!

Ansonsten kann man es nur manuell mit eigener Herstellung einer ICS-Datei und einem GUID Abgleich der Termine machen, was einen nicht unerheblichen Aufwand bedeutet !! Machbar ist das, aber von mit nicht mehr kostenlos zu haben
Bitte warten ..
Mitglied: colinardo
09.08.2014, aktualisiert um 11:20 Uhr
Zitat von fliegerx11:.
Aber wenn ich dich richtig verstanden habe muß ich ja jedes mal im Script händisch den Datumsbereich eintragen oder ?
falsch verstanden, wenn du das Zeitinterval des Scriptaufrufes an das Interval im Script anpasst nicht !

Was würde das denn ungefähr kosten?
vermutlich mehr als das es sich noch für dich lohnen würde. Weiche auf ein hosted Exchange Konto aus, dann hast du alles an einem Ort und nutzt Outlook wofür es geschaffen wurde, zur Zusammenarbeit mit einem Exchange. Dann hast du auf allen Endgeräten immer den selben Datenbestand, und musst nicht mit unzuverlässiger Synchronisierung arbeiten.

Außerdem, wie willst du mit ICS-Dateien Terminlöschungen handhaben, wenn nur nicht schon verschickte Termine übertragen werden sollen ?? Da stimmt was an deinem Konzept nicht.

Viele Grüße Uwe
Bitte warten ..
Mitglied: yemmiburn
28.08.2014 um 19:38 Uhr
Hallo
Ich muss was ähnliches machen.
Ich muss täglich von einem Freigegebenen Kalender die Termine meinem Team per Mail mitteilen.
Sind keider zu faul selber im Kalender nachzuschauen.

Bis jetzt habe ich immer die termine per Hand abgetippt, bis ich heute auf die Möglichkeit gestossen bin, den Kalender per
Mail versenden zu können.

Is es ev. sogar möglich jeden Arbeitstag automatisch um 7.30 den aktuellen Tag per Mail an eine Gruppe zu vesenden?

Besten Dank
Bitte warten ..
Mitglied: colinardo
28.08.2014, aktualisiert um 21:31 Uhr
Moin yemmiburn, Willkommen auf Administrator.de!
Zitat von yemmiburn:
Is es ev. sogar möglich jeden Arbeitstag automatisch um 7.30 den aktuellen Tag per Mail an eine Gruppe zu vesenden?
Sicher, Zeile 4 die entsprechende Referenz zum Kalender herstellen und in Zeile 7 das + 6 entfernen, E-Mail-Adresse der Gruppe in Zeile 9 einsetzen, feddich.
Wie die Referenz zum Kalender auszusehen hat, kommt darauf an wo genau der Kalender liegt (Öffentlicher Ordner / Shared Mailbox /etc.). Wenn du hier etwas konkreter wirst kann ich dir Morgen ein Beispiel liefern.
Das ganze Script dann als VBS in den Taskplaner gepackt und zur gewünschten Zeit ausführen lassen.

Grüße Uwe
Bitte warten ..
Mitglied: yemmiburn
28.08.2014 um 20:41 Uhr
Hey das geht aber schnell hier.

Hoffe ich bekomme das umgesetzt.

Der betreffende Kalender wird im Outlook als freigegebener Kalender angezeigt mit dem Namen "Technik Bürki".
Wo kann ich nachschauen wo der Kalender liegt, wegen der Referenz?

Als Empfänger kann ich entweder eine Gruppe (Infomail) machen, oder die 5-6 Adressen im VBS Code reinschreiben.
Mir wäre es lieber in den Code Zeile 9 zu schreiben. Muss ich da per Semikolon trennen oder jeweils eine neue Zeile machen?

Gruss Tom
Bitte warten ..
Mitglied: colinardo
28.08.2014, aktualisiert 03.09.2014
Hi Tom,
dann kannst du es mal hiermit versuchen:
(E-Mail-Adressen wie du richtig erkannt hast lassen sich mit Semikolon voneinander trennen)
01.
On Error Resume Next 
02.
Dim objCal, objOL, objMail, objNS, objCalRec 
03.
Set objOL = GetObject(, "Outlook.Application")  
04.
If Err.Number <> 0 then 
05.
  Set objOL = CreateObject("Outlook.Application") 
06.
End if 
07.
Set objNS = objOL.GetNamespace("MAPI") 
08.
Set objCalRec = objNS.CreateRecipient("Technik Bürki") 
09.
objCalRec.Resolve 
10.
If objCalRec.Resolved then 
11.
  Set objCal = objNS.GetSharedDefaultFolder(objCalRec, 9).GetCalendarExporter 
12.
Else 
13.
  msgbox "Kontakt des Freigegebenen Kalenders wurde nicht gefunden!", vbExclamation 
14.
  wscript.quit 
15.
End if 
16.
 
17.
With objCal 
18.
    .CalendarDetail = 2    'FullDetails 
19.
    .StartDate = Date 
20.
    .EndDate = Date 
21.
    Set objMail = .ForwardAsICal(1)    'Als Ereignisliste darstellen 
22.
    objMail.To = "mail@domain.de;mail2@domain.de" 
23.
    objMail.Subject = "Termine vom " & .StartDate 
24.
    objMail.Send 
25.
    msgbox "Mail wurde gesendet!", vbInformation 
26.
End With 
27.
Set objCal = Nothing 
28.
Set objMail = Nothing 
29.
Set objOL = Nothing 
30.
Set objNS = Nothing
Grüße Uwe
Bitte warten ..
Mitglied: yemmiburn
28.08.2014 um 22:27 Uhr
Hallo Uwe

Supper, vielen Dank.
Habs per Remote auf dem Server getestet, funktioniert per Doppelklick auf die vbs Datei.
Kommen zwar noch 2 Abfragen ob der zugriff auf das Outlook gewollt ist oder nicht.
Dies ist weil ich ev. auf dem Remoteserver bin.

Werde es noch versuchen in den Aufgabenplaner meines Arbeitsrechners zu übernehmen,
aber schon so ist es eine sehr gute Erleichterung.

Die vbs Datei kann ja so auch mal mein Stellvertreter Doppelklicken.

Nun aber ab ins Bett muss morgen früh raus.
Tom
Bitte warten ..
Mitglied: colinardo
28.08.2014, aktualisiert um 22:32 Uhr
Zitat von yemmiburn:
Habs per Remote auf dem Server getestet, funktioniert per Doppelklick auf die vbs Datei.
Kommen zwar noch 2 Abfragen ob der zugriff auf das Outlook gewollt ist oder nicht.
Die kannst du eliminieren (mind. Outlook 2007 benötigt) indem du Outlook mal als Administrator startest und dann im Sicherheitscenter(Trust-Center) von Outlook unter Programmgesteuerter Zugriff die Option "Bei verdächtigen Aktionen nie Warnungen anzeigen" aktivierst.

Gut's Nächtle
Uwe
Bitte warten ..
Mitglied: yemmiburn
29.08.2014 um 17:02 Uhr
OK, habs auf dem Arbeitsrechner getestet, da mommt die Abfage nicht und geht ohne Probleme.
Die Probleme kommen dann aber von unserem Exchange Server.

Da wir ein gebastel in der Firma haben, und die Mails nicht vom Exchange Server hohlen, sondern von pop im Internet.
Versucht nun der Server die Mailadressen im Scribt intern zu versenden, was leider nicht geht.

Wir haben dann sogar noch eine extra Mail Adresse eingerichtet und dort Weiterlitungen auf die 8 Team Empfänger geregelt.
Aber auch das geht nicht, der will einfach nicht rausmailen.
Das was aber geht, ist wenn ich meine Private Mailadresse nehme und dort eine Regel einricht uns es wieder in die Firma sende.
Dabei gibts aber ein anderes Problem das mein Webmail keien 8 Weiterleitungs-adressen händeln kann. (mit 2 gehts noch)

Bin nun am überlegen ob ich einfach 4 Adressen eröffne (habe ja unlimited) und dann jeweisls auf je 2 Mails weiterleite.
Ist zwar ein gebastel aber würde funktionieren.

Gibt es ev. eine Möglichkeit z.B. pop vor die Mailadressen zu schreiben dass es ev. ohne die Umleitung zu mir Privat klappen würde?
Bitte warten ..
Mitglied: colinardo
29.08.2014, aktualisiert um 17:07 Uhr
Zitat von yemmiburn:
Da wir ein gebastel in der Firma haben, und die Mails nicht vom Exchange Server hohlen, sondern von pop im Internet.
Was soll das mit dem Versenden zu tun haben ? Sendet Ihr über Smarthost oder stellt der Exchange die Mails selber zu ?
Gibt es ev. eine Möglichkeit z.B. pop vor die Mailadressen zu schreiben dass es ev. ohne die Umleitung zu mir Privat klappen
würde?
Exchange vernünftig einrichten lautet die Devise !
Bitte warten ..
Mitglied: yemmiburn
29.08.2014 um 17:30 Uhr
Wir wir genau versenden, kann ich Dir nicht sagen, weiss nur dass es nicht sauber eingerichtet ist.

Ich kann z.B. nicht das Globale Adressbuch benützen, muss ein eigense anlegen.
Auch das versenden per Remote zu Firmenadressen ist nicht möglich, diese Mails kommen nie an.

Habe schon oft Beispiele aufgezählt wie es andernorts geht, leider kriegt es auch eine externe Firme nicht hin
das sauber einzustellen. Somit muss ich mir mit dem Behelfen was ich habe.
Bitte warten ..
Mitglied: colinardo
29.08.2014, aktualisiert um 17:36 Uhr
Dann bau dir dein eigenes Konto im Profil von Outlook ein, setzt das als Standard-Konto und versende die Mails darüber wenn eure Admins das nicht gebacken kriegen. Sorry, aber ohne mehr Info über das System kann ich hier nicht weiterhelfen.
Bitte warten ..
Mitglied: yemmiburn
29.08.2014 um 19:45 Uhr
Kein Problem, Du hast schon mehr als genug geholfen mit dem Scribt.
Habe nun die Weiterleitung über 2 Private Adressen gemacht, kann für mich so bleiben.

Nochmals Besten Dank.
Bitte warten ..
Mitglied: yemmiburn
03.09.2014 um 06:30 Uhr
@colinardo
Kannst Du mir bitte noch eine Meldung einbauen, dass das Mail gesendet wurde.
Denn ich versende es meisten per Doppelklick und nicht als Aufgabe.
Danke
Bitte warten ..
Mitglied: colinardo
03.09.2014 um 08:12 Uhr
Zitat von yemmiburn:

@colinardo
Kannst Du mir bitte noch eine Meldung einbauen, dass das Mail gesendet wurde.
Denn ich versende es meisten per Doppelklick und nicht als Aufgabe.
s.o. Zeile 25

Grüße Uwe
Bitte warten ..
Mitglied: fliegerx11
06.09.2014 um 17:05 Uhr
Hallo nocheinmal zusammen,

besteht noch die Möglichkeit nur neue Termine als ICS Datei zu verschicken?
Ich habe hier etwas gefunden was zur Lösung beitragen könnte.
Ich selber aber nicht weiß ob dies mit eingebaut werden kann.

http://www.vboffice.net/sample.html?lang=de&mnu=2&smp=35&cm ...

Wäre echt cool wenn das noch funktionieren würde.

Gruß
Dirk
Bitte warten ..
Mitglied: colinardo
06.09.2014, aktualisiert um 17:15 Uhr
Zitat von fliegerx11:

besteht noch die Möglichkeit nur neue Termine als ICS Datei zu verschicken?
Wie bereits erwähnt ist dies nur durch schreiben einer benutzerdefinierten Routine zu implementieren die die ICS Dateien selber erzeugen und über alle Termine Buch führen muss die bereits verschickt wurden.

Denk mal über ein hosted Exchange Konto nach !!! Dann ist Synchronisierung bald ein Fremdwort für dich ...
Bitte warten ..
Mitglied: fliegerx11
06.09.2014 um 17:22 Uhr
Hallo Uwe,

ein hosted Exchange geht leider nicht. Glaube ich zumindestens.
Ich arbeite bei einer Behörde und ich kann in meinem Outlook keine eigenen Einstellungen machen.
Das einzige was ich im April noch konnte war meinen Kalender veröffentlichen. Das war die einzigste Lücke die Termine auf meinem privaten Iphone darzustellen. Da ich hauptsächlich dienstliche Termine habe muss ich den Dienstkalender nutzen. Meine paar privaten Termine trage ich dort auch ein.
Wie gesagt bis April diesen Jahres war alles super. Aber Microsoft hat es ja abgestellt.
Jetzt dachte ich halt an diese Lösung.
Ärgerlich ist allerdings das Termine jetzt immer doppelt und dreifach auf meinem privaten Google Mail Konto erscheinen.

;(((((((((
Gruß Dirk
Bitte warten ..
Mitglied: colinardo
06.09.2014, aktualisiert um 17:38 Uhr
Dann sollte diese Behörde mal darüber nachdenken Ihren Mitarbeitern die Möglichkeit anzubieten, OWA oder Exchange Anywhere zu nutzen (mach doch mal den Vorschlag, das hat heutzutage fast jede Firma). Aber ich kenn die Tuppen dort, Behörden sind da meistens vollkommen Rückständig was moderne Technik anbelangt . Sei froh das du nicht noch mit einer Schreibmaschine abgefertigt wirst

Grüße Uwe
Bitte warten ..
Mitglied: colinardo
08.09.2014, aktualisiert 18.12.2015
So,
hatte diesen Sonntag mal etwas Zeit und habe dir folgenden Code gebastelt. Er exportiert nur neue oder seit dem letzten Export geänderten Termine als ICS und verschickt diese per Mail. Was dir klar sein sollte ist, das Terminlöschungen natürlich nicht mit ICS funktionieren !! Die Information ob und wann ein Termin bereits exportiert wurde, wird in einer benutzerdefinierten Eigenschaft des Termins gespeichert, für den User sind diese Infos aber unsichtbar. Anhand dieser Infos entscheidet der Code ob ein Termin per Mail verschickt wird oder nicht.

Den Zeitraum in Tagen bis zu dem Termine vom aktuellen Datum aus exportiert werden gibt man in Zeile 3 an, und die Empfänger-Mailadresse in Zeile 5.
Im jetzigen Zustand werden die Termine aus dem Outlook-Standard-Kalender exportiert.
01.
Dim dic, dateStart, dateEnd, app, folderCalendar, prop, objOL, intNumDays, objMail, strEmail, objShell, fso 
02.
'definiert den Zeitraum in Tagen von Heute an, aus welchem Termine exportiert werden 
03.
intNumDays = 90 
04.
'E-Mail-Adresse des Empfängers 
05.
strEmail = "user@domain.de" 
06.
'------------------------------------------------- 
07.
On Error Resume Next 
08.
Set dic = CreateObject("Scripting.Dictionary") 
09.
Set fso = CreateObject("Scripting.FilesystemObject") 
10.
Set objOL = GetObject(, "Outlook.Application")  
11.
Set objShell = CreateObject("Wscript.Shell") 
12.
strTempDir = objShell.ExpandEnvironmentStrings("%temp%") 
13.
If Err.Number <> 0 then 
14.
  Set objOL = CreateObject("Outlook.Application") 
15.
End if 
16.
 
17.
'Startdatum für den Terminexport 
18.
dateStart = Date 
19.
'Enddatum für den Terminexport 
20.
dateEnd = DateAdd("d", intNumDays, dateStart) 
21.
 
22.
Set folderCalendar = objOL.GetNamespace("MAPI").GetDefaultFolder(9) 
23.
'Termine auf den angegebenen Zeitraum beschränken und Serientermine ausschließen (sind im iCal-Format nicht möglich) 
24.
For Each app In folderCalendar.items.Restrict("[Start] >= '" & FormatDateTime(dateStart,2) & " " & FormatDateTime(dateStart,4) & "' AND [Start] <= '" & FormatDateTime(dateEnd,2) & " " & FormatDateTime(dateEnd,4) & "' AND [IsRecurring] = False") 
25.
    'benutzerdefinierte Eigenschaft suchen 
26.
    Set prop = app.UserProperties.Find("googlecalexport") 
27.
    If Not prop Is Nothing Then 
28.
    	'wenn sie gefunden wurde vergleiche das Datum der Eigenschaft mit dem Datum der letzten Modifikation 
29.
    	'wurde Termin seit dem letzen Export geändert, exportiere ihn erneut 
30.
        If prop.Value < app.LastModificationTime Then 
31.
            dic.Add app,"" 
32.
            app.UserProperties("googlecalexport").Value = DateAdd("s", 10, Now()) 
33.
            app.Save 
34.
        End If 
35.
    Else	' benutzerdefinierte Eigenschaft wurde nicht gefunden, Termin ist also neu 
36.
        dic.Add app,"" 
37.
        Set prop = app.UserProperties.add("googlecalexport", 5) 
38.
        prop.Value = DateAdd("s", 10, Now()) 
39.
        app.Save 
40.
    End If 
41.
Next 
42.
If dic.Count > 0 Then	'wenn Termine für den Export vorhanden sind erstelle eine neue Mail mit dem ICS-Kalender als Attachment 
43.
    ExportAppointmentCollectionAsICal dic, strTempDir & "\termine.ics" 
44.
    Set objMail = objOL.CreateItem(0) 
45.
    objMail.Subject = "Termine von " & dateStart & " bis " & dateEnd 
46.
    objMail.To = strEmail 
47.
    objMail.Body = "Anbei finden sie die Termine im iCal-Format" 
48.
    objMail.Attachments.Add strTempDir & "\termine.ics" 
49.
    'objMail.Display 
50.
    'Mail senden 
51.
    objMail.Send 
52.
    objShell.Popup "Es wurden " & dic.Count & " Termin(e) als Kalender verschickt",2,"Termin-Mailer",64 
53.
Else	'keine neuen Termine vorhanden 
54.
	objShell.Popup "Keine aktuellen Termine zu verschicken",1,"Termin-Mailer",48 
55.
End If 
56.
 
57.
Set fso = Nothing 
58.
Set objShell = Nothing 
59.
Set objOL = Nothing 
60.
Set dic = Nothing 
61.
 
62.
Sub ExportAppointmentCollectionAsICal(colApp,strOutPath) 
63.
    Dim strDateNow, app 
64.
     
65.
    'Regex um das Event aus dem File zu extrahieren 
66.
    Set regex = CreateObject("vbscript.regexp") 
67.
    regex.IgnoreCase = True 
68.
    regex.MultiLine = True 
69.
    regex.pattern = "^BEGIN:VEVENT[\s\S]*^END:VEVENT" 
70.
    'file stream für das ics-File öffnen 
71.
    Set objICS = fso.OpenTextFile(strOutPath, 2, True) 
72.
     
73.
    'ics header schreiben 
74.
    With objICS 
75.
        .WriteLine "BEGIN:VCALENDAR" 
76.
        .WriteLine "PRODID:-//Microsoft Corporation//Outlook 14.0 MIMEDIR//EN" 
77.
        .WriteLine "VERSION:2.0" 
78.
        .WriteLine "METHOD:PUBLISH" 
79.
        .WriteLine "BEGIN:VTIMEZONE" 
80.
        .WriteLine "TZID:W. Europe Standard Time" 
81.
        .WriteLine "BEGIN:STANDARD" 
82.
        .WriteLine "DTSTART:16011028T030000" 
83.
        .WriteLine "RRULE:FREQ=YEARLY;BYDAY=-1SU;BYMONTH=10" 
84.
        .WriteLine "TZOFFSETFROM:+0200" 
85.
        .WriteLine "TZOFFSETTO:+0100" 
86.
        .WriteLine "END:STANDARD" 
87.
        .WriteLine "BEGIN:DAYLIGHT" 
88.
        .WriteLine "DTSTART:16010325T020000" 
89.
        .WriteLine "RRULE:FREQ=YEARLY;BYDAY=-1SU;BYMONTH=3" 
90.
        .WriteLine "TZOFFSETFROM:+0100" 
91.
        .WriteLine "TZOFFSETTO:+0200" 
92.
        .WriteLine "END:DAYLIGHT" 
93.
        .WriteLine "END:VTIMEZONE" 
94.
    End With 
95.
     
96.
    ' exportiere jedes Event in ein temporäres ics und extrahiere dieses aus dem File 
97.
    keys = colApp.Keys() 
98.
    For i = 0 To colApp.Count -1 
99.
        Dim objTempMail, strEventContents, matches, strEvent 
100.
        Set objTempMail = keys(i).ForwardAsVcal() 
101.
        strFileEvent = strTempDir & "\event.vcs" 
102.
        If fso.FileExists(strFileEvent) Then fso.DeleteFile strFileEvent, True 
103.
        objTempMail.Attachments.Item(1).SaveAsFile strFileEvent 
104.
        strEventContents = fso.OpenTextFile(strFileEvent, 1).ReadAll() 
105.
        Set matches = regex.Execute(strEventContents) 
106.
        If Not matches Is Nothing Then 
107.
            strEvent = matches(0) 
108.
        End If 
109.
        objICS.Write strEvent & vbNewLine 
110.
     
111.
        fso.DeleteFile strFileEvent, True 
112.
        Set objTempMail = Nothing 
113.
    Next 
114.
    objICS.Write "END:VCALENDAR" 
115.
    objICS.Close 
116.
    Set regex = Nothing 
117.
End Sub
Support gibts nur gegen Bares

Grüße Uwe

Falls der Beitrag gefällt, seid so nett und unterstützt mich durch eine kleine Spende / If you like my contribution please support me and donate
Bitte warten ..
Mitglied: fliegerx11
09.09.2014 um 19:26 Uhr
Hallo Uwe,

ich bin echt sehr beeindruckt von deinem Agement.
Ich habe meine Emailadresse eingetragen und das Scipt ausgeführt.
Es schickt mir auch die ICS Datei aber jetzt kommts.
Diese Fehlermeldung mit der Kämpfe ich gerade noch.

Die vCalender-Datei kann nicht importiert werden.
Dieser Fehler kann durch den Versuch auftreten, eine Mondkalender-Terminserie im iCalendar-Format zu speichern.
Um diesen Fehler zu vermeiden, stellen Sie die Terminoption auf "Gregorianisch" anstelle von "Mondkalender".
Weitere Informationen zu dieser Fehlermeldung erhalten Sie online.

Jetzt brauche ich wohl doch Support ;(
Bitte warten ..
Mitglied: fliegerx11
09.09.2014 um 19:35 Uhr
Hier hatten auch schon einige dieses Problemes des importes.

http://www.office-loesung.de/ftopic102884_0_0_asc.php
Bitte warten ..
Mitglied: NiteCrow
05.02.2015 um 18:17 Uhr
Moin Uwe, vielen Dank für dein Skript. Funktioniert prima. Ich persönlich würde noch gerne private Termine beim verschicken ausschließen. Am liebsten nur solche, die ich mir selber in den Kalender gemacht habe, sprich ohne weitere Teilnehmer. Geht sowas einfach umzusetzen?!

Danke schon einmal.
Grüße
Bitte warten ..
Mitglied: colinardo
05.02.2015, aktualisiert um 21:25 Uhr
Zitat von NiteCrow:

Moin Uwe, vielen Dank für dein Skript. Funktioniert prima. Ich persönlich würde noch gerne private Termine beim
verschicken ausschließen. Am liebsten nur solche, die ich mir selber in den Kalender gemacht habe, sprich ohne weitere Teilnehmer. Geht sowas einfach umzusetzen?!
Hallo NiteCrow,
welches Script meinst du von den obigen ? Das ist soweit kein Problem.

Wenn als Privat markierte Termine ausgeschlossen werden sollen muss einfach zur Restrict-Anweisung noch eine Regel hinzugefügt werden die so lautet:
"[SENSITIVITY] = 0"
und mit AND verknüpft werden. Diese bedeutet "nehme alle Termine die keinerlei private-Flag haben".

Für das letzte Script in diesem Post wäre dann die Zeile 24 folgendermaßen abzuändern:
For Each app In folderCalendar.items.Restrict("[Start] >= '" & FormatDateTime(dateStart,2) & " " & FormatDateTime(dateStart,4) & "' AND [Start] <= '" & FormatDateTime(dateEnd,2) & " " & FormatDateTime(dateEnd,4) & "' AND [IsRecurring] = False AND [SENSITIVITY] = 0") 
Grüße Uwe
Bitte warten ..
Mitglied: NiteCrow
06.02.2015 um 16:10 Uhr
Moin,

dachte man antwortet hier immer auf eine bestimmte Antwort. Gemeint war das ganz obrige Skript, sprich die einfachste Variante. Nur da wüsste ich jetzt leider nicht wie man das hinzufügen kann. Kannst du mir das ggf. umändern? Wäre dir sehr dankbar!

Gruß Marcus
Bitte warten ..
Mitglied: colinardo
06.02.2015, aktualisiert um 17:55 Uhr
Zitat von NiteCrow:
Nur da wüsste ich jetzt leider nicht wie man das hinzufügen kann. Kannst du mir das ggf. umändern? Wäre dir
sehr dankbar!
Das geht mit dieser Variante leider nicht. Nur mit der letzten vom 08.09.2014 um 10:39 Uhr ...

Grüße Uwe
Bitte warten ..
Mitglied: Graudon
16.01.2016 um 13:19 Uhr
Hi,

ich würde gerne die gefilterten Kalenderinformationen in eine DB exportieren, also z.B. das ics in ein weiter verabeitbare csv mit den wichtigsten Feldern wie Startzeit, Thema, Dauer, Änderung usw. umwandeln. Dazu müsste man aber erst die ics aus dem Postfach abholen, extrahieren, umwandeln und wieder ablegen ....

Grüsse
Bitte warten ..
Mitglied: colinardo
16.01.2016, aktualisiert um 17:37 Uhr
Zitat von Graudon:
Hi,
Hallo Graudon, Willkommen auf Administrator.de!
ich würde gerne die gefilterten Kalenderinformationen in eine DB exportieren, also z.B. das ics in ein weiter verabeitbare csv mit den wichtigsten Feldern wie Startzeit, Thema, Dauer, Änderung usw. umwandeln.
OK und wo ist jetzt die Frage ?
Das ist ja problemlos machbar, mit VBA kannst du direkt in Access/SQL/MSSQL/MySQL etc. Daten über ADO/DAO wegschreiben...
Dazu müsste man aber erst die ics aus dem Postfach abholen, extrahieren, umwandeln und wieder ablegen ....
Nö, wieso ?? Man kann jeden einzelnen ausgefilterten Termin direkt in die DB schreiben, siehst du ja an der FOR EACH Schleife!
Eine Wandlung in ICS war ja nur für den Versand gedacht.

Für persönliche Anpassungen können wir gerne via PM einen Preis ausmachen...

Grüße Uwe

p.s. Das nächste mal bitte keine alten Threads reaktivieren, schon im Interesse des TO. Danke!
Bitte warten ..
Neuester Wissensbeitrag
Windows 10

Powershell 5 BSOD

(1)

Tipp von agowa338 zum Thema Windows 10 ...

Ähnliche Inhalte
Microsoft Office
Outlook Kalender Serientermin automatisch kategorie zuweisen (1)

Frage von DO1TJG zum Thema Microsoft Office ...

Windows Server
gelöst Wie füge ich diesem Script die Email Adresse hinzu (16)

Frage von rainergugus zum Thema Windows Server ...

Outlook & Mail
gelöst Outlook Kalender freigeben funktioniert nicht (1)

Frage von Zippo97 zum Thema Outlook & Mail ...

Exchange Server
Kein Zugriff auf freigebene Outlook Kalender (6)

Frage von akae11 zum Thema Exchange Server ...

Heiß diskutierte Inhalte
LAN, WAN, Wireless
gelöst Server erkennt Client nicht wenn er ausserhalb des DHCP Pools liegt (28)

Frage von Mar-west zum Thema LAN, WAN, Wireless ...

Outlook & Mail
Outlook 2010 findet ost datei nicht (18)

Frage von Floh21 zum Thema Outlook & Mail ...

Windows Server
Server 2008R2 startet nicht mehr (Bad Patch 0xa) (18)

Frage von Haures zum Thema Windows Server ...