Top-Themen

Aktuelle Themen (A bis Z)

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

Mitglied: fliegerx11

fliegerx11 (Level 1) - Jetzt verbinden

07.08.2014, aktualisiert 09.08.2014, 11826 Aufrufe, 35 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
35 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 08.04.2018
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.
 
08.
On Error Resume Next 
09.
Set dic = CreateObject("Scripting.Dictionary") 
10.
Set fso = CreateObject("Scripting.FilesystemObject") 
11.
Set objOL = GetObject(, "Outlook.Application") 
12.
If objOL Is Nothing Then 
13.
  Set objOL = CreateObject("Outlook.Application") 
14.
End If 
15.
Set objShell = CreateObject("Wscript.Shell") 
16.
strTempDir = objShell.ExpandEnvironmentStrings("%temp%") 
17.
 
18.
 
19.
'Startdatum für den Terminexport 
20.
dateStart = Date 
21.
'Enddatum für den Terminexport 
22.
dateEnd = DateAdd("d", intNumDays, dateStart) 
23.
 
24.
Set folderCalendar = objOL.GetNamespace("MAPI").GetDefaultFolder(9) 
25.
'Termine auf den angegebenen Zeitraum beschränken und Serientermine ausschließen (sind im iCal-Format nicht möglich) 
26.
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") 
27.
    'benutzerdefinierte Eigenschaft suchen 
28.
    Set prop = app.UserProperties.Find("googlecalexport") 
29.
    If Not prop Is Nothing Then 
30.
    	'wenn sie gefunden wurde vergleiche das Datum der Eigenschaft mit dem Datum der letzten Modifikation 
31.
    	'wurde Termin seit dem letzen Export geändert, exportiere ihn erneut 
32.
        If prop.Value < app.LastModificationTime Then 
33.
            dic.Add app,"" 
34.
            app.UserProperties("googlecalexport").Value = DateAdd("s", 10, Now()) 
35.
            app.Save 
36.
        End If 
37.
    Else	' benutzerdefinierte Eigenschaft wurde nicht gefunden, Termin ist also neu 
38.
        dic.Add app,"" 
39.
        Set prop = app.UserProperties.add("googlecalexport", 5) 
40.
        prop.Value = DateAdd("s", 10, Now()) 
41.
        app.Save 
42.
    End If 
43.
Next 
44.
If dic.Count > 0 Then	'wenn Termine für den Export vorhanden sind erstelle eine neue Mail mit dem ICS-Kalender als Attachment 
45.
    ExportAppointmentCollectionAsICal dic, strTempDir & "\termine.ics" 
46.
    Set objMail = objOL.CreateItem(0) 
47.
    objMail.Subject = "Termine von " & dateStart & " bis " & dateEnd 
48.
    objMail.To = strEmail 
49.
    objMail.Body = "Anbei finden sie die Termine im iCal-Format" 
50.
    objMail.Attachments.Add strTempDir & "\termine.ics" 
51.
    'objMail.Display 
52.
    Mail senden 
53.
    objMail.Send 
54.
    objShell.Popup "Es wurden " & dic.Count & " Termin(e) als Kalender verschickt",2,"Termin-Mailer",64 
55.
Else	'keine neuen Termine vorhanden 
56.
	objShell.Popup "Keine aktuellen Termine zu verschicken",1,"Termin-Mailer",48 
57.
End If 
58.
 
59.
Set fso = Nothing 
60.
Set objShell = Nothing 
61.
Set objOL = Nothing 
62.
Set dic = Nothing 
63.
 
64.
Sub ExportAppointmentCollectionAsICal(colApp,strOutPath) 
65.
    Dim strDateNow, app, strOut 
66.
     
67.
    'Regex um das Event aus dem File zu extrahieren 
68.
    Set regex = CreateObject("vbscript.regexp") 
69.
    regex.IgnoreCase = True 
70.
    regex.MultiLine = True 
71.
    regex.pattern = "^BEGIN:VEVENT[\s\S]*^END:VEVENT" 
72.
     
73.
    'Ausgabedatei löschen falls sie exisitiert 
74.
    If fso.FileExists(strOutPath) Then fso.DeleteFile strOutPath,True 
75.
     
76.
    'ics header schreiben 
77.
    strOut = "BEGIN:VCALENDAR" & vbNewLine & _ 
78.
    	     "PRODID:-//Microsoft Corporation//Outlook 14.0 MIMEDIR//EN" & vbNewLine & _ 
79.
    	     "VERSION:2.0" & vbNewLine & _ 
80.
        	 "METHOD:PUBLISH" & vbNewLine & _ 
81.
        	 "BEGIN:VTIMEZONE" & vbNewLine & _ 
82.
        	 "TZID:W. Europe Standard Time" & vbNewline & _ 
83.
        	 "BEGIN:STANDARD" & vbNewline & _ 
84.
        	 "DTSTART:16011028T030000" & vbNewline & _ 
85.
        	 "RRULE:FREQ=YEARLY;BYDAY=-1SU;BYMONTH=10" & vbNewline & _ 
86.
        	 "TZOFFSETFROM:+0200" & vbNewline & _ 
87.
        	 "TZOFFSETTO:+0100" & vbNewline & _ 
88.
        	 "END:STANDARD" & vbNewline & _ 
89.
        	 "BEGIN:DAYLIGHT" & vbNewline & _ 
90.
       		 "DTSTART:16010325T020000" & vbNewline & _ 
91.
         	 "RRULE:FREQ=YEARLY;BYDAY=-1SU;BYMONTH=3" & vbNewline & _ 
92.
        	 "TZOFFSETFROM:+0100" & vbNewline & _ 
93.
        	 "TZOFFSETTO:+0200" & vbNewline & _ 
94.
        	 "END:DAYLIGHT" & vbNewline & _ 
95.
        	 "END:VTIMEZONE" & vbNewLine 
96.
     
97.
    ' exportiere jedes Event in ein temporäres ics und extrahiere dieses aus dem File 
98.
    keys = colApp.Keys() 
99.
    For i = 0 To colApp.Count -1 
100.
        Dim objTempMail, strEventContents, matches, strEvent 
101.
        Set objTempMail = keys(i).ForwardAsVcal() 
102.
        strFileEvent = strTempDir & "\event.vcs" 
103.
        If fso.FileExists(strFileEvent) Then fso.DeleteFile strFileEvent, True 
104.
        objTempMail.Attachments.Item(1).SaveAsFile strFileEvent 
105.
        strEventContents = fso.OpenTextFile(strFileEvent, 1).ReadAll() 
106.
        Set matches = regex.Execute(strEventContents) 
107.
        If Not matches Is Nothing Then 
108.
            strEvent = matches(0) 
109.
        End If 
110.
        strOut = strOut & strEvent & vbNewLine 
111.
     
112.
        fso.DeleteFile strFileEvent, True 
113.
        Set objTempMail = Nothing 
114.
    Next 
115.
    strOut = strOut & "END:VCALENDAR" & vbNewLine 
116.
     
117.
    With CreateObject("ADODB.Stream") 
118.
		.Type = 2 : .Charset = "UTF-8" : .Open 
119.
	  	.WriteText strOut 
120.
	  	.SaveToFile strOutPath, 2 
121.
	  	.Close 
122.
	End With 
123.
   
124.
    Set regex = Nothing 
125.
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 ..
Mitglied: BaluAux
10.01.2017 um 11:17 Uhr
Hallo Uwe,
entschuldige bitte die verspätete Antwort (ich hoffe ich bekomme dennoch eine Antwort auf meine Frage). Das Makro als solches scheint bei mir (& Outlook 2007) zu funktionieren, die Mail wird erstellt. Allerdings ist diese leer. Kein Anhang, keine ics oder ical. Habe ich etwas falsch gemacht? Die beiden Subs liegen in "ThisOutlook Session".
Danke im Voraus!
Bitte warten ..
Mitglied: cbk882
05.04.2018 um 12:34 Uhr
Hallo Uwe,

vielen Dank. Ich muss Office 365-Kalender als ics abonnierbar machen, leider geht das aber mit der Linkfreigabe nur für maximal ein Jahr in die Zukunft. Mit deinem Skript hab ich es mir so gebaut, dass es gewünscht funktioniert.

Lieben Gruß
Christoph
Bitte warten ..
Mitglied: colinardo
05.04.2018, aktualisiert um 20:55 Uhr
Servus Christoph.
Freut mich zu hören das das Skript dir hilfreich zur Seite steht!
Beste Grüße und herzlichen Dank für deine Spende .

Grüße Uwe
Bitte warten ..
Mitglied: cbk882
08.04.2018 um 10:44 Uhr
Hey Uwe,
mag den Thread jetzt nicht hacken, magst Du mal bei meinem Problem noch einmal schauen und deinen Senf dazu geben?
Exchange 365 Kalender nach ics exportieren - länger als ein Jahr

Danke dir
Christoph
Bitte warten ..
Mitglied: colinardo
08.04.2018, aktualisiert um 11:15 Uhr
Zitat von cbk882:

Hey Uwe,
mag den Thread jetzt nicht hacken, magst Du mal bei meinem Problem noch einmal schauen und deinen Senf dazu geben?
Exchange 365 Kalender nach ics exportieren - länger als ein Jahr

Der Inhalt ist korrekt (da QuotedPrintable), der Fehler war hier nur das das File nicht UTF-8 kodiert gespeichert wurde, ist oben im Ursprünglichen Beitrag korrigiert.

Falls dein Client es noch immer nicht schluckt, ist nicht meine Schuld .

Grüße Uwe
Bitte warten ..
Ähnliche Inhalte
Entwicklung

ICS Dateien automatisch in Outlook importieren

Frage von derausgroenlohEntwicklung7 Kommentare

Hallo zusammen, ich möchte gerne ICS Dateien per script in Outlook importieren. Wir haben ein Programm, dass für unsere ...

Exchange Server

Ics File aus öffentlichem Kalender erstellen mit automatischer Aktualisierung

Frage von friedensbringerExchange Server1 Kommentar

Hallo zusammen, gibt es eine Möglichkeit oder ein Third Party Plugin um folgendes zu bewerkstelligen: Wir haben einen öffentlichen ...

VB for Applications

VBA: Automatische Vor- und Nachbereitungszeit bei Outlook-Terminen

Frage von SinnidwVB for Applications4 Kommentare

Hallo zusammen, ich habe gelesen, dass es möglich ist, über ein Outlook-Makro bei jedem eingetragenen Termin automatisch eine Vor- ...

VB for Applications

VBA aus Excel Daten in Outlook-Kalender anlegen und löschen

Frage von tomakagrottiVB for Applications3 Kommentare

Hallo zusammen, ich habe vor eine Excel Tabelle in folgender Form zu erstellen: Es sollen Angebote für einen bestimmten ...

Neue Wissensbeiträge
Router & Routing

Olle Fritzbox 7270 mit VPN und SIP-Telefonie hinter O2 Homebox 6641 als "Modem"

Erfahrungsbericht von the-buccaneer vor 5 StundenRouter & Routing1 Kommentar

Nun war es soweit: Auch O2 hat mich mit VOIP zwangsbeglückt. Heute am Privatanschluss, in 2 Wochen ist das ...

Sicherheit

Ungepatchte Remote Code Execution-Lücke in LG NAS

Information von kgborn vor 18 StundenSicherheit

Nutzt wer LG NAS-Einheiten? In den NAS-Einheiten der LG Network Storage-Einheiten gibt es eine sehr unschöne Schwachstelle, die einen ...

Windows Update

Neue Version KB4099950 NIC Einstellungen gehen verloren

Information von sabines vor 1 TagWindows Update2 Kommentare

Es ist eine neue Version des KB4099950 verfügbar, die das Problem mit den verlorenen Netzwerkeinstellungen lösen soll. Das Datum ...

Microsoft Office

MS Office 2019 ohne OneNote - OneNote App speichert nur in Cloud

Information von Deepsys vor 1 TagMicrosoft Office5 Kommentare

Microsoft zeigt deutlich wohin alles bei Ihnen geht, OneNote 2019 wird es nicht mehr geben, und die Windows 10 ...

Heiß diskutierte Inhalte
Festplatten, SSD, Raid
Server SSD: NVMe PCIe 3.0 RAID?
Frage von bouneeFestplatten, SSD, Raid15 Kommentare

Hallo liebe Admins, mir stellt sich gerade die Frage, ob ein neuer Server mit SSD NVMe PCIe 3.0 Sinn ...

Sonstige Systeme
Wie Normenkataloge im Unternehmen bereit stellen?
Frage von MuzzepuckelSonstige Systeme14 Kommentare

Hallo Kollegen, ich lese schon lange hier mit, nun mein ersrer Beitrag, bzw. Frage. :-) Wir benötigen für unsere ...

Windows 10
Windows 10 Startmenü-Einstellungen Systemweit festlegen
Frage von flotautWindows 1013 Kommentare

Guten Morgen liebe Admins, wir möchten bei uns am Lehrstuhl demnächst auf Windows 10 umsteigen. Wir installieren unsere PC's ...

LAN, WAN, Wireless
OpenVPN Client Fehlermeldungen
Frage von chris84LAN, WAN, Wireless12 Kommentare

Hallo Zusammen, wir nutzen seit kurzem einen neuen Router und den OpenVPN Client. Die VPN Verbindung klappt; allerdings kommen ...