Thema
|
Datum
|
Von Nutzer
|
Rating
|
Antwort
|
|
05.10.2016 11:08:52 |
Officer_Bierschnitt |
|
|
ics Kalenderdatei erstellen |
05.10.2016 14:27:37 |
Officer_Bierschnitt |
|
|
|
05.10.2016 15:22:33 |
Officer_Bierschnitt |
|
|
|
05.10.2016 15:57:25 |
Officer_Bierschnitt |
|
|
|
06.10.2016 09:38:56 |
Officer_Bierschnitt |
|
|
|
06.10.2016 10:32:08 |
Officer_Bierschnitt |
|
|
Von:
Officer_Bierschnitt |
Datum:
05.10.2016 14:27:37 |
Views:
892 |
Rating:
|
Antwort:
|
Thema:
ics Kalenderdatei erstellen |
Hallo,
ich poste hier mal den Code hin. Einiges hab ich schon auskommentiert, weil es eben für diesen Anwendungszweck - Schulaufgabenkalender - nicht relevant ist.
Bisher geht es noch nicht so richtig - im Prinzip schon, in meinem Outlook wird ein neuer unbenannter Kalender angelegt, aber die Termine tauchen da noch nicht auf.
Blöderweise kann ich ja hier auch nix anhängen, daher kann ich die Excel-Datei auch nicht anhängen - aber vieleicht kann ich später, sobald es funktioniert, einen Screenshot anhängen.
>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>><<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
Sub ics_erstellen()
Range("A2").Select
'Erstellt den Zeitstempel
'wird benötigt für die UID des Kalendereintrages und für die Felder
'"erstellt am" --> "DTSTAMP" und "zuletzt geändert am" --> "LAST-MODIFIED"
Dim jahr_jetzt As String
jahr_jetzt = Year(Now)
Dim monat_jetzt As String * 2
monat_jetzt = Month(Now)
If monat_jetzt < 10 Then monat_jetzt = "0" + monat_jetzt
Dim tag_jetzt As String * 2
tag_jetzt = Day(Now)
If tag_jetzt < 10 Then tag_jetzt = "0" + tag_jetzt
Dim stunde_jetzt As String * 2
stunde_jetzt = Hour(Now) 'Diese Zeile muss im Wechsel von Sommer- und Winterzeit angepasst werden.
If stunde_jetzt < 10 Then stunde_jetzt = "0" + stunde_jetzt
Dim minute_jetzt As String * 2
minute_jetzt = Minute(Now)
If minute_jetzt < 10 Then minute_jetzt = "0" + minute_jetzt
Dim sekunde_jetzt As String * 2
sekunde_jetzt = Second(Now)
If sekunde_jetzt < 10 Then sekunde_jetzt = "0" + sekunde_jetzt
Zeitstempel = jahr_jetzt + monat_jetzt + tag_jetzt + "T" + stunde_jetzt + minute_jetzt + _
sekunde_jetzt + "Z" ' Der Zeitstempel umfasst halt alles zusammen, aber durch die Buchstaben ist das etwas strukturiert.
'Erstellt die Kalenderdatei (hier: Dpl.ics)
' Der Ordner muss vorab vorhanden sein, das Makro legt nur die txt-Datei an, wenn alle Ordnerebenen vorhanden sind.
' Durch diese beiden Verschachtelungen können die nachfolgenden >>writeline<<-Befehle wesentlich kürzer gehalten werden.
Set fs = CreateObject("scripting.filesystemobject")
Set a = fs.createtextfile("C:\Users\friedrich.hofmann.SYNCREON\Desktop\Tests_ics\Dpl.ics", _
True)
'Schreibt den allgemeinen Teils der Kalenderdatei
a.writeline ("BEGIN:VCALENDAR")
a.writeline ("VERSION:2.0")
a.writeline ("PRODID:-//Mozilla.org/NONSGML Mozilla Calendar V1.1//EN")
a.writeline ("METHOD:PUBLISH")
a.writeline ("BEGIN:VTIMEZONE")
a.writeline ("TZID:Europe/Berlin")
a.writeline ("X-LIC-LOCATION:Europe/Berlin")
a.writeline ("BEGIN:DAYLIGHT")
a.writeline ("TZOFFSETFROM:+0100")
a.writeline ("TZOFFSETTO:+0200")
a.writeline ("TZNAME:CEST")
a.writeline ("DTSTART:19700329T020000")
a.writeline ("RRULE:FREQ=YEARLY;BYDAY=-1SU;BYMONTH=3")
a.writeline ("END:DAYLIGHT")
a.writeline ("BEGIN:STANDARD")
a.writeline ("TZOFFSETFROM:+0200")
a.writeline ("TZOFFSETTO:+0100")
a.writeline ("TZNAME:CET")
a.writeline ("DTSTART:19701025T030000")
a.writeline ("RRULE:FREQ=YEARLY;BYDAY=-1SU;BYMONTH=10")
a.writeline ("END:STANDARD")
a.writeline ("END:VTIMEZONE")
'Schleife zur Ermittlung aller Einträge
'Benutzt alle Datensätze, die ein Datum enthalten
'Damit hier die Liste wirklich von ganz oben durchgegangen wird, springen wir mal auf A1
Range("A1").Select
i = 1
While ActiveCell.Offset(i, 0) <> "" 'Hier wird also eine Excel-Liste zeilenweise durchlaufen.
Dim datstart As Date
datstart = ActiveCell.Offset(i, 0)
' Sämtliche Zusatzinformationen, die im Normalfall bei einem Termin dabei sind, sind hier nicht relevant, Datum und Thema reichen für den geplanten Schulaufgaben-kalender.
' Dim timestart As Date
' timestart = ActiveCell.Offset(i, 1)
' Dim datend As Date
' datend = ActiveCell.Offset(i, 2)
' Dim timeend As Date
' timeend = ActiveCell.Offset(i, 3)
Dim thema As String
thema = ActiveCell.Offset(i, 1)
' Dim ort As String
' ort = ActiveCell.Offset(i, 5)
' Dim diensthabender As String
' diensthabender = ActiveCell.Offset(i, 6)
'Aufbereitung Datum und Zeit für Beginn
Dim jdatstart As String
jdatstart = Year(datstart)
Dim mdatstart As String
mdatstart = Month(datstart)
If mdatstart < 10 Then mdatstart = "0" + mdatstart
Dim tdatstart As String
tdatstart = Day(datstart)
If tdatstart < 10 Then tdatstart = "0" + tdatstart
' Dim hhtimestart As String ' Stunde, Minute und Sekunde sind für den Anwendungszweck eines Schulaufgaben-Kalenders nicht relevant.
' hhtimestart = Hour(timestart)
' If hhtimestart < 10 Then hhtimestart = "0" + hhtimestart
' Dim mmtimestart As String
' mmtimestart = Minute(timestart)
' If mmtimestart < 10 Then mmtimestart = "0" + mmtimestart
' Dim sstimestart As String
' sstimestart = "00"
' >>>>>>>>>>>>>>>>>> Ein Ende brauchen wir ja nicht <<<<<<<<<<<<<<<<<<<<<<<<
''Aufbereitung Datum und Zeit für Ende
' Dim jdatend As String
' jdatend = Year(datend)
' Dim mdatend As String
' mdatend = Month(datend)
' If mdatend < 10 Then mdatend = "0" + mdatend
' Dim tdatend As String
' tdatend = Day(datend)
' If tdatend < 10 Then tdatend = "0" + tdatend
' Dim hhtimeend As String
' hhtimeend = Hour(timeend)
' If hhtimeend < 10 Then hhtimeend = "0" + hhtimeend
' Dim mmtimeend As String
' mmtimeend = Minute(timeend)
' If mmtimeend < 10 Then mmtimeend = "0" + mmtimeend
' Dim sstimeend As String
' sstimeend = "00"
Dim k As String
k = i
'Schreibt den Kalendereintrag
'k ist ein durchlaufender Zähler
a.writeline ("BEGIN:VEVENT")
a.writeline ("UID:" + Zeitstempel + "-@Verein-" + k)
a.writeline ("CLASS:PUBLIC")
a.writeline ("SUMMARY:" + thema)
a.writeline ("DESCRIPTION:" + "Diensthabender: " + diensthabender)
a.writeline ("LOCATION:" + ort)
a.writeline ("DTSTART;TZID=Europe/Berlin:" + jdatstart + mdatstart + tdatstart + "T" + _
hhtimestart + mmtimestart + sstimestart + "Z")
a.writeline ("DTEND;TZID=Europe/Berlin:" + jdatend + mdatend + tdatend + "T" + hhtimeend + _
mmtimeend + sstimeend + "Z")
a.writeline ("DTSTAMP:" + Zeitstempel)
a.writeline ("LAST-MODIFIED:" + Zeitstempel)
a.writeline ("BEGIN:VALARM")
a.writeline ("ACTION:DISPLAY")
a.writeline ("TRIGGER;VALUE=DURATION:-P1D")
a.writeline ("DESCRIPTION:Mozilla Alarm: " + thema)
a.writeline ("END:VALARM")
a.writeline ("END:VEVENT")
i = i + 1
Wend
'Ende der Schleife
'Ende der Kalenderdatei
a.writeline ("END:VCALENDAR")
End Sub
>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>><<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< |
- Bitte beschreiben Sie Ihr Problem möglichst ausführlich. (Wichtige Info z.B.: Office Version, Betriebssystem, Wo genau kommen Sie nicht weiter)
- Bitte helfen Sie ebenfalls wenn Ihnen geholfen werden konnte und markieren Sie Ihre Anfrage als erledigt (Klick auf Häckchen)
- Bei Crossposting, entsprechende Links auf andere Forenbeiträge beifügen / nachtragen
- Codeschnipsel am besten über den Code-Button im Text-Editor einfügen
- Die Angabe der Emailadresse ist freiwillig und wird nur verwendet, um Sie bei
Antworten auf Ihren Beitrag zu benachrichtigen
Bitte geben Sie ein aussagekräftiges Thema an.
Bitte geben Sie eine gültige Email Adresse ein!
- Bitte beschreiben Sie Ihr Problem möglichst ausführlich. (Wichtige Info z.B.: Office Version, Betriebssystem, Wo genau kommen Sie nicht weiter)
- Bitte helfen Sie ebenfalls wenn Ihnen geholfen werden konnte und markieren Sie Ihre Anfrage als erledigt (Klick auf Häckchen)
- Bei Crossposting, entsprechende Links auf andere Forenbeiträge beifügen / nachtragen
- Codeschnipsel am besten über den Code-Button im Text-Editor einfügen
- Die Angabe der Emailadresse ist freiwillig und wird nur verwendet, um Sie bei
Antworten auf Ihren Beitrag zu benachrichtigen
Thema
|
Datum
|
Von Nutzer
|
Rating
|
Antwort
|
|
05.10.2016 11:08:52 |
Officer_Bierschnitt |
|
|
ics Kalenderdatei erstellen |
05.10.2016 14:27:37 |
Officer_Bierschnitt |
|
|
|
05.10.2016 15:22:33 |
Officer_Bierschnitt |
|
|
|
05.10.2016 15:57:25 |
Officer_Bierschnitt |
|
|
|
06.10.2016 09:38:56 |
Officer_Bierschnitt |
|
|
|
06.10.2016 10:32:08 |
Officer_Bierschnitt |
|
|