rene1976
Goto Top

Doppelte und mehrfache Geburtstage aus dem Outlook Kalender automatisch löschen und anschließend automatisch neu eintragen.

Hallo,

ich habe meinen Outlook 2010 Kalender schon seit Jahren mit meine Handies (zuerst mit iPhone iOS 4 und dann mit Android 4.x ) synchronisiert.
Leider ging schon seit längerer Zeit etwas schief und ich habe Geburtstage z.T. an 3 Tagen hintereinander eingetragen.
Somit völlig unbrauchbar.
Leider sind auch auf meine Handy die Geburtstage an 3 Tagen eingetragen, inkl. falscher Erinnerungen.
Ich vermute, dass es daran lag, dass ich bei iOS damals Geburtstags-Erinnerung mir ein Tag vorher habe anzeigen lassen.
Deshalb schließe ich schon seit längerem mein Handy nicht mehr an den PC an.
Das soll sich jetzt wieder ändern.
Ich gehe davon aus, dass die Geburtstage in meinen Outlook Kontakten noch alle richtig sind.
Diese möchte ich jetzt wieder gerne in den Outlook Kalender einspielen und anschließen in den Handykalender übertragen.

Was habe ich vor:
1. Erst das Handy an den PC anschließen und alle neuen Kontaktdaten vom Handy auf den PC übertragen.
2. Handy abschließen und alle Geburtstage aus dem Outlook Kalender entfernen.
3. Alle Geburtstage automatisch wieder von den Outlook Kontakte in den Kalender eintragen lassen.
4. Anschließend wieder alle Kontakte und den Kalender aus Outlook auf das Handy überspielen (nur in eine Richtung).

Fragen:

1. Wie kann ich alle Geburtstage automatisch aus dem Outlook 2010 Kalender komplett löschen. Nur die Geburtstage nicht andere wichtige (Serien-)Termine?
Gibt es bei den Geburtstagsterminen ein Flag/Attribut um es von anderen Terminen zu unterscheiden?
2. Wie kann ich alle Geburtstage wieder automatisch aus den Outlook Kontakte 2010 wieder in den Kalender eintragen lassen?

Besten Dank.

Rene

Content-Key: 255204

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

Ausgedruckt am: 29.03.2024 um 04:03 Uhr

Mitglied: colinardo
colinardo 19.11.2014, aktualisiert am 22.11.2014 um 21:36:22 Uhr
Goto Top
Hallo Rene,
Zitat von @Rene1976:
Fragen:

1. Wie kann ich alle Geburtstage automatisch aus dem Outlook 2010 Kalender komplett löschen. Nur die Geburtstage nicht andere wichtige (Serien-)Termine?
gibt zwar genug Duplicates-Remover für Outlook, aber ich mach das lieber immer selber mit VBA face-smile

Lösche alle Events die mit "Geburtstag von" im Subject beginnen und welche ein Serienevent sind:
Sub DeleteAllBirthdaysFromDefaultCalendar()
    Dim folderCalendar As Folder, birthdays As items
    Set folderCalendar = Outlook.GetNamespace("MAPI").GetDefaultFolder(olFolderCalendar)  
    Set birthdays = folderCalendar.items.Restrict("@SQL=""http://schemas.microsoft.com/mapi/proptag/0x0037001E"" like 'Geburtstag von%' AND ""http://schemas.microsoft.com/mapi/id/{00062002-0000-0000-C000-000000000046}/82310003"" = 4")  
    While birthdays.count > 0
        birthdays.Remove 1
    Wend
End Sub
2. Wie kann ich alle Geburtstage wieder automatisch aus den Outlook Kontakte 2010 wieder in den Kalender eintragen lassen?
Erstellt ein Geburtstags-Serienevent für jeden Kontakt für welchen ein Geburtstag hinterlegt ist
Sub RecreateBirthdays()
    Dim folderContacts As Folder, contact As Object, folderCalendar as Folder
    Set folderContacts = Outlook.GetNamespace("MAPI").GetDefaultFolder(olFolderContacts)  
    Set folderCalendar = Outlook.GetNamespace("MAPI").GetDefaultFolder(olFolderCalendar)  
   
    For Each contact In folderContacts.items.Restrict("@SQL=NOT ""http://schemas.microsoft.com/mapi/proptag/0x3A420040"" IS NULL")  
            If contact.CLASS = olContact Then
                Dim entry As AppointmentItem
                Set entry = folderCalendar.items.add(olAppointmentItem)
                entry.AllDayEvent = True
                entry.Subject = "Geburtstag von " & contact.FullName  
                entry.ReminderMinutesBeforeStart = 1440
                entry.ReminderSet = True
                Dim opattern As RecurrencePattern
                Set opattern = entry.GetRecurrencePattern
                With opattern
                    .RecurrenceType = olRecursYearly
                    .DayOfMonth = DateTime.Day(contact.Birthday)
                    .MonthOfYear = DateTime.Month(contact.Birthday)
                    .NoEndDate = True
                End With
                entry.Save
            End If
    Next
End Sub
Grüße Uwe
Mitglied: Rene1976
Rene1976 22.11.2014 aktualisiert um 19:16:40 Uhr
Goto Top
Hallo colinardo,

danke für deinen Tipp.
Das löschen hat einwandfrei funktioniert.

Aber beim wieder erstellen der Geburtstage kam dieser Fehler.

Microsoft Visual Basic for Applications
Laufzeitfehler '-970850295 (c6220009)':

Das Serienmuster ist ungültig.
OK Hilfe

Hast du eine Tipp woran das liegt?
Ich nutze Outlook 2010 (ohne Exchange).

Wird bei dem erstellen auch die Erinnerung gesetzt?

Besten Dank.

Rene
Mitglied: colinardo
colinardo 22.11.2014, aktualisiert am 24.11.2014 um 12:03:07 Uhr
Goto Top
Hallo Rene,
hmm. läuft hier mit 200 Testkontakten auf Outlook 2010 einwandfrei. Muss ich morgen nochmal nachsehen.
Eventuell ein komischer/beschädigter Konakt bei dir im Ordner. Kannst ja mal Breakpoints setzen um den entsprechenden Kontakt ausfindig zu machen.
Wird bei dem erstellen auch die Erinnerung gesetzt?
Lässt sich leicht ergänzen, mach ich dir morgen dann. (-edit- wurde oben ergänzt)

Grüße Uwe