2016-06-03 18 views
1

weiß jemand, wie man ein Anhangsobjekt aus VBA entfernt? Ich versuche, eine Anwendung in Excel mit VBA zu tun, so dass E-Mails abhängig von den Daten in der Excel-Datei gesendet werden. In meinem Code unten werden die E-Mails gesendet, die letzte E-Mail enthält jedoch alle Anhänge von den vorherigen. Jede Hilfe wäre willkommen.Erstellen neuer Anhänge 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

Es scheint mir, dass Sie früh bindend und daher einen Verweis auf 'Microsoft Outlook verwenden xx.0 Library' Objekt. Wenn dies der Fall ist, sollten Sie in der VBE automatisch vervollständigen und in der Lage sein, die verschiedenen Optionen für "Mail" einschließlich "Mail.Attachments.Remove" zu sehen. Wenn Sie eine andere Bibliothek für die frühe Bindung verwenden, fügen Sie diese bitte in Ihren Post ein. – Ralph

+0

@Ralph, verwende ich "Microsoft CDO für Windows 2000-Bibliothek". Sollte ich irgendeine andere Referenz verwenden? –

+1

Nein, 'CDO' ist in Ordnung. Schließe es einfach das nächste Mal in deinen Beitrag ein. Ich habe Ihren Beitrag geändert, um die entsprechende * Flagge * einzufügen. Wie auch immer, mit 'CDO' können Sie die folgende Zeile verwenden, um alle Anhänge zu entfernen:' Mail.Attachments.DeleteAll'. – Ralph

Antwort

0

Die folgende Codezeile sollte funktionieren:

Mail.Attachments.DeleteAll 
Verwandte Themen