J'ai 2 macros qui copient des e-mails avec un certain terme dans le sujet (1 pour la boîte de réception, 1 pour les éléments envoyés) dans une boîte aux lettres partagée. Cela fonctionne bien sur ma machine mais je dois mettre les macros sur les ordinateurs de tous les autres membres de mon équipe pour m'assurer que les copies arrivent quand quelqu'un n'est pas dedans.Copier des e-mails vers un autre dossier à partir d'une boîte aux lettres partagée - Plusieurs utilisateurs
Je comprends que ceci devrait (devrait) conduire à copie de chaque email pour chaque utilisateur qui a la macro ce qui est bien parce que je n'utilise que ce dossier pour lier à une feuille Excel qui tire l'info dans le corps des e-mails dans un classeur et un simple supprimer les doublons se débarrasser de les copies. Le problème est que je l'ai testé sur une autre machine avec la mienne et que les emails ne faisaient que copier, je parle environ 20 fois et je n'arrive pas à comprendre pourquoi cela pourrait se produire.
J'ai copié le code ci-dessous, si quelqu'un a des idées pourquoi cela pourrait se produire ou un travail potentiel, je serais très reconnaissant!
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
Exécutez votre code pas à pas et dites-nous où le comportement indésirable se produit, de cette façon, nous pouvons vous aider beaucoup plus rapidement. Définir "** les e-mails ont juste continué à copier **". –
Je suggère que msg.copy ajoute au dossier, déclenchant le code ItemAdd. – niton
Excuses pour la réponse tardive, j'ai été appelé au bureau toute la journée après l'affichage. Merci de revenir à moi. David - une seule itération du code provoque les résultats attendus, le problème réside dans le fait que le code continue d'être à l'origine des doublons. niton - un très bon point, j'ai mis dans le morceau m_cancelAdd parce qu'il a causé un nombre infini de copies pour un seul utilisateur mais chaque copie le recommence pour chaque utilisateur. Aucune suggestion? – jamieee