Es imprescindible comprender el código bien previamente a utilizarlo a tu trabajo y si ttienes algo que aportar puedes decirlo en los comentarios.
Solución:
Intente moverlo primero y luego elimínelo (funciona en algunos parches en 2000) o use RDO o CDO para hacer el trabajo por usted (tendrá que instalarlos)
Set objDeletedItem = objDeletedItem.Move(DeletedFolder)
objDeletedItem.Delete
manera 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.MAPIOBJECT = objItem.Session.MAPIOBJECT
set objMail = objRDOSession.GetMessageFromID(objItem.EntryID>)
objMail.Delete
También puede marcar el mensaje primero antes de eliminarlo y recorrer la carpeta de elementos eliminados y encontrarlo y llamar a eliminar por segunda vez. Márquelo usando una propiedad de usuario.
objMail.UserProperties.Add "Deleted", olText
objMail.Save
objMail.Delete
recorrer los elementos eliminados buscar ese prop de usuario
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
La solución más simple de todas, similar a la primera forma:
FindID = deleteme.EntryID
deleteme.Delete
set deleteme = NameSpace.GetItemFromID(FindID)
deleteme.Delete
Hágalo dos veces y desaparecerá para siempre, y no habrá bucles que maten el rendimiento. (NameSpace puede ser una variable de espacio de nombres particular, si no está en la tienda predeterminada). Tenga en cuenta que esto solo funciona si no elimina todas las tiendas, lo que puede cambiar el EntryID o eliminarlo por completo.
Sé que este es un hilo viejo, pero como recientemente tuve motivos para escribir un macro que hace esto, pensé en compartir. Descubrí que el método Eliminar parece ser una eliminación permanente. Estoy usando este fragmento:
While oFilteredItems.Count > 0
Debug.Print " " & oFilteredItems.GetFirst.Subject
oFilteredItems.Remove 1
Wend
Comienzo con una lista de artículos que han sido filtrados por algunos criterios. Luego, simplemente elimino uno a la vez hasta que desaparezca.
HTH