应用于规则的Outlook VBA脚本出错
我在Outlook中有一条规则,每天将电子邮件发送到特定文件夹。然后,我有一个VBA脚本,当注意到该文件夹中有一条新的未读邮件时,它会进入并将附件保存到硬盘上的一个文件夹中,并执行一些其他格式化类型的操作(在附件上) 然后,我将脚本链接到Outlook规则向导中的规则,使其作为一个包运行 问题如下:在将消息排序到适当的文件夹之前,脚本被启动。实际上,它应该在消息被排序后运行(否则它就没有什么可操作的)。有没有关于如何纠正的想法 代码当前的开头如下:应用于规则的Outlook VBA脚本出错,vba,outlook,Vba,Outlook,我在Outlook中有一条规则,每天将电子邮件发送到特定文件夹。然后,我有一个VBA脚本,当注意到该文件夹中有一条新的未读邮件时,它会进入并将附件保存到硬盘上的一个文件夹中,并执行一些其他格式化类型的操作(在附件上) 然后,我将脚本链接到Outlook规则向导中的规则,使其作为一个包运行 问题如下:在将消息排序到适当的文件夹之前,脚本被启动。实际上,它应该在消息被排序后运行(否则它就没有什么可操作的)。有没有关于如何纠正的想法 代码当前的开头如下: sub saveattachment(
sub saveattachment()
应该是这个吗
private sub saveattachment()
或
是否最好将“规则”嵌入宏中,然后在“我的收件箱”中显示每日电子邮件时将其作为专用子项运行?如果需要将VBA宏子项指定给Outlook规则,VBA子项应如下所示:
Public Sub Test(mail as MailItem)
' your code goes there
End Sub
MailItem类的实例作为参数传递,表示到达收件箱的电子邮件
但如果您需要确保在邮件移动到特定文件夹时触发代码,则需要处理来自该文件夹的Items类的事件。请注意,如果同时向文件夹中添加了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
最后,您可能会发现这篇文章很有帮助
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