首页 文章

应用于规则的Outlook VBA脚本出错

提问于
浏览
0

我在Outlook中有一条规则,它将每日电子邮件发送到特定文件夹 . 然后我有一个VBA脚本,当注意到该文件夹中的新未读消息进入并将附件保存到我的硬盘驱动器上的文件夹时,并执行一些其他格式化类型的事情(在附件上) .

然后我将脚本链接到Outlook规则向导中的规则,以便它作为包运行 .

问题如下:在将消息分类到适当的文件夹之前,脚本已启动 . 实际上它应该在消息被排序之后运行(否则没有任何东西可以对其进行操作) . 关于如何纠正的任何想法?

该代码目前开始如下:

sub saveattachment()

应该是这样吗?

private sub saveattachment()

要么

public sub saveattachment()

将“规则”嵌入到宏中然后只需将每日电子邮件显示在我的收件箱中时将其作为私有子进行运行会更好吗?

1 回答

  • 0

    如果需要将VBA宏子项分配给Outlook规则,则VBA子应如下所示:

    Public Sub Test(mail as MailItem)
      ' your code goes there
    End Sub
    

    MailItem类的实例作为参数传递,代表到达收件箱的电子邮件 .

    但是,如果您需要确保在将邮件移动到特定文件夹时触发了代码,则需要处理来自该文件夹的Items类的ItemAdd事件 . 请注意,当同时向文件夹中添加超过16个项目时,不会触发该事件 .

    Public WithEvents myOlItems As Outlook.Items 
    
    Public Sub Initialize_handler() 
     Set myOlItems = Application.GetNamespace("MAPI").GetDefaultFolder(olFolderContacts).Items 
    End Sub 
    
    Private Sub myOlItems_ItemAdd(ByVal Item As Object) 
     Dim myOlMItem As Outlook.MailItem 
     Dim myOlAtts As Outlook.Attachments 
     Set myOlMItem = myOlApp.CreateItem(olMailItem) 
     myOlMItem.Save 
     Set myOlAtts = myOlMItem.Attachments 
     ' Add new contact to attachments in mail message 
     myOlAtts.Add Item, olByValue 
     myOlMItem.To = "Sales Team" 
     myOlMItem.Subject = "New contact" 
     myOlMItem.Send 
    End Sub
    

    最后,您可能会发现Getting Started with VBA in Outlook 2010文章很有帮助 .

相关问题