Wenn in einem Outlook Kontakt ein Geburtstag eingetragen wird und anschließend der Kontakt gespeichert wird, erzeugt Outlook anschließend automatisch ein Kalendereintrag für den Geburtstag. Soweit so gut. Wenn man jetzt Kontakte per PST oder andere Form in Outlook importiert, die Geburtstage enthalten, werden diese nicht automatisch in den Kalender eingetragen. Man müsste nun in jedem Kontakt manuell nochmal das Geburtstagsfeld editieren und den Kontakt speichern.
Das ist natürlich bei einer Menge von Kontakten sehr aufwändig! Deshalb habe ich im Internet ein VBA Makro für Outlook gefunden, welches das genau automatisiert für einen vorher ausgewählten Kontakte-Ordner durchführt.
Um das VBA Makro zu nutzen, muss man es auf folgende Weise in Outlook einfügen:
- ALT+F11 drücken (damit startet der Visual Basic Editor)
- Im linken Bereich den Baum „Projekt1″ solange expandieren, bis „ThisOutlookSession“ erscheint
- Doppelklick auf „ThisOutlookSession“ (damit öffnet sich im rechten Bereich ein Editorfenster
- Im Editorfenster unten stehenden Code per Copy & Paste einfügen
- Speichern und Editorfenster schließen
Nun kann man das Makro im Outlook starten, dazu:
- Im Menü „Extras“ -> „Makro“ -> „Makros“ auswählen
- In der sich öffnenden Dialogbox steht dann „ThisOutlookSession.BirthdayImport“ -> Hier einfach die Schaltfläche „Ausführen“ anklicken
- Im nun öffnenden Dialog den Kontakte-Ordner auswählen, in dem die Kontakte mit den Geburtstagen für den Kalender liegen
- Go!
Sub BirthdayImport() Dim myFolder As MAPIFolder Set myFolder = Session.PickFolder For i = myFolder.Items.Count To 1 Step -1 myFolder.Items(i).Display mybirthday = myFolder.Items(i).Birthday myFolder.Items(i).Birthday = "12.12.2000 " myFolder.Items(i).Birthday = mybirthday myFolder.Items(i).Save myFolder.Items(i).Close 0 Next i End Sub
Hinweis: Ich übernehme keinerlei Haftung für irgendwelche auftretenden Schäden durch die Benutzung des hier beschriebenen Vorgehens!




Manchmal sind die Lösungen so einfach!
Das Problem hatte ich schon öfters, Danke!
[...] Sub BirthdayImport() Dim myFolder As MAPIFolder Set myFolder = Session.PickFolder For i = myFolder.Items.Count To 1 Step -1 myFolder.Items(i).Display mybirthday = myFolder.Items(i).Birthday myFolder.Items(i).Birthday = "12.12.2000 " myFolder.Items(i).Birthday = mybirthday myFolder.Items(i).Save myFolder.Items(i).Close 0 Next i End Sub 3. "Zurck" synchronisieren und schon befinden sich die Geburtstagseintrge am Nokia 5310. Dieser Methode funktioniert theoretisch auch mit anderen Nokiamodellen, die sich mittels PC Suite via Outlook synchronisieren lassen Links: Nokia/Outlook Synchronisation Aus importierten Kontaktdaten in Outlook Geburtstagseintrge erstellen [...]
Super, vielen Dank.
So konnte ich endlich die vielen Geburtstagsduplikate im Kalender entsorgen:
Einfach Kalender nach „Geburtstage“ durchsuchen, löschen und mit dem Makro neu einkopieren.
Danke und guten Rutsch.
Nico
hey danke. super. hab ich schon lange gesucht.
funktioniert einwandfrei!!!
mfg simson2810
Oh man…! Herzlichen Dank..!
Das hat mir ungemein geholfen..!
Ich dachte schon das ich alle Geburtstage wieder einzelnd einfügen muss…!
Funktioniert bei mir leider nicht, geht das Makro auch bei Office 2007?
@Kacid: ja, es funktioniert bei Outlook 2007.
Hallo zusammen, das Skript funktioniert grundsätzlich prima. Durch das Öffnen von jedem Kontakt, auch wenn er keinen Geburtstag enthält, ist es allerdings unnötig langwierig. Habe eine kleine „Verkürzung“ eingebaut, so dass nur Kontakte mit einem eingetragenen Geburtstag geöffnet und abgespeichert werden.
Sub BirthdayImport()
Dim myFolder As MAPIFolder
Set myFolder = Session.PickFolder
For i = myFolder.Items.Count To 1 Step -1
myname = myFolder.Items(i).LastName
mybirthday = myFolder.Items(i).Birthday
If mybirthday „01.01.4501″ Then
myFolder.Items(i).Display
myFolder.Items(i).Birthday = „12.12.2000 “
myFolder.Items(i).Birthday = mybirthday
myFolder.Items(i).Save
myFolder.Items(i).Close 0
End If
Next i
End Sub
Zuvor genanntes Skript funktioniert so nicht, da einige Zeichen ausgefiltert wurden. In der Zeile
If mybirthday „01.01.4501″ Then’
fehlt das „Ungleich-Zeichen“
Das Skript wurde nur unter Windows getestet, auf anderen System kann ein leeres Geburtsdatumsfeld evtl. einen anderen Wert als „01.01.4501″ haben.
Bei Outlook 2007 muß man das Geburtsdatum mit dem Wert „01.01.4501″ belegen sonst wird kein neuer Kalendereintrag vorgenommen.
Also: myFolder.Items(i).Birthday = “01.01.4501”
Grüße
Ralf
leider funktioniert das Makro bei mir nicht und ich kann auch per nicht mehr ändern. Die Termine werden nur eingetragen wenn ich davor „Keines “ eingebe und speicher.
Jetzt würde ich gerne diesen Wert im Script verwenden, aber ich kenne den Wert dazu nicht und
myFolder.Items(i).Birthday = “Keines ” funtkioniert nicht.
Hat jemand eine Ahnung was ich machen soll?
LG
berfh
Hallo zusammen,
bisher habe ich Outlook 2003 verwnedet, da hat das marko funktioniert. Nun verwende ich Outlook 2007 und habe zunächst folgende Fehlermeldung bekommen: „Typkonflikt: Der Datentyp des Parameters kann nicht erzwungen werden. Die …“
Problemlösung:
anstatt:
myFolder.Items(i).Birthday = “01.01.4501”
dies verwenden:
myFolder.Items(i).Birthday = Empty
Falls Verteilerlisten unter der „normalen“ Kontakten sind, kommt eine andere Fehlermeldung, hier empfielt sich der Work-around: Verteilerlisten löschen oder verschieben.
Hoffe das hilf euch ebenso weiter wie es mir geholfen hat…
Moin,
läuft nicht, das Makro rattert zwar durch, aber eingetragen in den Kalender wird nix!
Hoffe mir ist da noch zu helfen
[...] eine Zahl: 6860 – Soviel Zugriffe hat der am häufigsten aufgerufene Artikel „Geburtstage von Kontakten im Outlook Kalender“ bisher [...]