2016-06-03 4 views
1

Кто-нибудь знает, как удалить объект вложения из VBA? Я пытаюсь сделать приложение в Excel с помощью VBA, поэтому он будет отправлять электронные письма в зависимости от данных, найденных в файле excel. В моем коде ниже, электронные письма отправляются, однако последнее электронное письмо содержит все вложения из предыдущих. Любая помощь будет оценена по достоинству.Создать новые вложения 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

Мне кажется, что вы используете раннего связывания и, следовательно, есть ссылка на 'Microsoft Outlook xx.0 Object Library'. Если это так, вы должны иметь автозаполнение в VBE и должны иметь возможность видеть различные опции для «Mail», включая «Mail.Attachments.Remove». Если вы используете другую библиотеку для ранней привязки, пожалуйста, включите ее в свой пост. – Ralph

+0

@Ralph, я использую «Microsoft CDO для Windows 2000 Library». Должен ли я использовать любую другую ссылку? –

+1

Нет, 'CDO' в порядке. Просто включите его в следующий раз в свой пост. Я изменил ваш пост, включив соответствующий флаг *. В любом случае, с помощью 'CDO' вы можете использовать следующую строку для удаления всех вложений:' Mail.Attachments.DeleteAll'. – Ralph

ответ

0

Следующая строка кода должна работать:

Mail.Attachments.DeleteAll 
Смежные вопросы