新邮件到达时如何在MS Outlook中为共享邮箱触发vba宏

时间:2015-11-03 17:39:40

标签: vba email outlook

我在outlook中创建了一个新的“规则”,在收到新邮件时搜索邮件主题中的特定单词。如果找到特定的单词,则会调用下面的脚本。该脚本是作为默认Project1下的新模块创建的。

脚本将附件从电子邮件中删除并将其放在本地计算机上。它适用于我的个人收件箱,但我很难让它为群组收件箱工作。

我相信的群组收件箱名称叫做“邮箱 - !XXXX XXXXX XXXXXXX XXXXX”。我通过右键单击共享收件箱并在“位置:”字段下的“常规”选项卡下查找此内容。

我想我需要在我的代码中的某处添加组收件箱名称,然后引用MailItem,因为我猜它正在我的个人收件箱中查找MailItem。只是不太确定如何添加它。 :(。任何帮助将不胜感激。

Public Sub saveAttachtoDisk(itm As Outlook.MailItem)
Dim objAtt As Outlook.Attachment
Dim saveFolder As String
saveFolder = "d:\temp\"
     For Each objAtt In itm.Attachments
          objAtt.SaveAsFile saveFolder & "\" & objAtt.DisplayName
          Set objAtt = Nothing
     Next
End Sub

1 个答案:

答案 0 :(得分:0)

如果使用规则,则更改收件箱太晚。

将共享邮箱添加到您的个人资料中并尝试使用ItemAdd。 http://www.outlookcode.com/article.aspx?id=62

示例代码位于ThisOutlookSession模块中。

Option Explicit

Private WithEvents olInboxItems As Items

Private Sub Application_Startup()
  Dim objNS As NameSpace
  Set objNS = Application.Session
  ' instantiate objects declared WithEvents
  Set olInboxItems = objNS.GetDefaultFolder(olFolderInbox).Items
  Set objNS = Nothing
End Sub

Private Sub olInboxItems_ItemAdd(ByVal Item As Object)
  On Error Resume Next
  Itm.BodyFormat = olFormatPlain
  Itm.Save
  Set Itm = Nothing
End Sub

您可以使用类似的内容指向共享的收件箱。

Set olInboxItems = _
  objNS.Folders("Mailbox - ! XXXX XXXXX XXXXXXX XXXXX").Folders("Inbox").Items