avez écrit une fonction de gestionnaire de messages dans Outlook Visual Basic (nous utilisons Outlook 2003 et Exchange Server) pour m'aider à trier les e-mails entrants. Cela fonctionne pour moi, sauf que parfois la règle échoue et Outlook le désactive. Ensuite, je rallume la règle et l'exécute manuellement sur ma boîte de réception pour la rattraper. La règle échoue spontanément et se désactive plusieurs fois par jour. J'aimerais réparer ceci une fois pour toutes.
Voici le code dépouillé de la fonctionnalité, mais vous donner une idée de la façon dont il ressemble:
Public WithEvents myOlItems As Outlook.Items
Public Sub Application_Startup()
' Reference the items in the Inbox. Because myOlItems is declared
' "WithEvents" the ItemAdd event will fire below.
' Set myOlItems = Outlook.Session.GetDefaultFolder(olFolderInbox).Items
Set myOlItems = Application.GetNamespace("MAPI").GetDefaultFolder(olFolderInbox).Items
End Sub
Private Sub myOlItems_ItemAdd(ByVal Item As Object)
On Error Resume Next
If TypeName(Item) = "MailItem" Then
MyMessageHandler Item
End If
End Sub
Public Sub MyMessageHandler(ByRef Item As MailItem)
Dim strSender As String
Dim strSubject As String
If TypeName(Item) <> "MailItem" Then
Exit Sub
End If
strSender = LCase(Item.SenderEmailAddress)
strSubject = Item.Subject
rem do stuff
rem do stuff
rem do stuff
End Sub
Une erreur que je reçois est « Type Mismatch » appelant MyMessageHandler où VB se plaint que le point est pas un MailItem . D'accord, mais TypeName (Item) renvoie "MailItem", alors pourquoi Item n'est pas un MailItem?
Un autre que j'obtiens est où un email avec un sujet vide arrive. La ligne
strSubject = Item.Subject
me donne une erreur. Je sais Item.Subject devrait être vide, mais pourquoi est-ce une erreur?
Merci.
TypeName interroge un type pour une version lisible par un humain. Comme il peut y avoir deux types différents avec le même nom, le fait de s'appuyer sur TypeName pour effectuer la vérification de type entraînera des faux positifs/négatifs. Essayez "TypeOf Item is MailItem" à la place – rpetrich
Si 'TypeName (Item) =" MailItem "', alors appelez une procédure ... qui non seulement accepte uniquement MailItems, mais vérifie à nouveau si l'élément est un MailItem? – JimmyPena