Est-il possible de changer le statut des e-mails déplacés vers un dossier dans une boîte aux lettres partagée?
Exemple: je reçois un nouveau e-mail et le marque avec un drapeau rouge. Ensuite, lorsque le travail est terminé, je déplace le courrier dans le dossier "Terminé".
Après avoir déplacé le courrier dans ce dossier, je veux que le Flagstatus soit "olFlagComplete" (drapeau vert) et à chaque fois J'ouvre Outlook, le code doit vérifier le dossier pour les e-mails avec un drapeau rouge (par exemple, Mails déplacés depuis un téléphone portable) et le définir sur un drapeau vert.
J'ai essayé ce qui suit, mais rien ne s'est passé.
Private WithEvents Items As Outlook.Items Private Sub Application_Startup() Dim olNameSpace As Outlook.NameSpace Dim olFolder As Outlook.MAPIFolder Set olNameSpace = Application.GetNamespace("MAPI") Set olFolder = olNameSpace.Folders("name@company.com") Set olFolder = olFolder.Folders("Completed") Set Items = olFolder.Items End Sub Private Sub Items_ItemChange(ByVal Item As Object) Dim olNameSpace As Outlook.NameSpace Dim olFolder As Outlook.MAPIFolder Dim Mail As MailItem Set olNameSpace = Application.GetNamespace("MAPI") Set olFolder = olNameSpace.Folders("name@company.com") Set olFolder = olFolder.Folders("Completed") If TypeOf Item Is Outlook.MailItem Then Set Mail = Item If Mail.FlagStatus = olFlagMarked Then 'Set ItemCopy = Item.Copy ' Copy Flagged item 'ItemCopy.Move olFolder ' Move Copied item Set Mail.FlagStatus = olFlagComplete End If Set Item = Nothing 'Set ItemCopy = Nothing End If End Sub
3 Réponses :
Private Sub Items_ItemAdd(ByVal Item As Object) If TypeOf Item Is Outlook.MailItem Then Set Mail = Item If Mail.FlagStatus = olFlagMarked Then Set Mail.FlagStatus = olFlagComplete End If End If End Sub
Completed
: Private WithEvents Items As Outlook.Items Private Sub Application_Startup() Dim olNameSpace As Outlook.NameSpace Dim olFolder As Outlook.MAPIFolder Set olNameSpace = Application.GetNamespace("MAPI") Set olFolder = olNameSpace.Folders("name@company.com") Set olFolder = olFolder.Folders("Completed") Set Items = olFolder.Items For Each Item In Items If TypeOf Item Is Outlook.MailItem Then Set Mail = Item If Mail.FlagStatus = olFlagMarked Then Set Mail.FlagStatus = olFlagComplete End If End If Next End Sub
Merci pour la réponse. Lorsque je mets le code sur "ThisOutlookSession", puis fermez et ouvrez Outlook, rien ne se passe.
Vous devez ensuite enregistrer le message - appelez Mail.Save
après avoir défini la propriété FlagStatus
.
Est-ce ce que vous essayez de faire?
Option Explicit Private Sub Application_Startup() Dim Item As Object Mark_Items Item End Sub Private Function Mark_Items(ByVal Item As Object) Dim olNs As Outlook.NameSpace Set olNs = Application.GetNamespace("MAPI") Dim olShareName As Outlook.Recipient Set olShareName = olNs.CreateRecipient("0m3r@email.com") Dim olShareInbox As Outlook.folder Set olShareInbox = olNs.GetSharedDefaultFolder(olShareName, olFolderInbox) Dim Completed_Fldrs As Outlook.MAPIFolder Set Completed_Fldrs = olShareInbox.Folders("Completed") Dim Filter As String Filter = "@SQL=" & Chr(34) & _ "http://schemas.microsoft.com/mapi/proptag/0x10900003" & _ Chr(34) & ">1" Dim Items As Outlook.Items Set Items = Completed_Fldrs.Items.Restrict(Filter) Dim Mail As MailItem Dim i As Long For i = Items.Count To 1 Step -1 DoEvents If TypeOf Items(i) Is Outlook.MailItem Then Set Mail = Items(i) Debug.Print Mail.Subject Mail.FlagStatus = olFlagComplete Mail.Save End If Next End Function
Affiche une erreur au démarrage d'Outlook. Impossible de trouver le dossier «Terminé». En déboguant, il affiche "Rien" pour le "Completed_Fldrs"
Pas vraiment, mais je peux généralement personnaliser le code selon mes besoins. Maintenant, le code fonctionne. Comme je peux le voir sur les forums, le problème était l'accès aux sous-dossiers d'une boîte aux lettres partagée. Je l'ai résolu avec cette ligne: "Set Completed_Fldrs = olNs.GetFolderFromID (" xxx ")". Pouvez-vous m'expliquer comment fonctionne le filtre, alors qu'est-ce qui est filtré exactement?
@IrinaG. voir les liens sur les réponses stackoverflow.com/a/43268976/4539709
Merci beaucoup. Votre aide ici est précieuse :)