【问题标题】:Outlook rule not running VBA codeOutlook 规则未运行 VBA 代码
【发布时间】:2013-02-13 19:58:44
【问题描述】:

我有 VBA 代码来查找特定 Outlook 文件夹中电子邮件中的附件并将它们保存到某个位置。

我有一个 Outlook 规则,将电子邮件发送到 Outlook 文件夹,然后触发宏。该代码不会在我的计算机上自动触发,但会在另一台计算机上触发。电子邮件进入,规则将其放入文件夹,但代码不运行。当我通过 VB 编辑器手动运行代码时,它会将附件保存在正确的位置。

我已检查以确保文件夹和路径名称正确(无论哪种方式,如果它们错误,则在我手动运行时代码将无法正常运行)。

展望规则:

消息到达后应用此规则

来自 xxxxxxxxxxxx

主题中有xxxx

仅在这台机器上

将其移至 xxxxx 文件夹

并运行 Project1.ThisOutlookSession.Save

VBA 代码:

Sub Save(item As Outlook.MailItem)
Dim olApp As Outlook.Application
Dim objNS As Outlook.NameSpace
Dim olFolder As Outlook.MAPIFolder
Dim msg As Outlook.MailItem

Set olApp = Outlook.Application
Set objNS = olApp.GetNamespace("MAPI")
Set olFolder = objNS.GetDefaultFolder(olFolderInbox)
Set olFolder = olFolder.Folders("xxxxxxx")
Set oApp = CreateObject("Shell.Application")

For Each myitem In olFolder.Items
  For Each att In myitem.Attachments
    att.SaveAsFile "\\.............\" & att.FileName
      myitem.Attachments.Remove 1
      myitem.Save
  Next
Next
End Sub

【问题讨论】:

标签: vba outlook attachment rule


【解决方案1】:

传入的邮件项是子保存中的项目(item As Outlook.MailItem)。代码中没有用到。

稍后手动运行时,代码仍然会忽略传递的任何项目,但现在会处理 olFolder 中的所有项目。

试试这个:

Sub Save(item As Outlook.MailItem)
For Each att In item.Attachments
    att.SaveAsFile "\\.............\" & att.FileName
    item.Attachments.Remove 1
    item.Save
Next
End Sub

【讨论】:

    【解决方案2】:

    尝试删除文件(首先将代码保存在其他位置)... \Documents and Settings\\Application Data\Microsoft\Outlook\VbaProject.OTM

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-04-05
      • 2016-12-27
      • 1970-01-01
      • 2018-09-23
      相关资源
      最近更新 更多