misau70
Goto Top

Mit Excel einen Termin in Outlook erzeugen + löschen alter Einträge

Hallo,

ich bin neu hier und habe in einem Thread von 2015 ("Mit Excel einen Termin in Outlook erzeugen") folgendes super tolles Makro gefunden und installiert.

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.GetDefaultFolder(9)
    Set sheet = Worksheets(1)
    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
        strCategory = cell.Offset(0, 6).Text
        strComment = cell.Offset(0, 7).Text
        
        'Eventuelles Duplikat des Termins finden ---------  
        Dim dupe_item As Object, itm As Object
        If boolAllDay Then
            Set dupe_item = objCal.items.Restrict("[Start] = """ & Format(strStartDate, "ddddd") & " 12:00 AM"" AND [END] = """ & Format(DateAdd("d", 1, DateValue(strEndDate)), "ddddd") & " 12:00 AM"" AND [Subject] = '" & strSubject & "'")  
        Else
            Set dupe_item = objCal.items.Restrict("[Start] = """ & Format(strStartDate & " " & strStartTime, "ddddd hh:nn") & """ AND [END] = """ & Format(strEndDate & " " & strEndTime, "ddddd hh:nn") & """ AND [Subject] = '" & strSubject & "'")  
        End If
        Set itm = dupe_item.GetFirst
        Set olApp = IIf(itm Is Nothing, objCal.items.Add(1), itm)
        '--------------------------  
        
        With olApp
            
            .Subject = strSubject
            .ReminderSet = False
            If strCategory <> "" Then  
                .Categories = strCategory
            End If
            .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
    Next
    Set objOL = Nothing
    MsgBox counter & " Termin(e) wurden erstellt!", vbInformation  
End Sub

Dafür schon mal großen Dank an Uwe, funktioniert super!!!

Jetzt möchte ich gerne noch zusätzlich alle Kalendereinträge im Outlookkalender löschen bevor ich die neuen von Excel nach Outlook sende, da dadurch Änderungen auch wirksam werden können. Ich verfüge leider über keine Kenntnisse im Programmieren. Wenn jemand dies bitte in das vorhandene Makro einbauen könnte das wäre super.

Windows7
Office2007

Vielen Dank
Micha

Content-Key: 348665

Url: https://administrator.de/contentid/348665

Printed on: April 26, 2024 at 15:04 o'clock

Mitglied: 133883
Solution 133883 Sep 09, 2017 updated at 11:05:07 (UTC)
Goto Top
Kalender in Listenansicht umschalten, STRG+A und ENTF drücken, fertig.
Makro
While objCal.Items.Count > 0
    objCal.Items(1).Delete
Wend
Gruß
Member: misau70
misau70 Sep 09, 2017 at 11:09:59 (UTC)
Goto Top
Vielen Dank für die Antwort,
an welcher Stelle meines schon bestehenden Makros müsste ich das einfügen?

Danke
Mitglied: 133883
133883 Sep 09, 2017 updated at 11:13:51 (UTC)
Goto Top
Einfach erst mal nachdenken! Natürlich nach der Definition von objCal und vor dem Anlegen neuer Termine.
Wir wollen dir ja nicht alles gleich in den Hintern schieben face-wink
Member: misau70
misau70 Sep 09, 2017 at 11:14:20 (UTC)
Goto Top
Nachdenken hilft leider nicht, denn wie oben bereits erwähnt, habe ich keinerlei Ahnung von VBA Programmierung.
Member: misau70
misau70 Sep 09, 2017 at 11:15:09 (UTC)
Goto Top
Danke probier ich gleich aus
Member: misau70
misau70 Sep 09, 2017 at 11:19:46 (UTC)
Goto Top
Funktioniert Tadellos, vielen vielen Dank.

Gruß
Micha