Прикрепите PDF и отправьте электронную почту через Outlook - PullRequest
0 голосов
/ 25 марта 2019

Я написал код VBA для отправки электронного письма из списка рассылки в Excel.

Я хочу прикрепить PDF.(Это один PDF на моем жестком диске.)

Столбец A - это адрес электронной почты, столбец C - это имя, столбец E - путь к PDF, а в ячейке J2 - то, что будет написано в теле письма.

Как мне прикрепить PDF-файл с путем в столбце E?

У меня есть только 4 строки, которые я тестирую, однако я хотел бы отправить все до последней строки, что можетварьироваться.На самом деле это два макроса, было бы неплохо, если бы это был только один.

Sub SendEmail(what_address As String, subject_line As String, mail_body As String)

    Dim olApp As Outlook.Application
    Set olApp = CreateObject("Outlook.Application")

    Dim olMail As Outlook.MailItem
    Set olMail = olApp.CreateItem(olMailItem)

    olMail.To = what_address
    olMail.Subject = subject_line
    olMail.Body = mail_body
    olMail.Send

End Sub


Sub SendMassEmail()

    row_number = 1

    Do
        DoEvents
        row_number = row_number + 1
        Dim mail_body_message As String
        Dim full_name As String
        mail_body_message = Sheet2.Range("J2")
        full_name = Sheet2.Range("c" & row_number)
        mail_body_message = Replace(mail_body_message, "replace_name_here", full_name)
        Call SendEmail(Sheet2.Range("A" & row_number), "Request for Tax Exemption Certificate", mail_body_message)
    Loop Until row_number = 4

End Sub

1 Ответ

0 голосов
/ 25 марта 2019

Предполагая, что все остальное в коде работает должным образом.Затем вам необходимо добавить следующую строку перед методом olMail.Send.Пример:

olMail.attachments.Add Sheets("Sheet1").Range("E2").Value, olByValue, , "sampleFile"

Более подробную информацию о методе attachments.add можно найти здесь Вложения Добавить

Функция отправки почты будет выглядеть следующим образом:

Sub SendEmail(what_address As String, subject_line As String, mail_body As String)

Dim olApp As Outlook.Application
Set olApp = CreateObject("Outlook.Application")

Dim olMail As Outlook.MailItem
Set olMail = olApp.CreateItem(olMailItem)

olMail.To = what_address
olMail.Subject = subject_line
olMail.Body = mail_body
olMail.attachments.Add Sheets("Sheet1").Range("E2").Value, olByValue, , "sampleFile"
olMail.Send

End Sub

Редактировать 1: Я думаю, ваш вопрос был в том, как включить несколько вложений в электронное письмо.Тогда вы можете попробовать это:

Sub SendEmail(what_address As String, subject_line As String, mail_body As String)

Dim olApp As Outlook.Application
Set olApp = CreateObject("Outlook.Application")
Dim olMail As Outlook.MailItem
Dim lastRow As Integer

Set olMail = olApp.CreateItem(olMailItem)

'Provide the Column where the attachment links are stored. I guess its E in your case
lastRow = Sheets("Sheet1").Range("E" & Rows.Count).End(xlUp).Row

olMail.To = what_address
olMail.Subject = subject_line
olMail.Body = mail_body

'Loop through the column and add the attachments to the Email
For i = 2 To lastRow
    .attachments.Add Sheets("Sheet1").Range("E" & i).Value, olByValue
Next i
olMail.Send

End Sub
...