0x80040109 Fehler, wenn das Outlook-Objektmodell mit einem IMAP-Konto in Outlook 2013 verwendet wird

Problembeschreibung

Wenn Sie das Outlook-Objektmodell zum Hinzufügen eines UserProperty-Objekts zu einer E-Mail-Nachricht für ein IMAP-Konto in Microsoft Outlook 2013 verwenden, wird die folgende Fehlermeldung angezeigt:

Laufzeitfehler '-2147221239 (80040109)': Der Vorgang kann nicht ausgeführt werden, weil die Nachricht geändert wurde.

Hinweis

  • Dieses Problem tritt nur auf, wenn Sie den Code in schneller Folge ausführen, um derselben E-Mail-Nachricht beim zweiten Mal ein UserProperty-Objekt hinzuzufügen.
  • Dieses Problem tritt nicht auf, wenn der Vorschaubereich deaktiviert ist oder Wenn Sie zwischen E-Mail-Nachrichten wechseln, bevor Sie den Code zum zweiten Mal ausführen.

Problemumgehung

Um dieses Problem zu umgehen, schließen Sie alle Elemente, nachdem Sie den Code ausgeführt haben, um einer E-Mail-Nachricht ein UserProperty-Objekt hinzuzufügen. Oder führen Sie den Code nur einmal für dieselbe E-Mail-Nachricht aus. Dieses Problem tritt auf, weil das mehrfache Bearbeiten und Speichern einer E-Mail-Nachricht für ein IMAP-Konto ineffizient ist. Wenn eine E-Mail-Nachricht gespeichert wird, muss sie als völlig neue E-Mail-Nachricht auf den Server hochgeladen werden, und die ursprüngliche E-Mail-Nachricht wird gelöscht. Wenn der Vorschaubereich aktiviert ist, verbleibt die ursprüngliche E-Mail-Nachricht im Arbeitsspeicher, während die zugrunde liegende E-Mail-Nachricht aufgrund der mehreren Uploads geändert wird.

Führen Sie die folgenden Schritte aus, um dieses Problem zu reproduzieren:

  1. Wählen Sie eine E-Mail-Nachricht in der Nachrichtenliste aus.

  2. Stellen Sie sicher, dass der Vorschaubereich aktiviert ist.

  3. Führen Sie den folgenden Code für dieselbe E-Mail-Nachricht zweimal in schneller Folge aus:

    Function ReproCode()
    Dim oExp As Outlook.Explorer
    Dim oSel As Outlook.Selection
    Dim oMail As Outlook.MailItem
    Dim oProp As UserProperty
    Dim oProps As UserProperties
    
    Set oExp = Application.ActiveExplorer
    Set oSel = oExp.Selection
    
    For iCount = 1 To oSel.Count
    If oSel.Item(iCount).Class = OlObjectClass.olMail Then
    Set oMail = oSel.Item(iCount)
    Set oProps = oMail.UserProperties
    Set oProp = oProps.Add("TextProp", olText, False, 1)
    oProp.Value = "Sample Text"
    oMail.Save
    End If
    Next iCount
    
    Set oExp = Nothing
    Set oSel = Nothing
    Set oMail = Nothing
    Set oProp = Nothing
    Set oProps = Nothing
    
    End Function
    

Hinweis

Die Verwendung der hier aufgeführten Informationen, Makro- oder Programmcodes geschieht auf Ihre eigene Verantwortung. Microsoft stellt Ihnen diese Informationen sowie Makro- und Programmlistings ohne Gewähr auf Richtigkeit, Vollständigkeit und/oder Funktionsfähigkeit sowie ohne Anspruch auf Support zur Verfügung. Die zur Verfügung gestellten Makro- und Programmierungsbeispiele sollen lediglich exemplarisch die Funktionsweise des Beispiels aufzeigen. Die Mitarbeiter der Microsoft Product Support Services erklären Ihnen gerne die Funktionsweise einer bestimmten Prozedur. Die Mitarbeiter werden diese Beispiele jedoch weder modifizieren, um zusätzliche Funktionalität zu schaffen, noch Prozeduren entwickeln, die auf Ihre spezifischen Bedürfnisse zugeschnitten sind.