问题让Outlook 2007运行VBA脚本

时间:2009-05-07 18:27:48

标签: vba outlook outlook-2007 outlook-vba

我正在尝试让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会列为可以选择的脚本。

4 个答案:

答案 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)

尝试隔离确切的问题:

  1. 检查宏安全设置。最大值,必须设置为不高于“所有宏的警告”。
  2. 尝试使用单个测试子创建新模块:
    Sub Test(Item as Outlook.MailItem)
    MsgBox "test"
    End Sub
    
    然后设置一个新规则来处理运行此sub的_all_传入消息作为唯一操作,并暂时禁用所有其他规则。然后向自己发送消息。如果您没有弹出框,则可能表示Outlook安装不正确。尝试重新安装,或直接致电MS以获得支持。
  3. 如果上一次测试成功,请尝试使用`Scripting.FileSystemObject`对象而不是`Freefile()`来创建和填充文件。这只是为了测试你是否遇到了一些奇怪的错误。值得一试,对吗?
  4. 确保您的规则条件设置正确。可能会出现故障或拼写错误,只会删除您希望运行此脚本的所有消息。

答案 3 :(得分:0)

我遇到了同样的问题,在我看来,如果代码中出现错误,脚本甚至都无法启动。这与调试器弹出运行时错误的标准VBA相反。例如,我的函数末尾有一个标签,后面缺少冒号。这导致脚本根本不运行(而不是运行到此行然后失败)。我建议你注释掉你所有的代码,然后从一个msgbox“hello world”开始。我会在调试它时将其留在代码中以了解代码是否正在运行,但您可能不得不多次关闭消息框。迭代地添加代码行,直到找到问题所在。