Попробуйте переместить его первым затем удалить его (работает на некоторых patchs в 2000 году) или использовать RDO или CDO, чтобы сделать работу для вас (вы должны будете установить их)
Set objDeletedItem = objDeletedItem.Move(DeletedFolder)
objDeletedItem.Delete
CDO стороннюю
Set objCDOSession = CreateObject("MAPI.Session")
objCDOSession.Logon "", "", False, False
Set objMail = objCDOSession.GetMessage(objItem.EntryID, objItem.Parent.StoreID)
objMail.Delete
RDO
set objRDOSession = CreateObject("Redemption.RDOSession")
objRDOSession.Logon
set objMail = objRDOSession.GetMessageFromID(objItem.EntryID>)
objMail.Delete
вы также можете пометить сообщение первым, прежде чем удалить его и ю e через папку удаленных элементов и найти второй вызов для удаления dthe. Отметьте его с помощью свойства User.
objMail.UserProperties.Add "Deleted", olText
objMail.Save
objMail.Delete
петля через вас удаленные элементы искать этот userprop
Set objDeletedFolder = myNameSpace.GetDefaultFolder(olFolderDeletedItems)
For Each objItem In objDeletedFolder.Items
Set objProperty = objItem.UserProperties.Find("Deleted")
If TypeName(objProperty) <> "Nothing" Then
objItem.Delete
End If
Next
Я предпочел бы не пойти CDO или RDO, Потому что вся моя точка здесь было уменьшить сложность кода, и я предпочел бы не пойти вводя все новые зависимости. Второй - это то, что я делаю сейчас. Я сначала делаю (псевдо): для каждого сообщения в папке «Входящие» msg.delete '// перемещается к удаленным элементам next для каждого сообщения в удаленных элементах .удаление «// удаляет постоянно следующее тогда, что я хотел бы сделать, это что-то вроде: для каждого сообща в почтовом ящике msg.delete (постоянном = ИСТИНЫ) рядом – eidylon
Там нет такого метода в 2000 году. Вам нужно будет создать свою собственную функцию в VBA. Что не так с перемещением-удалением или вашим циклом? это производительность? – 76mel
Ничего изначально «неправильно» с ним, я просто искал способ сделать это более чисто, чем полагаться на два цикла. Спасибо в любом случае. – eidylon