【问题标题】:Problem Getting Outlook 2007 Running VBA Script让 Outlook 2007 运行 VBA 脚本时出现问题
【发布时间】:2010-10-24 14:08:23
【问题描述】:

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

【问题讨论】:

  • 哇,不敢相信还没有人帮助过你。如果这对您来说仍然是一个问题,您是否比上面的代码更进一步?如果您正在运行一个脚本(假设)当一封带有附件的新邮件到达时,我并不是您使用 Application_Startup 事件的确切原因。
  • 感谢您的参与!显然没有帮助,我相信上面的代码是从 MSDN 中提取的,所以它有官场的印记……有点。但是我需要信息的问题使这个问题对于我的目的来说已经过时了,因为我不再需要知道它(我们替换了我本来会使用答案的系统)。尽管如此,我仍然对它感兴趣,因为我真的希望能够为到达的 Outlook 消息做自定义的事情。
  • 您还需要解决方案吗?您是否尝试过任何答案?

标签: vba outlook outlook-2007


【解决方案1】:

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

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

How to create a script for the Rules Wizard in Outlook

另请注意How to process incoming messages in Microsoft Outlook

“运行脚本”规则不是流量大的好选择 应用程序,因为 Outlook 也可能会跳过应用该规则 许多符合规则条件的物品到达。

【讨论】:

    【解决方案2】:

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

    希望对你有帮助

    【讨论】:

      【解决方案3】:

      尝试找出确切的问题:

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

      【讨论】:

        【解决方案4】:

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

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2017-06-09
          • 2015-09-12
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2010-10-11
          • 2020-03-20
          • 1970-01-01
          相关资源
          最近更新 更多