0x80040109 chyba při použití objektového modelu Outlooku s účtem IMAP v Outlooku 2013
Příznaky
Při použití objektového modelu aplikace Outlook přidat objekt UserProperty do e-mailové zprávy pro účet IMAP v Microsoft Outlook 2013, zobrazí se následující chybová zpráva:
Chyba -2147221239 (80040109): Operaci nelze provést, protože zpráva byla změněna.
Poznámka
- K tomuto problému dochází pouze při spuštění kódu v rychlém sledu přidat objekt UserProperty do stejné e-mailové zprávy podruhé.
- K tomuto problému nedochází, pokud je podokno náhledu zakázané nebo pokud před druhým spuštěním kódu přepnete mezi e-mailovými zprávami.
Řešení
Chcete-li tento problém vyřešit, zavřete všechny položky po spuštění kódu přidat objekt UserProperty e-mailové zprávy. Nebo spusťte kód jenom jednou pro stejnou e-mailovou zprávu. K tomuto problému dochází, protože úprava a uložení e-mailové zprávy vícekrát pro účet IMAP je neefektivní. Když se e-mailová zpráva uloží, musí se nahrát na server jako úplně nová e-mailová zpráva a původní e-mailová zpráva se odstraní. Pokud je podokno náhledu povolené, původní e-mailová zpráva zůstane v paměti, zatímco podkladová e-mailová zpráva se změní kvůli několika nahráváním.
Pokud chcete tento problém reprodukovat, postupujte takto:
Vyberte e-mailovou zprávu v seznamu zpráv.
Ujistěte se, že je povolené podokno náhledu.
Spusťte následující kód pro stejnou e-mailovou zprávu dvakrát za sebou:
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
Poznámka
Společnost Microsoft poskytuje ukázky programování pouze pro ilustraci, bez žádné záruky výslovně uvedené nebo odvozené, včetně, bez omezení, odvozených záruk vztahujících se k obchodovatelnosti nebo vhodnosti pro určitý účel. Tento článek předpokládá, že uživatel je obeznámen s programovacím jazykem, který je předmětem ukázky, a s nástroji použitými pro vytvoření a ladění skriptu. Technici podpory společnosti Microsoft mohou pomoci vysvětlit funkce konkrétního postupu. Nebudou však upravovat tyto příklady tak, aby poskytovaly přidanou funkcionalitu nebo sestavovaly postupy, které splňují vaše specifické požadavky.