У меня есть макрос в Outlook VBA, который предназначен для установки категории выбранного электронного письма и отправки ответного электронного письма отправителю, когда пользователь нажимает кнопку на «Ленте».
Приведенный ниже код правильно устанавливает категорию для всех новых писем, но выдает «Ошибка выполнения 440: невозможно сохранить этот элемент». когда запускается на электронные письма, которые сидели некоторое время. Я не знаю, с чем это связано, так как некоторое время он работает нормально, а затем перестает работать.
Я попытался перезапустить Outlook, войти в систему и выйти из системы, а также перезагрузить компьютер, но ни один из них, похоже, не помогвызвать изменение в поведении, поэтому я считаю, что это каким-то образом связано с продолжительностью, в течение которого электронное письмо находилось. Это довольно странно, так как я не понимаю, почему длительность сидения в папке должна влиять на возможность сохранения, а не на доступ к свойствам MailItem.
Упрощенная версия кода(без части отправки электронной почты, которая работает нормально) выглядит следующим образом:
Public Sub UpdateCategory
Dim objItem as Object
Set objItem = GetCurrentItem()
'Verify that selected item is an email and an engineering request
If TypeName(objItem) = "MailItem" And InStr(LCase(objItem.Subject), "engineering request") > 0 Then
objItem.Categories = "Test"
objItem.Save
End If
Set objItem = Nothing
End Sub
Function GetCurrentItem() As Object
Dim objApp As Outlook.Application
Set objApp = Application
On Error Resume Next
Select Case TypeName(objApp.ActiveWindow)
Case "Explorer"
Set GetCurrentItem = objApp.ActiveExplorer.Selection.Item(1)
Case "Inspector"
Set GetCurrentItem = objApp.ActiveInspector.CurrentItem
End Select
Set objApp = Nothing
End Function
Любые мысли или предложения будут с благодарностью !!