我有2个宏将主题中的特定术语(1个用于收件箱,1个用于发送项目)的电子邮件从共享邮箱复制到该邮箱内的文件夹中。它在我的机器上工作正常,但我需要将宏放在我团队中其他人的计算机上,以确保在有人不在时发生复制。将电子邮件从共享邮箱复制到另一个文件夹 - 多个用户
我知道这会(应该)导致每个用户拥有这个宏的每个电子邮件的副本都很好,因为我只使用该文件夹链接到一个Excel表格,该表格将电子邮件正文中的信息拉入工作簿,并且简单移除重复项目将摆脱副本。
问题是我在另一台机器上对它进行了测试,还有我的电子邮件只是不停地复制,我正在谈论20次,我无法理解为什么这会发生。
我已经复制下面的代码,如果有人有任何想法,为什么它可能会发生或潜在的工作,我会很感激!
Private WithEvents olInboxItems As Items
Private WithEvents olSentItems As Items
Private m_cancelAdd As Boolean
Private Sub Application_Startup()
Dim olApp As Outlook.Application
Dim objNS As Outlook.NameSpace
Set olApp = Outlook.Application
Set objNS = olApp.GetNamespace("MAPI")
Set olInboxItems = objNS.Folders("Merchandise Support").Folders("Inbox").Items
Set olSentItems = objNS.Folders("Merchandise Support").Folders("Sent Items").Items
End Sub
Private Sub olInboxItems_ItemAdd(ByVal Item As Object)
On Error GoTo ErrorHandler
If (m_cancelAdd) Then
m_cancelAdd = False
Exit Sub
End If
Dim olApp As Outlook.Application
Dim ns As Outlook.NameSpace
Dim moveToFolder As Outlook.MAPIFolder
Dim Msg As Outlook.MailItem
If TypeName(Item) = "MailItem" Then
If Item.Subject Like "*MSR*" Then
Set olApp = Outlook.Application
Set ns = olApp.GetNamespace("MAPI")
Set moveToFolder = ns.Folders("Merchandise Support").Folders("Support Requests")
Set Msg = Item
m_cancelAdd = True
Msg.Copy
Msg.Move moveToFolder
End If
End If
ProgramExit:
Exit Sub
ErrorHandler:
MsgBox Err.Number & " - " & Err.Description
Resume ProgramExit
End Sub
Private Sub olSentItems_ItemAdd(ByVal Item As Object)
On Error GoTo ErrorHandler
If (m_cancelAdd) Then
m_cancelAdd = False
Exit Sub
End If
Dim olApp As Outlook.Application
Dim ns As Outlook.NameSpace
Dim moveToFolder As Outlook.MAPIFolder
Dim Msg As Outlook.MailItem
If TypeName(Item) = "MailItem" Then
If Item.Subject Like "*MSR*" Then
Set olApp = Outlook.Application
Set ns = olApp.GetNamespace("MAPI")
Set moveToFolder = ns.Folders("Merchandise Support").Folders("Support Requests")
Set Msg = Item
m_cancelAdd = True
Msg.Copy
Msg.Move moveToFolder
End If
End If
ProgramExit:
Exit Sub
ErrorHandler:
MsgBox Err.Number & " - " & Err.Description
Resume ProgramExit
End Sub
一步一步地运行您的代码,并告诉我们不良行为发生在哪里,这样我们可以更快地帮助您。定义“**电子邮件只是复制**”。 –
我建议msg.copy添加到文件夹,触发ItemAdd代码。 – niton
对于迟到的道歉,我在发帖后整天被叫出办公室。谢谢你回到我身旁。大卫 - 代码的单次迭代会导致预期的结果,问题在于代码不断运行导致重复。 niton - 一个非常好的观点,我把它放在m_cancelAdd作品中,因为它会为单个用户造成无限数量的副本,但每个副本都会为每个用户重新开始。有什么建议么? – jamieee