Outlook 2007: Como posso excluir automaticamente versões antigas de uma mensagem

0

Eu recebo mensagens autônomas por e-mail que fornecem uma visão do painel de status dos vários sistemas da minha empresa. Desejo que o Outlook mova automaticamente a mensagem de status mais recente para uma pasta especificada e exclua as mensagens anteriores nessa pasta. Qual é a melhor maneira de fazer isso?

    
por Ron Mizoshiri 26.07.2012 / 10:16

1 resposta

0

Quando há novos e-mails na caixa de entrada, essa regra programática encontra a pasta, exclui o conteúdo e, em seguida, move o novo e-mail para ela.

Private Sub Application_NewMail()
' In ThisOutlookSession module

' see Create Outlook Rules Programmatically
' http://msdn.microsoft.com/en-us/library/aa163981(v=office.10).aspx

Dim olApp As Outlook.Application
Dim olNs As Outlook.NameSpace
Dim olFld As Outlook.MAPIFolder
Dim objMail As Object

Set olApp = Outlook.Application
Set olNs = olApp.GetNamespace("MAPI")
Set olFld = olNs.GetDefaultFolder(olFolderInbox)

olFld.items.sort "Received", False

' GetFirst used to work in Outlook 2003 now it is GetLast in Outlook 2010   
Set objMail = olFld.items.GetLast

If TypeOf objMail Is MailItem Then
    DeleteBeforeNewStatus objMail
End If

Set objMail = Nothing
Set olFld = Nothing
Set olNs = Nothing
Set olApp = Nothing

End Sub


Sub DeleteBeforeNewStatus(objMail As MailItem)
' In any module 

Dim olFld As folder
Dim olNs As NameSpace

Dim olderMail As MailItem
Dim iDel As Long

Set olNs = Application.GetNamespace("MAPI")

Select Case objMail.Subject

    Case "System A Status"
        Set olFld = olNs.GetDefaultFolder(olFolderInbox).Folders("SystemA")

    Case "System B Status"
        Set olFld = olNs.GetDefaultFolder(olFolderInbox).Folders("SystemB")

    Case Else
        Set olNs = Nothing
        Exit Sub

End Select

For iDel = olFld.items.Count To 1 Step -1
    Set olderMail = olFld.items(iDel)
    olderMail.Delete
Next

 objMail.Move olFld

End Sub

Crie duas pastas de teste diretamente na caixa de entrada para testar. Se funcionar, adicione quantas instâncias dessas duas linhas forem necessárias.

 Case "System X Status"
      Set olFld = olNs.GetDefaultFolder(olFolderInbox).Folders("SystemX")

Se as pastas estiverem enterradas, você precisará incluir o caminho nesse formato.

Defina olFld = olNs.GetDefaultFolder (olFolderInbox) .Folders ("Subfolder1"). Folders (Subfolder2 "). Pastas (" SystemX ")

Editor e ajuda do botão - link

A segurança de macros deve ser definida como média.

Ajuda do botão - link

    
por 02.08.2012 / 02:30