首页 文章

Outlook 规则未运行 VBA 代码

提问于
浏览
1

我有 VBA 代码,可以在特定 Outlook 文件夹的 e-mails 中查找附件并将其保存到某个位置。

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

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

Outlook 规则:

邮件到达后应用此规则

来自 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

2 回答

  • 0

    传入的邮件项目是“子保存”中的项目(项目为 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
    
  • 0

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

相关问题