J'ai un script que j'ai reconstitué au fil du temps. Récemment, un plugin que nous devons utiliser dans Outlook a causé quelques problèmes. Fondamentalement, nous sommes sollicités deux fois car lorsque le plugin est utilisé, le courrier électronique est détruit et recréé avec un nom de fichier de pièce jointe spécifique. À ce stade, l'utilisateur est à nouveau invité. J'ai essayé de travailler dans une boucle For pour ignorer le script s'il trouve cette pièce jointe. Cependant, lorsque j'ai ajouté la boucle For, il semble que tout le script soit ignoré. J'ai une expérience limitée avec VBA et donc je suis sûr que c'est un problème avec ma syntaxe ou mon utilisation. Voir script ci-dessous:VBA Outlook Script
Private Sub Application_ItemSend _
(ByVal Item As Object, Cancel As Boolean)
Dim strMsg As String
Dim Atmt As Variant
'strMsg = Item.Class
If Item.Class = "43" Then
For Each Atmt In Item.Attachments
If VBA.Right(Atmt.FileName, 3) = ".sf" Then
GoTo NonEmailError
End If
Next Atmt
If Item.CC = "" Then
strMsg = "To recipients: " & Item.To & vbCrLf & _
"Are you sure you want to send this message?"
Else
strMsg = "To recipients: " & Item.To & vbCrLf & _
"Cc recipients: " & Item.CC & vbCrLf & _
"Bcc recipients: " & Item.BCC & vbCrLf & _
"Are you sure you want to send this message?"
End If
Else
GoTo NonEmailError
End If
' Exit Sub
' Ignore errors for now.
On Error GoTo NonEmailError
' Prompt user to fill in subject
If Item.Subject = "" Then
MsgBox "You must enter a subject.", 48, "Empty Subject"
Cancel = True
GoTo NonEmailError
End If
' Exit Sub
' Prompt user to verify E-Mails
If MsgBox(strMsg, vbYesNo + vbQuestion _
, "Send Confirmation") = vbNo Then
Cancel = True
End If
Exit Sub
NonEmailError:
' The item being sent was not an e-mail and so don't prompt the user anything
Exit Sub
End Sub
Quelques commentaires: 1) Les deux invites s'affichent-elles indépendamment du fait que le courrier électronique contient des pièces jointes ou non? 2) Quelle est la ligne associée à la première invite, et laquelle à la seconde? 3) Il est probablement une bonne idée de travailler sur un 'Outlook.MailItem' au lieu d'un' Object', avec 'Dim OLMI As Outlook.MailItem --- Si TypeName (Item) =" MailItem "Puis --- Set OLMI = Item --- 'Faites vos affaires --- End If'. –