Macro VBA do Outlook para salvar cópias de e-mails em uma pasta local
-
21-12-2019 - |
Pergunta
Sempre que enviar um email, gostaria que uma cópia desse email fosse salva na pasta local, junto com todos os anexos.
Não acho que isso seja possível com uma regra personalizada no Outlook, mas talvez isso pudesse ser feito com um script VBA?
Eu uso Outlook e MS Exchange.
Solução
Claro que isso pode ser feito usando o Application_ItemSend
procedimento de evento para chamar um procedimento personalizado que salvará seus e-mails enviados em uma pasta local.
Este código vai no módulo "ThisOutlookSession".
Private Sub Application_ItemSend(ByVal Item As Object, Cancel As Boolean)
Call SaveACopy(Item)
End Sub
Sub SaveACopy(Item As Object)
Const olMsg As Long = 3
Dim m As MailItem
Dim savePath As String
If TypeName(Item) <> "MailItem" Then Exit Sub
Set m = Item
savePath = "c:\users\your_user_name\desktop\" '## Modify as needed
savePath = savePath & m.Subject & Format(Now(), "yyyy-mm-dd-hhNNss")
savePath = savePath & ".msg"
m.SaveAs savePath, olMsg
End Sub
Você precisará garantir que o caminho especificado seja único/etc., o exemplo acima é bastante rudimentar.Você também precisa remover quaisquer caracteres ilegais que não possam ser colocados em um nome de arquivo (barra, barra vertical, etc.)...
Como alternativa, sugiro simplesmente arquivar suas pastas periodicamente.Você pode configurar o Outlook para salvar uma cópia do e-mail enviado em uma pasta "Enviados" e, então, poderá arquivar essa pasta;salvar cada item individualmente parece abaixo do ideal.