Saltar al contenido

¿Eliminar permanentemente MailMessage en Outlook con VBA?

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

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *