2016-06-03 7 views
1

Est-ce que quelqu'un sait comment supprimer un objet pièce jointe de VBA? J'essaye de faire une application dans Excel en utilisant VBA tel qu'il enverra des email selon les données trouvées sur le dossier d'Excel. Dans mon code ci-dessous, les emails sont envoyés, cependant, le dernier email a toutes les pièces jointes des précédentes. Toute aide serait appréciée.Créer de nouvelles pièces jointes Excel-VBA

Private Sub btnSendEmail_Click() 
For Counter = 2 To 3 
    Dim Mail As New Message 
    Dim Config As New Configuration 
    Set Config = Mail.Configuration 
    Config(cdoSendUsingMethod) = cdoSendUsingPort 
    Config(cdoSMTPServer) = "smtp.gmail.com" 
    Config(cdoSMTPServerPort) = 465 
    Config(cdoSMTPAuthenticate) = cdoBasic 
    Config(cdoSMTPUseSSL) = True 
    Config(cdoSendUserName) = "[email protected]" 
    Config(cdoSendPassword) = "test" 
    Config.Fields.Update 
    Set curFirstName = Worksheets("Sheet1").Cells(Counter, 1) 
    Set curLastName = Worksheets("Sheet1").Cells(Counter, 2) 
    Set curEmail = Worksheets("Sheet1").Cells(Counter, 3) 
    Set curAttach = Worksheets("Sheet1").Cells(Counter, 4) 
    Mail.To = curEmail.Value 
    Mail.From = Config(cdoSendUserName) 
    Mail.Subject = "This is a test!" 
    Mail.HTMLBody = "<h1>" & curFirstName.Value & " " & curLastName.Value & "</h1>" 
    Mail.AddAttachment curAttach.Value 
    Mail.Send 
Next Counter 
MsgBox "Sent" 
End Sub 
+0

Il me semble que vous utilisez liaison précoce et donc une référence à 'Microsoft Outlook Object xx.0 Library'. Si c'est le cas, vous devriez avoir auto-compléter dans le VBE et devrait être capable de voir les différentes options pour 'Mail.', y compris' Mail.Attachments.Remove'. Si vous utilisez une autre bibliothèque pour une liaison anticipée, veuillez l'inclure dans votre message. – Ralph

+0

@Ralph, j'utilise "Microsoft CDO pour Windows 2000 Library". Dois-je utiliser une autre référence? –

+1

Non, 'CDO' est correct. Juste l'inclure la prochaine fois dans votre message. J'ai changé votre message pour inclure le * drapeau * approprié. Quoi qu'il en soit, avec 'CDO' vous pouvez utiliser la ligne suivante pour supprimer toutes les pièces jointes:' Mail.Attachments.DeleteAll'. – Ralph

Répondre

0

La ligne de code suivante devrait fonctionner:

Mail.Attachments.DeleteAll