Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender

Forumthread: iCal - Datei aus Excel erstellen / Kalender .ics

iCal - Datei aus Excel erstellen / Kalender .ics
PeterO
Hallo Forum!
mittels eines Makros möchte ich aus einer Exceltabelle (hier ein Dienstplan) eine Kalenderdatei im iCal-Format erstellen. Optisch scheint es zu funktionieren (siehe Inhalt Textdatei), aber beim Import in einen Kalender (Sunbird bzw. Outlook 2003) kommt eine Fehlermeldung, dass die Datei fehlerhaft sei. Hier meine Dateien:
https://www.herber.de/bbs/user/76093.xls
https://www.herber.de/bbs/user/76094.txt
(ist tatsächlich als .ics gespeichert, war als Upload aber nicht erlaubt)
Den Code habe ich mir aus verschiedenen Foren zusammengesucht und erweitert/angepasst.
Sicherlich hat sich der ein oder andere auch schon mal damit befasst und kann helfen.
Gruß Peter
Anzeige

7
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Benutzer
Anzeige
AW: iCal - Datei aus Excel erstellen / Kalender .ics
10.08.2011 10:36:46
mumpel
Hallo!
iCal? Schon wieder dieser Apple-Sch***!? Weshalb nutzt Du nicht das was für Outlook und/oder Sunbird vorgesehen ist? Meiner Kenntnis nach kann Outlook mit iCal-Dateien nichts anfangen. Bei Outlook kannst Du direkt per VBA Kalendereinträge erzeugen, ohne den Umweg über externe Dateien.
Gruß, René
Anzeige
ups - vergessen wir mal Apple
10.08.2011 10:49:23
PeterO
Hallo René,
ich habe mit Apple nichts am Hut! Ich halte es auch für *****ß. Das mit iCal war mir so überhaupt nicht bewusst, da mit Apple wirklich nicht interessiert.
Es geht mir rein um ics-Dateien, die meiner Erfahrung nach sowohl von Sunbird (mein Kalender-Programm) wie auch von Outlook (die meisten meiner Bekannten) verwendet werden können. Auf der Webseite sunbird-kalender.de werden auch nur Kalenderdateien im ics-Format angeboten. Daher nahm ich an, dass dies der Standard wäre.
Der Dienstplan wird aus verschiedenen Gründen über Excel erstellt und ist hier nur vereinfacht dargestellt. Daher der Weg von Excel zur ics-Datei.
Lasse den Thread offen. Vielleicht hat ja jemand eine Idee.
Gruß Peter
Anzeige
Problem gelöst
10.08.2011 10:59:43
PeterO
Manchmal ist es ja so einfach:
Habe mir nach der Erstellung die ics-Datei mit dem Text-Editor angesehen. Danach ging der Import nicht mehr. Wenn ich sie mir nicht ansehe, funktioniert es einwandfrei, bis auf ein kleines Zeitmanko, das noch angepasst werden muss...
AW: Problem gelöst
10.08.2011 11:04:52
mumpel
Da war ich wohl zu langsam. ;-) Aber Outlook 2010 hat dieses Problem nicht. Da kann ich die ICS-Datei mit dem Editor anschauen wie ich will, Outlook 2010 akzeptiert sie immer. Ist vielleicht Dein Texteditor defekt?
Anzeige
AW: Problem gelöst
10.08.2011 11:28:33
PeterO
mag sein
AW: ups - vergessen wir mal Apple
10.08.2011 11:02:01
mumpel
Dann eben nicht Apple. ;-) Aber das "iCal" ist doch vom Namen her schon sehr an das Apple-i angelehnt. Schrecklich diese Apple-Mania.
Ich habe es mal ausprobiert. Outlook 2010 hat die Datei nach dem Speichern als ICS-Datei problemlos importiert. Termin habe ich gefunden bei 09. September, 21:00 Uhr ( "Praxis hier") und am 10. September einen Termin im U-Raum. Importiert habe ich über "Kalender verwalten->Kalender öffnen->Aus dem Internet". Die Datei sollte also in Ordnung sein. Also muss Dein Outlook irgendein Problem haben.
Anzeige
AW: ups - vergessen wir mal Apple
10.08.2011 11:33:49
PeterO
Hallo René,
habe das Zeitenproblem jetzt in den Griff bekommen, indem ich der ics-Datei noch etwas Code in den "Kopf" gepackt habe.
Hier der komplette Code, falls ihn noch jemand benötigt:
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  ""
Dim datstart As Date
datstart = ActiveCell.Offset(i, 0)
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, 4)
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 
Gruß Peter
Anzeige
;

Forumthreads zu verwandten Themen

Anzeige
Anzeige
Anzeige

Infobox / Tutorial

iCal-Datei aus Excel erstellen


Schritt-für-Schritt-Anleitung

Um eine ICS-Datei aus Excel zu erstellen, kannst du folgendes VBA-Makro verwenden. Dieser Code hilft dir, eine iCal-Datei zu generieren, die in Programmen wie Outlook oder Sunbird importiert werden kann.

  1. Öffne deine Excel-Datei und drücke ALT + F11, um den VBA-Editor zu öffnen.
  2. Klicke auf Einfügen und wähle Modul, um ein neues Modul zu erstellen.
  3. Füge den folgenden Code in das Modul ein:
Sub ICS_Erstellen()
    Dim fileName As String
    fileName = Application.ActiveWorkbook.Path & "\Kalender.ics"

    Dim i As Integer
    Dim dateString As String
    Dim timeString As String
    Dim eventString As String
    Dim icsContent As String

    icsContent = "BEGIN:VCALENDAR" & vbCrLf
    icsContent = icsContent & "VERSION:2.0" & vbCrLf

    For i = 2 To ActiveSheet.UsedRange.Rows.Count
        dateString = Format(Cells(i, 1).Value, "yyyyMMdd") & "T" & Format(Cells(i, 2).Value, "hhmmss") & "Z"
        eventString = "BEGIN:VEVENT" & vbCrLf
        eventString = eventString & "UID:" & Cells(i, 4).Value & vbCrLf
        eventString = eventString & "DTSTAMP:" & dateString & vbCrLf
        eventString = eventString & "SUMMARY:" & Cells(i, 3).Value & vbCrLf
        eventString = eventString & "DTSTART:" & dateString & vbCrLf
        eventString = eventString & "END:VEVENT" & vbCrLf
        icsContent = icsContent & eventString
    Next i

    icsContent = icsContent & "END:VCALENDAR"

    Dim fileNumber As Integer
    fileNumber = FreeFile
    Open fileName For Output As #fileNumber
    Print #fileNumber, icsContent
    Close #fileNumber

    MsgBox "ICS-Datei erstellt: " & fileName
End Sub
  1. Schließe den VBA-Editor und gehe zurück zu Excel.
  2. Führe das Makro aus, um die ICS-Datei zu erstellen.

Häufige Fehler und Lösungen

  • Fehlerhafte ICS-Datei beim Import:

    • Stelle sicher, dass du die ICS-Datei nicht mit einem Text-Editor öffnest, nachdem sie erstellt wurde. Dies kann den Inhalt beschädigen.
    • Verwende stattdessen einen Hex-Editor oder eine Software, die den Inhalt nicht verändert.
  • Datumsformat-Probleme:

    • Überprüfe, ob die Datumswerte im richtigen Format vorliegen. Excel muss die Daten als Datum erkennen, um sie korrekt in das iCal-Format zu konvertieren.

Alternative Methoden

Falls du kein VBA verwenden möchtest, kannst du auch auf externe Tools zurückgreifen, um eine ICS-Datei zu erstellen. Hier sind einige Optionen:

  • Excel to ics Converter: Es gibt Online-Converter, die eine Excel-Tabelle in eine ICS-Datei umwandeln können. Suche nach „Excel to ical converter“ oder „Excel to ics converter“.

  • ICS-Generator: Nutze spezielle Software oder Webseiten, die einen ICS-Generator anbieten, um deine Termine aus Excel zu importieren und eine ICS-Datei zu erstellen.


Praktische Beispiele

Hier ist ein einfaches Beispiel für eine Excel-Tabelle, die du verwenden kannst:

Datum Uhrzeit Titel UID
2023-09-09 21:00 Praxis hier 1234-5678
2023-09-10 10:00 Meeting im U-Raum 1234-5679

Mit dieser Tabelle kannst du das oben genannte Makro verwenden, um eine ICS-Datei zu erstellen.


Tipps für Profis

  • ICS-Datei-Vorlage: Du kannst eine ICS-Datei-Vorlage in Excel speichern, sodass du diese für zukünftige Projekte wiederverwenden kannst.
  • Automatisierung: Erstelle ein weiteres Makro, das automatisch die ICS-Datei exportiert, wenn du Änderungen an deiner Excel-Tabelle vornimmst.
  • Fehlersuche: Nutze Debugging im VBA-Editor, um Probleme im Code zu identifizieren, falls die ICS-Datei nicht wie gewünscht funktioniert.

FAQ: Häufige Fragen

1. Wie kann ich eine ics-Datei aus Excel erstellen?
Du kannst das bereitgestellte VBA-Makro verwenden. Es konvertiert deine Excel-Tabelle in eine ICS-Datei.

2. Funktioniert das auch mit Excel 2010?
Ja, das VBA-Makro ist mit Excel 2010 und neueren Versionen kompatibel.

3. Was mache ich, wenn ich eine Fehlermeldung beim Import erhalte?
Überprüfe, ob du die ICS-Datei nach der Erstellung nicht bearbeitet hast. Versuche, die Datei direkt zu importieren, ohne sie vorher zu öffnen.

4. Gibt es eine Möglichkeit, mehrere Termine gleichzeitig zu erstellen?
Ja, das oben angegebene Makro kann leicht angepasst werden, um mehrere Termine aus deiner Excel-Tabelle zu generieren.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Entdecke mehr
Finde genau, was du suchst

Die erweiterte Suchfunktion hilft dir, gezielt die besten Antworten zu finden

Suche nach den besten Antworten
Unsere beliebtesten Threads

Entdecke unsere meistgeklickten Beiträge in der Google Suche

Top 100 Threads jetzt ansehen
Anzeige