Termine aus Excel in Outlook importieren (VBA)
Hallo zusammen,
ich habe eine Frage bezüglich eines Makros, mit dem man Termine aus einer Excel Tabelle in Outlook importieren kann.
Mit dem folgenden Code funktioniert es bereits, dass durch das drücken auf eine Schaltfläche alle darin enthaltenen Termine in Outlook exportiert werden.
Die Tabelle in Excel sieht so aus:
Mir fehlen allerdings noch drei Funktionen, bei denen ich leider nicht weiß wie ich diese umsetzen kann.
- Duplikate sollen geändert und nicht nochmal hinzugefügt werden
- Jeder Termin soll einzeln dem Kalender hinzugefügt werden können
- Termine löschen
Ich hoffe jemand kann mir weiterhelfen und weiß, wie man so etwas implementieren kann.
Viele Grüße
Jan
ich habe eine Frage bezüglich eines Makros, mit dem man Termine aus einer Excel Tabelle in Outlook importieren kann.
Mit dem folgenden Code funktioniert es bereits, dass durch das drücken auf eine Schaltfläche alle darin enthaltenen Termine in Outlook exportiert werden.
Sub createAppointments()
On Error Resume Next
Dim sheet As Worksheet, rngStart As Range, rngEnd As Range, cell As Range
Set objOL = CreateObject("Outlook.Application")
Set objCal = objOL.Session.Stores.Item("test@test.de").GetDefaultFolder(9).Folders.Item("Excel Test")
Set sheet = Worksheets("Termine")
Set rngStart = sheet.Range("A2")
Set rngEnd = rngStart.End(xlDown)
counter = 0
For Each cell In sheet.Range(rngStart, rngEnd)
strSubject = cell.Text
strStartDate = cell.Offset(0, 1).Text
strStartTime = cell.Offset(0, 2).Text
strEndDate = cell.Offset(0, 3).Text
strEndTime = cell.Offset(0, 4).Text
boolAllDay = cell.Offset(0, 5).Value
strLocation = cell.Offset(0, 6).Text
strComment = cell.Offset(0, 7).Text
boolReminderSet = cell.Offset(0, 8).Value = True
'Eventuelles Duplikat des Termins finden ---------
Set allItems = objCal.items
allItems.Sort "[Start]"
' Ganztagestermin oder normaler Termin unterscheiden
If boolAllDay = True Then
' Filtere Termine nach Ganztagesevents zu dieser Zeit und dem Betreff
Set dupe_item = allItems.Restrict("[Start]=""" & Format(strStartDate, "dd.mm.yyyy hh:mm") & """ AND [END]= """ & Format(DateAdd("d", 1, DateValue(strEndDate)), "dd.mm.yyyy hh:mm") & """ AND [Subject] = '" & strSubject & "' AND [AllDayEvent] = True")
Else
' Filtere normale Termine zu dieser Zeit und dem Betreff
Set dupe_item = allItems.Restrict("[Start]=""" & Format(strStartDate, "dd.mm.yyyy" & strStartTime, "hh:mm") & """ AND [END]= """ & Format(strEndDate, "dd.mm.yyyy" & strEndTime, "hh:mm") & """ AND [Subject] = '" & strSubject & "' AND [AllDayEvent] = False")
End If
' hole den ersten passenden Termin wenn er exisitiert
Set itm = dupe_item.GetFirst
If itm Is Nothing Then
' erstelle neuen Termin wenn kein Duplikat exisitert
Set olApp = objCal.items.Add(1)
Else
' verwende den gefundenen Termin
Set olApp = itm
End If
With olApp
.Location = strLocation
.ReminderSet = boolReminderSet
.Subject = strSubject
.Body = strComment
If boolAllDay = True Then
.AllDayEvent = True
If IsDate(strStartDate) Then
.Start = DateValue(strStartDate)
.End = DateAdd("d", 1, DateValue(strStartDate))
.Save
counter = counter + 1
Else
MsgBox "Termin mit dem Betreff: '" & strSubject & "' in Zeile " & cell.Row & " hat ungültige oder fehlende Zeitangaben", vbExclamation
End If
Else
.AllDayEvent = False
If IsDate(strStartDate) And IsDate(strEndDate) And IsDate(strStartTime) And IsDate(strEndTime) Then
.Start = DateValue(strStartDate) & " " & TimeValue(strStartTime)
.End = DateValue(strEndDate) & " " & TimeValue(strEndTime)
.Save
counter = counter + 1
Else
MsgBox "Termin mit dem Betreff: '" & strSubject & "' in Zeile " & cell.Row & " hat ungültige oder fehlende Zeitangaben", vbExclamation
End If
End If
End With
Set olApp = Nothing
Next
Set objOL = Nothing
MsgBox counter & " Termin(e) wurde(n) erstellt!", vbInformation
End Sub
Die Tabelle in Excel sieht so aus:
Mir fehlen allerdings noch drei Funktionen, bei denen ich leider nicht weiß wie ich diese umsetzen kann.
- Duplikate sollen geändert und nicht nochmal hinzugefügt werden
- Jeder Termin soll einzeln dem Kalender hinzugefügt werden können
- Termine löschen
Ich hoffe jemand kann mir weiterhelfen und weiß, wie man so etwas implementieren kann.
Viele Grüße
Jan
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 605369
Url: https://administrator.de/forum/termine-aus-excel-in-outlook-importieren-vba-605369.html
Ausgedruckt am: 12.05.2025 um 06:05 Uhr
2 Kommentare
Neuester Kommentar
Duplikate sollen geändert und nicht nochmal hinzugefügt werden
Bevor du exportierst, musst du eine Abfrage einbauen, die den Termin im Outlook identifiziert z.B. über den Betreff. Wenn nicht vorhanden -> exportieren. Wenn vorhanden z.B. zu einer anderen Uhrzeit -> löschen und exportieren oder ändernJeder Termin soll einzeln dem Kalender hinzugefügt werden können
Du musst die aktuelle markierte Zeile auslesen. Du musst ihm auch noch einbauen wie er unterscheiden soll, ob ganz oder nur markierte Zeile. Ein zweiter Button dafür oder er muss alle markieren um alle zu exportieren.Termine löschen
Ein Button wird probleme haben Termine zu identifizieren. Willst du in der Tabelle eine Spalte haben, das den Termin zum löschen markiert? Vielleich mal das hier übernehmen