J'écris une macro qui devrait supprimer les pièces jointes. De mes sessions de débogage, il semble que cela devrait fonctionner. Le point de rupture est atteint et il reconnaît l'objet du message:VBA - Outlook ne supprime pas les pièces jointes
Je sais que cela semble un peu stupide, mais, assez curieusement, il semble fonctionner si je mets un point d'arrêt, et ouvre l'expression/montre, mais pas autrement.
J'ai lutté avec cela pendant un certain temps; J'apprécierais toute orientation.
Private Sub Application_NewMailEx(ByVal EntryIDCollection As String)
Dim header As String
Dim objNewMail As Outlook.MailItem
Dim Item As Object
Dim count As Integer
Dim objInbox As Outlook.Folder
Set objInbox = Outlook.Session.GetDefaultFolder(olFolderInbox)
Dim entryIDs
entryIDs = Split(EntryIDCollection, ",")
Dim i As Integer
For i = 0 To UBound(entryIDs)
Set objNewMail = Application.Session.GetItemFromID(entryIDs(i))
If objNewMail.Attachments.count > 0 Then
header = GetHeader(objNewMail)
If DoesIPMatch(header) <> True Then
DeleteMessage (objNewMail)
ElseIf IsAttachmentPDF(objNewMail) <> True Then
For count = 1 To objNewMail.Attachments.count
objNewMail.Attachments.Remove (count)
Next
End If
End If
Next
End Sub
Probablement pas le problème, mais les parenthèses autour de '(count)' sont redondantes. 'objNewMail.Attachments.Remove count' devrait suffire. 'count' n'a pas besoin d'être évalué et passé par value (c'est ce que font les parens supplémentaires) ... c'est * déjà * une valeur. –
Merci! Je ne suis pas une personne VBA (plus d'une fille C#), donc j'apprécie vraiment l'observation. – KellyMarchewa
Votre indentation est également brisée/déroutante. Pensez à utiliser un * indenter * - mon add-in [Rubberduck] (https://github.com/rubberduck-vba/Rubberduck/releases) inclut un port (fonctionne sur les hôtes 64 bits) du très populaire * Smart Indenter * add-in ... il est écrit en C#, si vous cherchez un projet OSS amusant à plonger ;-) –