FixContactAB

Outlook erlaubt ihnen die Pflege ihrer Kontakte in eigenen Kontaktordnern und kann ihnen diese über den "Outlook Adressbuch-Dienst" sogar als Adressbuch für E-Mails anbieten. So schön diese Funktion ist, so nervig sind zwei Fakten:

  • Faxnummern sind gültige Empfänger
    Das ist besonders ärgerlich, wenn Sie keinen Faxserver haben der die FAX:-Adressen bedienen kann
  • "Name" ist nicht passend formatiert
    Das Adressbuch zeigt nicht nur den Anzeigename (Displayname) an, sondern auch den "Betreff" (Subject) eines Kontakts als Name, den Sie über die Karteikarte gar nicht direkt pflegen können

Die Liste wird dann schnell unübersichtlich, wie das Beispiel mit nur einem Kontakt schon zeigt.

Neben dem Mailadressen erscheinen hier auch die Faxnummern als gültige Adressen. Das macht Outlook schon immer alleine ohne Rücksicht, ob der Exchange Server oder eine lokale Software überhaupt weiß, wie man mit Adressen vom Typ "[FAX:xx]" umgeht. Leider gibt es meines Wissens keine Funktion, um dieses Verhalten auf dem Client abzuschalten.

Allerdings kann man Outlook derart überlisten, dass man die Faxnummer so abändert, dass Outlook sie nicht mehr erkennt. Ergänzt man die Nummer z.B. einfach mit einem Prefix wie "fax:", dann erkennt Outlook diese nicht mehr als gültige Faxnummer und blendet diesen Eintrag aus.

Das folgende VBA-Makro macht genau das. Es muss allerdings vom Benutzer selbst gestartet werden und fordert zur Auswahl des Ordners aus, welcher verarbeitet werden soll. Hinzu kommt die Intelligenz von Outlook. ändert ein Anwender die Faxnummer nachträglich, dann wird diese wieder sichtbar, da Outlook diese Nummer wieder normiert bis das Skript erneut die Nummer untauglich gemacht hat.

Eine zweite Funktion ist die Anpassung des "Display Namens". Die erste Spalte im Adressbuch stellt nicht das Feld "Speichern unter" oder den Displaynamen des Kontakts dar, sondern das Feld "Subject", welches Sie über Outlook gar nicht bearbeiten können. Das Skript übernimmt die Aufgabe, bei allen Kontakten eben auch dieses Feld auf den Wert des "Speichern unter"-Felds zu setzen.

' Outlook Adressbuchanzeige "Name" ist Inhalte von PR_SUBJECT
' auch wenn "Speichern unter" ausgewählt wurde
' Dieses Skript normiert das Feld für den gewaehlten Ordner

    Dim objfolder As MAPIFolder
    Set objfolder = Outlook.GetNamespace("MAPI").PickFolder
    
    Dim blnmodified As Boolean
    
    If objfolder.DefaultItemType = olContactItem Then
        Dim objcontact As ContactItem
        Dim total As Long
        total = 0 für Each objcontact In objfolder.Items.Restrict("[MessageClass]='IPM.Contact'")
            blnmodified = False
            
            
            If objcontact.Subject <> objcontact.FileAs Then
                objcontact.Subject = objcontact.FileAs
                blnmodified = True
            End If
            
            If Left(objcontact.BusinessFaxNumber, 4) <> "Fax:" Then
                objcontact.BusinessFaxNumber = "Fax:" & objcontact.BusinessFaxNumber
                blnmodified = True
            End If
            
            If Left(objcontact.HomeFaxNumber, 4) <> "Fax:" Then
                objcontact.HomeFaxNumber = "Fax:" & objcontact.HomeFaxNumber
                blnmodified = True
            End If
            
            If blnmodified Then
                total = total + 1
                objcontact.Save
            End If
            
        Next
        MsgBox total & " Kontakte angepasst"
    Else
        MsgBox "Der Order ist kein Kontaktordner", vbCritical
    End If
        
End Sub

In der vorliegenden Form muss der Anwender selbst dieses Makro innerhalb von Outlook ausführen und den gewünschten Kontakt-Ordner auswählen. Analog zu Skripten wie Feiertage und andere wäre natürlich auch eine servergestützte regelmäßige Verarbeitung möglich.

Weitere Links