【问题标题】:Creating VBA macro to save email copy创建 VBA 宏以保存电子邮件副本
【发布时间】:2020-06-28 15:37:51
【问题描述】:

我使用 Outlook (MS Exchange) 并拥有一个个人和两个组收件箱(我正在使用个人配置文件登录工作,通过该配置文件我也可以访问组收件箱)。

当我发送电子邮件时,我在From 字段中选择了我的个人或两个群组电子邮件地址之一。发送电子邮件时,我希望在myIndividualMailboxgroupAMailboxgroupBMailbox 的收件箱中保存一份副本,具体取决于我使用的From 电子邮件地址。

示例:如果我发送电子邮件 FromgroupA@myCompany.com,我希望将电子邮件副本保存在 groupAMailbox 的收件箱中( 而不是在我的个人收件箱中)。

我知道这不能通过在 Outlook 中设置规则来实现,但可以通过 VBA 宏来完成。我现在不知道如何编写 VBA 宏,也不知道这是否只是一个简短的脚本或更复杂的脚本。事实上,我从未在 Outlook 中编写过宏,所以我什至不知道如何开始。任何人都可以展示如何做到这一点?

我开始寻找这个问题的解决方案:Outlook send-rule that filter on the 'From' field

【问题讨论】:

    标签: vba outlook


    【解决方案1】:

    据我所知,这是我为您制作的,它有效。您应该将它放在 Microsoft Outlook 对象 - ThisOutlookSession 模块中。

    请注意,除非您先运行 enableEvents,否则永远不会触发 myolApp_ItemSend 事件。并且您需要确保每次关闭重新打开的 Outlook 时都启用它。这需要进行一些自定义,但它应该会给您一个大致的概念。

    Option Explicit
    Public WithEvents myolApp  As Outlook.Application
    
    Sub enableEvents()
        Set myolApp = Outlook.Application
    End Sub
    
    Private Sub myolApp_ItemSend(ByVal item As Object, Cancel As Boolean)
        Dim items As MailItem
        Dim copyFolder As Outlook.Folder
        Dim sentWith As String
        'Identify sender address
        If item.Sender Is Nothing Then
            sentWith = item.SendUsingAccount.SmtpAddress
        Else
            sentWith = item.Sender.Address
        End If
    
        'Determin copy folder based on sendAddress
        Select Case sentWith
            Case "groupA@myCompany.com"
                'get groupAMailbox's inbox
                Set copyFolder = Application.GetNamespace("MAPI").folders("groupAMailbox").folders("Inbox")
            Case "myE-mailAddress"
                'get My inbox
                Set copyFolder = Application.GetNamespace("MAPI").folders("myE-mailAddress").folders("Inbox")
        End Select
    
        'copy the Item
        Dim copy As Object
        Set copy = item.copy
        'move copy to folder
        copy.Move copyFolder
    
    End Sub
    

    编辑: 看起来他们现在实际上已经将事件功能直接构建到 Outlook 的 Application 对象中,但是通过测试,您仍然需要执行我上面概述的操作。

    【讨论】:

      【解决方案2】:

      Outlook 将所有已发送项目存储在默认已发送项目文件夹中。但是,您可以应用补丁将已发送的项目保存在其自己的文件夹中。 http://support.microsoft.com/kb/2181579

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2013-01-08
        • 2011-09-19
        • 1970-01-01
        • 1970-01-01
        • 2014-11-22
        • 1970-01-01
        • 1970-01-01
        • 2021-10-17
        相关资源
        最近更新 更多