我正在尝试让Outlook将每日电子邮件中的附件保存到一个文件夹,我可以让文件系统观察器准备好解析和分析附件(这是数据完整性检查程序的报告)。我已经设置了一个应该运行VBA脚本的规则,但它并没有尽我所能。我已经在VB6中验证了代码实际上会将一些文本保存到文件中,因此如果Outlook实际运行VBA脚本,它应该能够执行相同的操作。但事实并非如此!任何人都可以看到我做错了什么?
Dim WithEvents objInbox As Outlook.Items
Private Sub Application_Startup()
Set objInbox = Session.GetDefaultFolder(olFolderInbox).Items
End Sub
Sub SnagAttachment(theItem As MailItem)
On Error Resume Next
Dim fnum As Integer
fnum = FreeFile()
Open "c:\temp\success.txt" For Output As #fnum
Print #fnum, "Ran SnagAttachment Successfully"
Close #fnum
End Sub
请注意,当我使用规则向导并选择“运行脚本”时,Sub SnagAttachment会列为可以选择的脚本。
答案 0 :(得分:5)
当您将On Error Resume Next
放在程序的顶部时,您如何知道它是否正常工作?你永远不会发现。
以下是创建应作为规则的一部分运行的脚本的规则:
How to create a script for the Rules Wizard in Outlook
另请注意How to process incoming messages in Microsoft Outlook处发现的警告:
“运行脚本”规则不适合繁忙的流量 应用程序,因为Outlook也可能会跳过应用规则 许多物品到达符合规则的条件。
答案 1 :(得分:2)
要使脚本正常工作,您需要更改Outlook中的安全设置。转到工具>宏>安全性并将其更改为“所有宏的警告”。然后重启Outlook。
希望这有帮助
答案 2 :(得分:0)
尝试隔离确切的问题:
Sub Test(Item as Outlook.MailItem) MsgBox "test" End Sub然后设置一个新规则来处理运行此sub的_all_传入消息作为唯一操作,并暂时禁用所有其他规则。然后向自己发送消息。如果您没有弹出框,则可能表示Outlook安装不正确。尝试重新安装,或直接致电MS以获得支持。
答案 3 :(得分:0)
我遇到了同样的问题,在我看来,如果代码中出现错误,脚本甚至都无法启动。这与调试器弹出运行时错误的标准VBA相反。例如,我的函数末尾有一个标签,后面缺少冒号。这导致脚本根本不运行(而不是运行到此行然后失败)。我建议你注释掉你所有的代码,然后从一个msgbox“hello world”开始。我会在调试它时将其留在代码中以了解代码是否正在运行,但您可能不得不多次关闭消息框。迭代地添加代码行,直到找到问题所在。