Outlook规则未运行VBA代码

时间:2013-02-13 19:58:44

标签: vba outlook attachment rule

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

我有一个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 :(得分:0)

传入的mailitem是Sub Save中的项目(项目 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

答案 1 :(得分:0)

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