Tipps & Tricks 02.02.2015, 07:00 Uhr

Outlook-Kontakte: Geburtstag und aktuelles Alter anzeigen

In Outlook können Sie bei Kontakten das Geburtsdatum eintragen. Damit landen die Geburtstage auch im Kalender. Aber wie bringen Sie Outlook dazu, auch das jeweilige Alter der Person anzuzeigen?
Lösung: Das Eintragen des Geburtstags bei Kontakten ist noch einfach. 
Öffnen Sie den Kontakteintrag per Doppelklick. Bei Outlook 2007 und 2010 klicken Sie im Reiter Kontakt bei «Anzeigen» auf Details, dann lässt sich bei Geburtstag einer auswählen. In Outlook 2013 wird Ihnen das Geburtstagsfeld nach Doppelklick eines Kontakts automatisch angezeigt. Falls nicht - und wenn Sie einen neuen Kontakt erfassen, gehts hier ebenfalls über Kontakt/Anzeigen zu Details.
Tipp: Damit das später auch mit der Altersanzeige klappt, müssen Sie den Tag natürlich im richtigen Jahr eintragen. Statt aber das Menü auszuklappen und im Kalender um mehrere Jahrzehnte zurückzublättern, können Sie das genaue Geburtsdatum im Format TT.MM.JJJJ (z.B. 31.12.1950) direkt ins Feld tippen.
Noch ein weiterer Tipp, bevor wir zur Altersangabe schreiten: Der Geburtstag erscheint im Outlook-Kalender nur, wenn Sie die Kontakte mit den Geburtstagen manuell erfassen. Wenn Sie Kontakte aus PST- oder anderen Dateien importieren, erscheinen die Wiegenfeste üblicherweise nicht, auch wenn die Daten beim Import korrekt im Feld «Geburtstag» landen. Sie können aber ein Makro verwenden, um einmal die enthaltenen Geburtstage in den Kalender zu schreiben. Wie das geht, lesen Sie in diesem Kummerkastenbeitrag.

Und jetzt noch das aktuelle Alter anzeigen

Outlook bietet leider keine Einstellung für die Anzeige des Alters Ihrer Kontakte. Dabei wäre es doch gut zu wissen, falls jemand einen «Runden» vor sich hat.
Hierfür gibts wieder ein Makro; diesmal hat eine Leserin den Makrocode auf der Webseite von Incas Training gefunden, inklusive ausführlicher Anleitung mit allen Wenns und Abers. Wir habens getestet - und es funktioniert, wie beschrieben.
Die Kurzfassung davon: Das Makro behandelt alle regelmässigen ganztägigen Ereignisse, deren Bezeichnung mit «Geburtstag von» beginnt. Damit erwischen Sie sowohl die aus den Kontakten stammenden Geburtstage als auch allenfalls als wiederkehrende jährliche Ereignisse eingetragene Geburtstage - sofern deren Bezeichnung ebenfalls mit «Geburtstag von» beginnt. Die Altersanzeige erfolgt immer aufgrund der Differenz zwischen dem Geburts- und dem aktuellen Datum. Das bedeutet: Wenn Sie im Kalender ein paar Jahre weiterblättern, werden Sie bei den Geburtstagen dennoch die aktuelle Altersangabe sehen; nicht das Alter, das die Person zu jenem Zeitpunkt haben wird.
Starten Sie den Visual-Basic-Editor, indem Sie die Tastenkombination Alt+F11 drücken. Gehen Sie im neuen Fenster zu Einfügen/Modul
Kopieren Sie den nachstehenden Makrocode (von und mit «Sub AlterAnzeigen()» bis und mit «End Sub») und fügen Sie ihn ins leere Modulfenster ein:
Sub AlterAnzeigen()
Dim myNameSpace As NameSpace
Dim Alter As String
Dim Zaehler
Dim GebJahr
Set myolApp = CreateObject("Outlook.Application")
Set myNameSpace = myolApp.GetNamespace("MAPI")
Set myFolder = myNameSpace.GetDefaultFolder(olFolderCalendar)
Set myitems = myFolder.Items
Zaehler = 0
'Suche nach dem Begriff "Geburtstag von" in allen Kalendereinträgen
For i = myitems.Count To 1 Step -1
'Prüfung der Kalendereinträge auf den Text "Geburtstag von"
'und Überprüfung ob es sich um ein ganztägiges Ereignis handelt
If InStr(myitems(i).Subject, "Geburtstag von") _
And myitems(i).AllDayEvent = True Then
myitems(i).Display
GebJahr = myitems(i).GetRecurrencePattern.PatternStartDate
Alter = DateDiff("yyyy", GebJahr, Now()) 'Hier wird das Alter errechnet
myitems(i).Location = "[Alter: " + Alter + "]"
myitems(i).Save
myitems(i).Close 0
Zaehler = Zaehler + 1 'Zähler für die Anzahl der geänderten Einträge
End If
Next
MsgBox "Fertig!" & vbCrLf & Zaehler & " Geburtstagseinträge geändert.", vbInformation, "Geburtstage angepasst "
End Sub
Das sollte im VB-Editor etwa so aussehen:
Erscheinungsbild des Codes
Klicken Sie nun aufs Diskettensymbol, um den Code zu speichern. Klicken Sie aufs Icon «Abspieltaste» (das kleine grüne, nach rechts weisende Dreieck). Outlook jagt durch den Kalender und ergänzt darin bei allen Geburtstagen das aktuelle Alter.
Das Makro ist fertig
Rufen Sie im Kalender einen Tag auf, der einen Geburtstag enthält, ist die Beschreibung mit einem Vermerk wie «[Alter: 45]» ergänzt.
Wenn Sie jeweils neue Kontakte eingetragen, Geburtstage ergänzt oder geändert haben, müssen Sie das Makro erneut starten. Das können Sie via Alt+F11 tun, indem Sie in der linken Spalte unter Module das Modul1 auswählen und per Abspielknopf starten. Alternativ fügen Sie das Makro in die Schnellzugriffsleiste ein, die sich am oberen linken Rand befindet: Kleines Menü am Ende der winzigen Symbolleiste ganz oben links ausklappen, gefolgt von Weitere Befehle. Wählen Sie oben «Makros», klicken das Projekt namens «Projekt1.AlterAnzeigen» an und klicken auf Hinzufügen. Wenn Sie wollen, können Sie via «Ändern» noch ein anderes Icon dafür auswählen und die Bezeichnung anpassen. Noch via OK bestätigen, dann ist das Icon griffbereit. (PCtipp-Forum)



Kommentare
Avatar
Rasenplumpi
21.01.2016
Habe das gleiche Problem Hallo Ich habe das gleiche Problem, und auch noch keine lösung gefunden. Bitte um Hilfe! Freundliche Grüsse

Avatar
Gaby Salvisberg
04.02.2016
Hallo! Dann sind offenbar die Makros nicht zugelassen. Das kann man ändern: Datei/Optionen/Trust Center, Schaltfläche Einstellungen für das Trust Center. Hier zu den Makroeinstellungen wechseln und die Makros beispielsweise auf «Benachrichtungen für alle Makros» setzen. Herzliche Grüsse Gaby

Avatar
dschulz
14.11.2016
Ist da ein Fehler im Makro? Hallo, funktioniert alles, aber es wird ein falsches Alter angezeigt. Z.B. Geburtstagseintrag 04.01.1957, Kalendereintrag erscheint am 4.1.2017: Alter:59, korrekt wäre aber Alter:60 Wo ist das Problem? Vielen Dank. MfG, dschulz

Avatar
Merlin2001
06.03.2018
Fehler im Makro ist leider technische Einschränkung Hallo dschulz, ja, leider liegt dieser Effekt in der Funktionsweise des Makros, die sich aber auch aus technischen Gründen* nicht ändern lässt. Das Makro schreibt das Alter ja dauerhaft in den Termin, dabei rechnet es aber immer vom Ausführungszeitpunkt (genauer dem Jahr der Ausführung) aus. Das heißt, wenn man das Makro in 2016 ausführt, stimmt das angezeigte Alter auch nur im Jahr 2016 - man muss das Makro also zu Beginn jedes Jahres neu ausführen, um die Alterswerte entsprechend zu aktualisieren. Ich habe den Quellcode ein bisschen angepasst, damit die Benutzer*in beim Aufruf des Makros darauf hingewiesen wird und auch bei der Altersangabe ersichtlich ist, für welches Jahr sie gilt. Außerdem habe ich die Ausführungsgeschwindigkeit ziemlich beschleunigt, indem die Einträge bei der Bearbeitung nicht mehr einzeln eingeblendet werden. Einer regelmäßigen Ausführung steht so also auch bei vielen Kontakten nichts mehr im Wege ;) (siehe geänderten Quellcode am Ende des Posts). Viele Grüße Marcus *Das Problem ist, dass die Geburtstagskalendereinträge aus technischer Sicht nur Serientermine sind, die sich jährlich wiederholen und deren erster Eintrag am tatsächlichen Geburtstag der Person ist. Dies hat natürlich den Vorteil, dass nicht für jede Person in jedem Jahr ein zusätzlicher Kalendereintrag erzeugt wird (man käme hier ja sonst schon bei 50 Kontakten, die alle 30 Jahre alt sind, auf 1500 (größtenteils sinnlose) Termineinträge in der Datenbank - ganz zu schweigen von der Frage, wie weit in die Zukunft man diese Einträge erzeugen sollte). Allerdings hat das auch den Nachteil, dass man im Makro den angezeigten Termin im Jahr 2017 nicht von dem im Jahr 2018 unterscheiden kann. Man kann also das Alter nicht dynamisch anzeigen lassen, sondern eben nur statisch einmal eintragen. Kurzum: Es wird Zeit, dass das Outlook-Team diesen Vorschlag umsetzt... [CODE]Option Explicit Public Sub AlterZuGeburtstagenHinzufuegen() ' Nutzer*in fragen, ob Makro gestartet werden soll und Funktion erläutern Dim nachricht As String nachricht = "Dieses Makro fügt zu allen Geburtstagen im Kalender das Alter der " & _ "Person als 'Ort' hinzu, damit es im Kalender sichtbar ist." & vbCrLf & vbCrLf & _ "Soll das Makro gestartet werden?" & vbCrLf & vbCrLf & vbCrLf & _ "(Achtung: Das Makro muss zu Beginn jeden Jahres erneut ausgeführt " & _ "werden, da es immer nur relativ zum aktuellen Jahr rechnet. Das ist " & _ "leider technisch nicht anders möglich.)" If vbYes <> MsgBox(nachricht, vbQuestion + vbYesNo, "Alter zu Geburtstagen hinzufügen?") Then Exit Sub End If Const SUCHBEGRIFF = "Geburtstag von" ' (Standardwert: "Geburtstag von") ' Kalendereinträge aus dem Outlook-Kalender lesen Dim KalenderEintraege As Items Set KalenderEintraege = GetCalendarItems Dim alter As Long Dim zaehler As Long Dim geburtsjahr As Long Dim aktuellesJahr As Long aktuellesJahr = Year(Now()) zaehler = 0 'Suche in allen Kalendereinträgen Dim aktuellerEintrag As AppointmentItem Dim i As Long For i = KalenderEintraege.Count To 1 Step -1 Set aktuellerEintrag = KalenderEintraege(i) 'Prüfung auf den Text SUCHBEGRIFF (standardmäßig "Geburtstag von") 'und Überprüfung, ob es sich um ein ganztägiges Ereignis handelt If InStr(aktuellerEintrag.Subject, SUCHBEGRIFF) _ And aktuellerEintrag.AllDayEvent Then geburtsjahr = Year(aktuellerEintrag.GetRecurrencePattern.PatternStartDate) alter = aktuellesJahr - geburtsjahr ' Alter wird als "Ort" im Eintrag gespeichert aktuellerEintrag.Location = "[Alter " & aktuellesJahr & ": " & alter & "]" aktuellerEintrag.Close olSave zaehler = zaehler + 1 'Zähler für die Anzahl der geänderten Einträge End If Next ' Fertigmeldung anzeigen nachricht = "Fertig!" & vbCrLf & vbCrLf & _ zaehler & IIf(zaehler = 1, " Geburtstagseintrag", " Geburtstagseinträge") & " geändert." MsgBox nachricht, vbInformation, "Geburtstage angepasst" End Sub ' Diese Funktion fasst den Zugriff auf den Outlook-Kalender zusammen und liefert ' die Liste der Kalendereinträge zurück Private Function GetCalendarItems() As Items Dim myOutlookApp As Application Dim myNameSpace As NameSpace Dim myFolder As Folder Set myOutlookApp = CreateObject("Outlook.Application") Set myNameSpace = myOutlookApp.GetNamespace("MAPI") Set myFolder = myNameSpace.GetDefaultFolder(olFolderCalendar) Set GetCalendarItems = myFolder.Items End Function[/CODE]

Avatar
Gaby Salvisberg
07.03.2018
Hallo Merlin2001 – und willkommen im PCtipp-Forum! Interessanter Hinweis, danke! Ich habe soeben für den Issue gevotet. Herzliche Grüsse Gaby