1

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

4

4 回答 4

6

On Error Resume Next当你把它放在程序的顶部时,你怎么知道它是否有效?你永远不会发现。

以下是创建应作为规则一部分运行的脚本的规则:

如何在 Outlook 中为规则向导创建脚本

另请注意如何处理 Microsoft Outlook 中的传入消息中的警告:

“运行脚本”规则对于流量大的应用程序来说不是一个好的选择,因为如果有太多符合规则条件的项目到达,Outlook 可能会跳过应用该规则。

于 2011-11-21T18:14:29.883 回答
2

为了使脚本正常工作,您需要更改 Outlook 中的安全设置。转到工具 > 宏 > 安全并将其更改为“所有宏的警告”。然后重新启动 Outlook。

希望这可以帮助

于 2011-03-28T17:56:58.407 回答
0

尝试找出确切的问题:

  1. 检查宏安全设置。最多,它必须设置为不高于“所有宏的警告”。
  2. 尝试使用单个测试子创建一个新模块:
    子测试(项目为 Outlook.MailItem)
    MsgBox "测试"
    结束子
    
    然后设置一个新规则来处理运行此子的_所有_传入消息作为唯一操作,并暂时禁用所有其他规则。然后给自己发信息。如果结果没有弹出框,这可能表明 Outlook 安装错误。尝试重新安装它,或直接致电 MS 寻求支持。
  3. 如果之前的测试成功,请尝试使用 `Scripting.FileSystemObject` 对象而不是 `Freefile()` 来创建和填充文件。这只是为了测试您是否在这里遇到了一些奇怪的错误。值得一试,对吧?
  4. 确保您的规则条件设置正确。在某些情况下可能存在故障或拼写错误,只会丢弃您希望此脚本运行的所有消息。
于 2010-10-20T21:52:54.757 回答
0

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

于 2016-07-12T17:30:28.077 回答