我在Outlook中有一条规则,它将每日电子邮件发送到特定文件夹。然后我有一个VBA脚本,当注意到该文件夹中的新未读消息进入并将附件保存到我的硬盘驱动器上的文件夹时,并执行一些其他格式化类型的事情(在附件上)。
然后我将脚本链接到Outlook规则向导中的规则,以便它作为包运行。
问题如下:在将邮件分类到适当的文件夹之前,脚本已启动。实际上它应该在消息被排序之后运行(否则没有任何东西可以对其进行操作)。关于如何纠正的任何想法?
代码目前开头如下:
sub saveattachment()
应该是这样吗?
private sub saveattachment()
或
public sub saveattachment()
将“规则”嵌入到宏中更好,然后只要每天电子邮件出现在我的收件箱中,就可以将其作为私有子进行运行吗?
答案 0 :(得分:0)
如果需要为Outlook规则分配VBA宏子站点,则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文章很有帮助。