· IT-Automatisierung · 2 min read
VBA-Makro: Outlook-Kontakte per Massenänderung automatisieren
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.

VBA-Automatisierung für Outlook-Kontakte löst ein klassisches Problem: Nach einer Formularaktualisierung übernehmen nur neu angelegte Kontakte das neue Layout. Bestehende Kontakte bleiben auf dem alten Formular, weil die MessageClass-Eigenschaft des Elements nicht automatisch angepasst wird. Ein VBA-Makro erledigt die Massenänderung in Sekunden.
Das Problem
Wer in Outlook benutzerdefinierte Kontaktformulare nutzt, kennt das Verhalten: Nach einer Formularaktualisierung übernehmen nur neu angelegte Kontakte das neue Layout. Bestehende Kontakte behalten das alte Formular, weil die MessageClass-Eigenschaft 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 Schritt für Schritt
- 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.
Formularnamen herausfinden
Der Formularname entspricht dem MessageClass-Wert des Formulars. Zu finden unter: Entwicklertools > Entwurfsformular > Eigenschaften > Klasse (MessageClass).
Häufige Fragen
Funktioniert das Makro auch bei Exchange-gehosteten Postfächern? Ja, solange das Makro im lokalen Outlook läuft und der Benutzer Schreibrechte auf die Kontakte hat. Bei Exchange-Umgebungen mit zentralen Formular-Bibliotheken sollte der IT-Administrator den Rollout koordinieren.
Was passiert, wenn ein falscher Formularname eingegeben wird? Outlook speichert den Kontakt mit dem neuen MessageClass-Wert. Liegt das Formular nicht vor, zeigt Outlook einen Fallback auf das Standard-Kontaktformular. Das Makro lässt sich erneut mit dem korrekten Namen ausführen.
Kann ich alle Kontakte im Ordner auf einmal umstellen? Ja. Kontakteordner öffnen, Strg + A für alle Einträge, dann Makro ausführen. Bei großen Mengen (über 500 Kontakte) Testlauf mit wenigen Kontakten empfohlen.
Techiota entwickelt und wartet benutzerdefinierte Outlook-Formulare und Office-Automatisierungen für KMU in Hamburg. Sprechen Sie uns an über techiota.de.


