· 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.

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 Sub

Anwendung

  1. Outlook öffnen, Alt + F11 drücken (VBA-Editor)
  2. Einfügen, Modul wählen
  3. Code einfügen
  4. Speichern
  5. Outlook-Kontakteordner öffnen
  6. Gewünschte Kontakte markieren (Strg + A für alle oder Einzelauswahl)
  7. Alt + F8, Makro KontakteFormularMassenAenderung ausführen
  8. 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.

Back to Blog

Related Posts

View All Posts »
Access-Schreibkonflikt mit MariaDB, MySQL oder MSSQL beheben

Access-Schreibkonflikt mit MariaDB, MySQL oder MSSQL beheben

Die Fehlermeldung "Dieser Datensatz wurde seit Beginn der Bearbeitung von einem anderen Benutzer geändert" tritt in Access-Frontends mit externem Backend häufiger auf als erwartet. Die Ursache liegt im Datentyp, die Lösung in einem TIMESTAMP-Feld.

PDF, PDF/A, PDF/X: Welches Format wofür?

PDF, PDF/A, PDF/X: Welches Format wofür?

PDF ist nicht gleich PDF. Für Langzeitarchivierung gilt PDF/A, für Druckdateien PDF/X, für technische Dokumentation PDF/E. Dieser Leitfaden erklärt die Unterschiede.

Candis: Digitale Rechnungserfassung und Freigabe

Candis: Digitale Rechnungserfassung und Freigabe

Candis automatisiert die Rechnungserfassung per OCR, digitalisiert Freigabeprozesse und exportiert direkt nach DATEV und SEPA-XML. Netzleiter ist akkreditierter Go-Digital-Anbieter und hilft bei der Förderung.