我需要一个可以监视特定文件夹(不是默认收件箱)的Outlook宏,以便在添加项目时触发另一个宏

时间:2019-05-08 15:10:23

标签: vba outlook outlook-vba

我创建了一个名为“所有收件箱”的pst文件,并具有将所有其他帐户中的所有电子邮件都移到其收件箱中的规则。我有一个宏可以同时运行所有这些规则(RunRules),以处理“所有收件箱/收件箱”文件夹中的消息(移动,打印,文件等),但是我必须手动运行它(我在“快速”按钮上有一个按钮访问工具栏)。

我想要的是一个宏,它监视“所有收件箱/收件箱”文件夹,然后激发我的RunRules宏来处理移入“所有收件箱/收件箱”文件夹中的新项目。

我正在将最新版本的Outlook与Office 365一起使用。我已经搜索了所需的宏,但没有找到确切的宏。有些看起来很接近,但是我看到的所有代码都使用默认文件夹。我不知道如何修改我看到的用于指定“所有收件箱/收件箱”文件夹的代码。

我也不知道将选项,订阅等放置在何处?全部放在新模块中?

Option Explicit
Private WithEvents objItems As Outlook.Items

Private Sub Application_Startup()
    Dim objNS As Outlook.NameSpace
    Dim objWatchFolder As Outlook.Folder

    Set objNS = Application.GetNamespace("MAPI")
    Set objWatchFolder = objNS.Folder("All Inbox").Folders("Inbox")

    Set objItems = objWatchFolder.Items
End Sub
Private Sub olkFolder_ItemAdd(ByVal Item As Object)
    Dim xitem As Outlook.MailItem
    If Item.Class = olMail Then
        RunRules
    End If
End Sub

很明显,我不知道自己在做什么!我希望宏可以监视指定的文件夹,并在向其中添加任何内容时运行RunRules宏。我是否将“所有收件箱”指定为商店?

1 个答案:

答案 0 :(得分:0)

您在S上丢失的 objNS.Folder 应该是objNS.Folders("All Inbox").Folders("Inbox")

Application_Startup事件应该在 ThisOutlookSession 类模块下,并且您也可以将RunRules子项放在同一模块中。