· Mehdi Aroui · Produktivität · Lesedauer von ca. 2 Min.
VBA-Makro: Outlook-Kontakte auf neues Formular umstellen
Wer ein benutzerdefiniertes Outlook-Kontaktformular aktualisiert, stellt fest, dass bestehende Kontakte das alte Formular behalten. Dieses VBA-Skript stellt markierte Kontaktelemente per Massenaktion auf die neue Formularversion um.

Das Problem
Wer in Outlook benutzerdefinierte Kontaktformulare nutzt, kennt das Verhalten: Nach einer Formularaktualisierung übernehmen nur neu angelegte Kontakte das neue Layout. (Stand 2026: Das Verhalten und die VBA-Lösung gelten für Outlook in Microsoft 365 unverändert.) Bestehende Kontakte bleiben auf dem alten Formular, weil die MessageClass-Eigenschaft des Elements nicht automatisch angepasst wird.
Lösung: VBA-Makro für Massenumstellung
Das folgende Makro fragt nach dem Namen des neuen Formulars und stellt alle markierten Kontaktelemente per Schleife um.
Sub KontakteFormularMassenAenderung()
Dim objSelection As Outlook.Selection
Dim i As Long
Dim objItem As Object
Dim strOldForm As String
Dim strNewForm As String
Set objSelection = Outlook.Application.ActiveExplorer.Selection
If objSelection Is Nothing Then
MsgBox "Es ist kein Element markiert.", vbExclamation + vbOKOnly
Else
strNewForm = InputBox("Name des neuen Formulars eingeben:", , "IPM.Contact.IhrFormularName")
If strNewForm <> "" Then
For i = objSelection.Count To 1 Step -1
Set objItem = objSelection(i)
strOldForm = objItem.MessageClass
If LCase(strNewForm) <> LCase(strOldForm) Then
objItem.MessageClass = strNewForm
objItem.Save
End If
Next
MsgBox "Abgeschlossen.", vbInformation + vbOKOnly
End If
End If
End SubAnwendung
- Outlook öffnen, Alt + F11 drücken (VBA-Editor)
- Einfügen, Modul wählen
- Code einfügen
- Speichern
- Outlook-Kontakteordner öffnen
- Gewünschte Kontakte markieren (Strg + A für alle oder Einzelauswahl)
- Alt + F8, Makro
KontakteFormularMassenAenderungausführen - Namen des neuen Formulars eingeben, Bestätigen
Das Makro durchläuft die markierten Elemente rückwärts (For i = Count To 1 Step -1), um Indexverschiebungen bei Änderungen zu vermeiden. Nur Elemente mit abweichender MessageClass werden gespeichert.
Hinweis zur Formularbenennung
Der Formularname entspricht dem MessageClass-Wert des Formulars. Zu finden unter: Entwicklertools, Entwurfsformular, Eigenschaften, Klasse (MessageClass).
Häufige Fragen
Warum übernehmen bestehende Kontakte nach einer Formularaktualisierung nicht automatisch das neue Layout?
Neu angelegte Kontakte erhalten das neue Formular, weil sie beim Anlegen die aktuelle MessageClass-Eigenschaft zugewiesen bekommen. Bestehende Kontakte behalten ihre ursprüngliche MessageClass, die sich nach einer Formularaktualisierung nicht automatisch anpasst.
Wie führe ich das VBA-Makro für die Massenumstellung aus?
Im VBA-Editor (Alt + F11) ein neues Modul einfügen, den Code speichern, dann im Outlook-Kontakteordner die gewünschten Kontakte markieren. Über Alt + F8 das Makro KontakteFormularMassenAenderung starten und den Namen des neuen Formulars in der Eingabeaufforderung angeben.
Warum durchläuft das Makro die Auswahl rückwärts (Count To 1 Step -1)?
Die Rückwärtsschleife vermeidet Indexverschiebungen, die entstehen können, wenn sich die Selection während der Bearbeitung verändert. Zusätzlich speichert das Makro nur Elemente, deren MessageClass tatsächlich vom neuen Formularnamen abweicht.
Netzleiter betreut KMU in Hamburg und der Metropolregion bei der Entwicklung und Wartung benutzerdefinierter Outlook-Formulare und Office-Automatisierungen. Fragen an die Hotline: 040 25 499 500.



