Посібник Excel – надсилайте електронні листи з Excel
Зазвичай для надсилання електронних листів ми використовуємо поштові клієнти, такі як Outlook, Gmail тощо. Але багато людей зберігають дані в робочих книгах Excel і потребують надсилати деякі дані іншим під час роботи з ними. Тому їм потрібно надсилати електронні листи безпосередньо з книги Excel, що економить час роботи з поштовим клієнтом. Цей покроковий посібник покаже вам, як надсилати електронні листи з Excel за різних умов.
примітки: перед застосуванням наведених нижче методів потрібно налаштувати поштовий клієнт Outlook на комп’ютері та встановити його як поштовий клієнт за замовчуванням.
Зміст: [ Приховати ]
1. Основи надсилання електронних листів із Excel
У цьому розділі описано основи надсилання електронних листів із Excel.
1.1 Надсилайте електронні листи з Excel за допомогою вбудованих функцій Excel
Якщо ви хочете надсилати лише прості електронні листи з Excel, включаючи лише поля Кому, Тема, Копія та текст. У цьому можуть допомогти вбудовані функції Excel.
1.1.1 Надіслати електронний лист із Excel із формулою
Як показано в таблиці нижче, щоб надіслати різні електронні листи з Excel на основі наведених полів, ви можете використовувати посилання на клітинки наведених полів, щоб створити різні формули гіперпосилань. Після створення гіперпосилань електронної пошти ви можете клацнути гіперпосилання, яке вам потрібно, щоб автоматично надіслати електронний лист.
Примітка: Якщо в полях Кому або Копія вказано більше одного одержувача, розділіть їх крапкою з комою.
Цей розділ поділено на чотири частини, щоб показати вам кроки, щоб додати адресу електронної пошти, одержувача(ів) копії, рядок теми та основний текст окремо до формули гіперпосилання. Будь ласка, зробіть наступне.
Синтаксис і аргументи ГІПЕРПОСИЛАННЯ функції такі.
синтаксис
HYPERLINK(link_location, [friendly_name])
Аргументи
1.1.1.1 Додати адресу електронної пошти до формули гіперпосилання
Тут ми використовуємо "mailto:" як частину формули для додавання одержувача електронної пошти. У цьому прикладі адреса електронної пошти першого одержувача міститься в клітинці B2, тому нам потрібно додати «mailto:» і посилатися на неї в клітинці B2.
"mailto:"&B2
1. Виберіть клітинку для відображення гіперпосилання. У цьому випадку я вибираю комірку F2.
2. Потім введіть у нього наступну формулу.
=HYPERLINK("mailto:"&B2)
примітки: якщо натиснути Що натомість? Створіть віртуальну версію себе у буде створено гіперпосилання, як показано на знімку екрана нижче. Коли ви натискаєте посилання, буде створено електронний лист Outlook, а адреса електронної пошти одержувача буде автоматично заповнена в полі Кому.
Адреса електронної пошти одержувача тепер додається до формули гіперпосилання. Виконайте наведені нижче кроки, щоб додати рядок теми, одержувача(ів) копії та основний текст, якщо вам потрібно.
1.1.1.2 Додайте одержувача(ів) копії до формули гіперпосилання
Щоб додати одержувач(ів) копії до функції гіперпосилання, додайте "?cc=" у складі формули наступним чином.
Формула в комірці F2 має бути такою:
=HYPERLINK("mailto:" & B2 & "?cc=" & C2)
1.1.1.3 Додайте рядок теми до формули гіперпосилання
Щоб додати рядок теми до функції гіперпосилання, додайте "&тема=" у складі формули наступним чином.
Тепер формула в комірці F2 має виглядати так:
=HYPERLINK("mailto:" & B2 & "?cc=" & C2 & "&subject="& D2)
1.1.1.4 Додати основний текст із розривами рядків до формули гіперпосилання
Останнім кроком є додавання основного тексту до формули гіперпосилання. Як ви можете бачити в прикладі, два рядки тексту в E2 розділені розривом рядка, і ви хочете зберегти розрив рядка в тілі електронного листа. Чи розпізнає Outlook розрив рядка за цієї обставини? Давайте перевіримо це.
Щоб додати основний текст до формули гіперпосилання, потрібно додати “&body=” у складі формули наступним чином.
Формула в клітинці F2 тепер відображається так:
=HYPERLINK("mailto:" & B2 & "?cc=" & C2 & "&subject="& D2 & "&body="& E2)
Примітка: Якщо ви натиснете Що натомість? Створіть віртуальну версію себе у ключ і натисніть на посилання. Ви можете побачити в новому електронному листі, що вміст у тілі електронного листа відображається в одному рядку.
Щоб відобразити тіло електронного листа в окремих рядках, потрібно змінити вміст комірки, додавши код символу повернення каретки %0A до тексту, де потрібно вставити розрив рядка. Перегляньте скріншот:
1.1.1.5 Укажіть текст для гіперпосилання
У наведених вище кроках ми завершили аргумент Link_location із полями електронної пошти. Тут, у цьому розділі, ми збираємося завершити наступний аргумент [дружнє_ім’я].
У цьому випадку я хочу, щоб клітинка гіперпосилання відображала текст як "Надішліть електронну пошту на адресу xx», де xx — ім’я одержувача в A2. Отже, формулу в F2 потрібно змінити на:
=HYPERLINK("mailto:" & B2 & "?cc=" & C2 & "&subject="& D2 & "&body="& E2, "Email to "&A2)
Натисніть Що натомість? Створіть віртуальну версію себе у ключ, щоб отримати результат.
Виберіть цю клітинку формули та перетягніть її Ручка автозаповнення вниз, щоб створити інші гіперпосилання електронної пошти. Перегляньте скріншот:
1.1.2 Надсилання електронної пошти з Excel за допомогою функції гіперпосилання
За винятком використання наведеної вище формули гіперпосилання, ви можете вручну створити гіперпосилання електронної пошти за допомогою Insert Hyperlink функцію в Excel. Цей розділ покаже вам кроки.
1. Клацніть правою кнопкою миші електронний лист, куди потрібно вставити гіперпосилання, виберіть посилання з меню, що клацне правою кнопкою миші.
2. У спливаючому Вставте гіперпосилання діалогове вікно, вам потрібно налаштувати наступним чином.
Після натискання гіперпосилання буде створено електронний лист Outlook із зазначеними полями «Кому», «Тема» та «Тіло», як показано на знімку екрана нижче.
примітки:
1.2 Надішліть електронний лист кільком одержувачам у клітинках за допомогою сценарію VBA
У наведеному вище прикладі ви бачите, що кілька адрес електронної пошти відображаються в клітинці, розділені крапкою з комою. Якщо у вас є список електронних адрес, як показано на знімку екрана нижче, і ви хочете надіслати електронний лист або окрему електронну пошту на всі з них, наведений нижче код VBA може зробити вам послугу.
1.2.1 Надішліть електронний лист кільком одержувачам у клітинках за допомогою сценарію VBA
1. На робочому аркуші, який містить усі адреси електронної пошти, на які ви хочете надіслати електронний лист. Натисніть інший + F11 ключі, щоб відкрити Microsoft Visual Basic для додатків вікна.
2 В Microsoft Visual Basic для додатків вікна, натисніть Insert > Модуль а потім вставте наступний код у Модуль (Код) вікна.
Код VBA: надсилання електронних листів на список електронних адрес
Sub sendmultiple()
'updateby Extendoffice 20220802
Dim xOTApp As Object
Dim xMItem As Object
Dim xCell As Range
Dim xRg As Range
Dim xEmailAddr As String
Dim xTxt As String
On Error Resume Next
xTxt = ActiveWindow.RangeSelection.Address
Set xRg = Application.InputBox("Please select the addresses list:", "Kutools for Excel", xTxt, , , , , 8)
If xRg Is Nothing Then Exit Sub
Set xOTApp = CreateObject("Outlook.Application")
For Each xCell In xRg
If xCell.Value Like "*@*" Then
If xEmailAddr = "" Then
xEmailAddr = xCell.Value
Else
xEmailAddr = xEmailAddr & ";" & xCell.Value
End If
End If
Next
Set xMItem = xOTApp.CreateItem(0)
With xMItem
.To = xEmailAddr
.Subject = "Test"
.Body = "Dear " _
& vbNewLine & vbNewLine & _
"This is a test email " & _
"sending in Excel"
.Display
End With
End Sub
3 Натисніть кнопку F5 клавіша для запуску коду та a Kutools для Excel з’явиться діалогове вікно. Виберіть список електронних адрес і натисніть OK.
Примітки:
.Body = "Dear " _
& vbNewLine & vbNewLine & _
"This is a test email " & _
"sending in Excel"
Після виконання коду всі адреси електронної пошти у вибраному діапазоні відображаються в полі Кому вікна повідомлення. Перегляньте скріншот:
1.2.2 Окремо надсилайте електронні листи кожному одержувачу, указаному в клітинках, за допомогою сценарію VBA
Наведений вище код додає всі адреси електронної пошти у вибраному діапазоні до поля Кому у вікні повідомлення. Якщо ви хочете надсилати електронні листи на кожну адресу електронної пошти, указану в клітинках, окремо, не дозволяючи їм бачити адреси електронної пошти один одного, ви можете спробувати наступний сценарій VBA.
1. На робочому аркуші, який містить усі адреси електронної пошти, на які ви хочете надіслати електронні листи. Натисніть інший + F11 ключі до відкрийте вікно Microsoft Visual Basic for Applications.
2 В Microsoft Visual Basic для додатків вікна, натисніть Insert > Модулі, а потім вставте наведений нижче код у вікно модуля (код).
Код VBA: надсилайте електронні листи окремо на кожну адресу електронної пошти, указану в клітинках
Sub SendEmailToAddressInCells()
'Updated by Extendoffice 20220802
Dim xRg As Range
Dim xRgEach As Range
Dim xRgVal As String
Dim xAddress As String
Dim xOutApp As Outlook.Application
Dim xMailOut As Outlook.MailItem
On Error Resume Next
xAddress = ActiveWindow.RangeSelection.Address
Set xRg = Application.InputBox("Please select the addresses list", "KuTools For Excel", xAddress, , , , , 8)
If xRg Is Nothing Then Exit Sub
Application.ScreenUpdating = False
Set xOutApp = CreateObject("Outlook.Application")
Set xRg = xRg.SpecialCells(xlCellTypeConstants, xlTextValues)
For Each xRgEach In xRg
xRgVal = xRgEach.Value
If xRgVal Like "?*@?*.?*" Then
Set xMailOut = xOutApp.CreateItem(olMailItem)
With xMailOut
.To = xRgVal
.Subject = "Test"
.Body = "Dear " _
& vbNewLine & vbNewLine & _
"This is a test email " & _
"sending in Excel"
.Display
'.Send
End With
End If
Next
Set xMailOut = Nothing
Set xOutApp = Nothing
Application.ScreenUpdating = True
End Sub
3 Потім натисніть Tools > Список літератури. У Посилання - VBAProject у діалоговому вікні знайдіть і поставте прапорець Бібліотека об’єктів Microsoft Outlook 16.0 поле, а потім натисніть кнопку OK кнопка, щоб зберегти зміни.
4 Натисніть кнопку F5 клавіша для запуску коду та a Kutools для Excel з’явиться діалогове вікно. Виберіть список адрес електронної пошти та натисніть ОК.
Примітки:
.Subject = "Test"
.Body = "Dear " _
& vbNewLine & vbNewLine & _
"This is a test email " & _
"sending in Excel"
У цьому прикладі у вибраному діапазоні є шість адрес електронної пошти, тому шість вікон повідомлень Outlook буде створено автоматично з окремою електронною адресою, указаною в полі Кому, як показано на знімку екрана нижче.
5. Нарешті клацніть Відправити кнопку для надсилання електронних листів по одному.
2. Вставте вкладення або підпис Outlook у листи, надіслані з Excel (зі сценаріями VBA)
У цьому розділі буде показано, як вставляти вкладення або підпис Outlook за замовчуванням у електронні листи, надіслані з Excel.
2.1 Вставте вкладення в електронні листи, надіслані з Excel
Тут ми описуємо різні випадки вставлення вкладень, і ви можете вибрати спосіб відповідно до ваших потреб. У цьому розділі ви можете навчитися (клацніть будь-яке з наведених нижче посилань, щоб перейти до відповідного методу):
2.1.1 Надіслати певний файл електронною поштою як вкладення
Ви можете застосувати наведений нижче код VBA, щоб відправити електронною поштою один або кілька файлів у папці як вкладення з Excel.
1 Натисніть кнопку інший + F11 ключі.
2. На відкритті Microsoft Visual Basic для додатків вікна, натисніть Insert > Модулі. Потім вставте наступний код VBA у вікно модуля (код).
Код VBA: файли в папці електронною поштою як вкладення з Excel
Sub EmailWithAttachments()
'Updated by Extendoffice 20220802
Dim xStrFile As String
Dim xFilePath As String
Dim xFileDlg As FileDialog
Dim xFileDlgItem As Variant
Dim xOutApp As Outlook.Application
Dim xMailOut As Outlook.MailItem
Application.ScreenUpdating = False
Set xOutApp = CreateObject("Outlook.Application")
Set xMailOut = xOutApp.CreateItem(olMailItem)
Set xFileDlg = Application.FileDialog(msoFileDialogFilePicker)
If xFileDlg.Show = -1 Then
With xMailOut
.BodyFormat = olFormatRichText
.To = "xxx@aaa.com"
.Subject = "test"
.HTMLBody = "test"
For Each xFileDlgItem In xFileDlg.SelectedItems
.Attachments.Add xFileDlgItem
Next xFileDlgItem
.Display
End With
End If
Set xMailOut = Nothing
Set xOutApp = Nothing
Application.ScreenUpdating = True
End Sub
примітки:
3 Потім натисніть Tools > Список літератури. У Посилання - VBAProject у діалоговому вікні знайдіть і поставте прапорець Бібліотека об’єктів Microsoft Outlook 16.0 поле, а потім натисніть кнопку OK кнопка, щоб зберегти зміни.
4 Натисніть кнопку F5 клавіша для запуску коду, потім a перегорнути з’явиться спливаюче вікно, виберіть файли, які потрібно вкласти в електронний лист, а потім натисніть OK.
Потім з’явиться вікно повідомлення. Ви можете побачити, що вибрані файли відображаються як вкладені файли в полі «Вкладено».
2.1.2 Надіслати поточний аркуш електронною поштою як вкладення
Якщо ви хочете надіслати поточний аркуш електронною поштою як вкладення з Excel, ви можете застосувати сценарій VBA в цьому розділі.
1 Натисніть кнопку інший + F11 ключі.
2. На відкритті Microsoft Visual Basic для додатків вікна, натисніть вставити > Модулі. Потім вставте наступний код VBA в Модуль (Код) вікна.
Код VBA: надішліть поточний аркуш електронною поштою як вкладення
Sub SendWorkSheet()
'Update by Extendoffice 20220802
Dim xFile As String
Dim xFormat As Long
Dim Wb As Workbook
Dim Wb2 As Workbook
Dim FilePath As String
Dim FileName As String
Dim OutlookApp As Object
Dim OutlookMail As Object
On Error Resume Next
Application.ScreenUpdating = False
Set Wb = Application.ActiveWorkbook
ActiveSheet.Copy
Set Wb2 = Application.ActiveWorkbook
Select Case Wb.FileFormat
Case xlOpenXMLWorkbook:
xFile = ".xlsx"
xFormat = xlOpenXMLWorkbook
Case xlOpenXMLWorkbookMacroEnabled:
If Wb2.HasVBProject Then
xFile = ".xlsm"
xFormat = xlOpenXMLWorkbookMacroEnabled
Else
xFile = ".xlsx"
xFormat = xlOpenXMLWorkbook
End If
Case Excel8:
xFile = ".xls"
xFormat = Excel8
Case xlExcel12:
xFile = ".xlsb"
xFormat = xlExcel12
End Select
FilePath = Environ$("temp") & "\"
FileName = Wb.Name & Format(Now, "dd-mmm-yy h-mm-ss")
Set OutlookApp = CreateObject("Outlook.Application")
Set OutlookMail = OutlookApp.CreateItem(0)
Wb2.SaveAs FilePath & FileName & xFile, FileFormat:=xFormat
With OutlookMail
.To = "xxx@aaa.com"
.CC = "Email Address"
.BCC = "Email Address"
.Subject = "kte features"
.Body = "Please check and read this document."
.Attachments.Add Wb2.FullName
.Display
'.Send
End With
Wb2.Close
Kill FilePath & FileName & xFile
Set OutlookMail = Nothing
Set OutlookApp = Nothing
Application.ScreenUpdating = True
End Sub
Примітки:
3 Натисніть кнопку F5 щоб запустити код, тоді поточний аркуш буде збережено як робочу книгу Excel і автоматично вставлено у вікно повідомлення як вкладення. Перегляньте скріншот:
Примітка: Вкладена робоча книга, яка містить лише поточний робочий аркуш, має таке ж ім’я, що й оригінальна робоча книга. Час виконання коду також додається до назви книги.
2.1.3 Надіслати поточну книгу електронною поштою як вкладення
Після вивчення коду VBA для надсилання електронною поштою поточного робочого аркуша як вкладення з Excel, тут ми надаємо інший сценарій VBA, який допоможе вам відправити електронною поштою всю робочу книгу як вкладення. Будь ласка, зробіть наступне.
1 Натисніть кнопку інший + F11 ключі.
2. На відкритті Microsoft Visual Basic для додатків вікна, натисніть Insert > Модуль. Потім вставте наступний код VBA у вікно модуля (код).
Код VBA: надішліть поточну книгу електронною поштою як вкладення з Excel
Sub SendWorkBook()
'Update by Extendoffice 20220802
Dim OutlookApp As Object
Dim OutlookMail As Object
Set OutlookApp = CreateObject("Outlook.Application")
Set OutlookMail = OutlookApp.CreateItem(0)
On Error Resume Next
With OutlookMail
.To = "xxx@aaa.com"
.CC = "Email Address"
.BCC = "Email Address"
.Subject = "kte feature"
.Body = "Hello, please check and read this document, thank you."
.Attachments.Add Application.ActiveWorkbook.FullName
.Display
'.Send
End With
Set OutlookMail = Nothing
Set OutlookApp = Nothing
End Sub
Примітки:
3 Натисніть кнопку F5 щоб запустити код, тоді поточна книга буде автоматично вставлена у вікно повідомлення як вкладення. Перегляньте скріншот:
2.1.4 Надіслати всю робочу книгу електронною поштою як вкладення у форматі PDF
Більшість людей, як правило, зберігають робочу книгу Excel як PDF-файл, а потім надсилають її як вкладення іншим. У цьому розділі я покажу вам спосіб надсилання електронних листів безпосередньо з Excel із поточною відкритою робочою книгою як вкладенням у форматі PDF без необхідності вручну зберігати книгу як файл PDF.
1 Натисніть кнопку інший + F11 ключі.
2. На відкритті Microsoft Visual Basic для додатків вікна, натисніть Insert > Модуль. Потім вставте наступний код VBA у вікно модуля (код).
Код VBA: усю книгу надішліть електронною поштою як вкладений PDF-файл
Sub SendWorkBookAsPDF()
'Update 20220803
Dim Wb As Workbook
Dim FilePath As String
Dim FileName As String
Dim xOutApp As Object
Dim xOutMail As Object
On Error Resume Next
Application.ScreenUpdating = False
Set Wb = Application.ActiveWorkbook
FileName = Left(Wb.Name, (InStrRev(Wb.Name, ".", -1, vbTextCompare) - 1)) & Format(Now, "dd-mmm-yy h-mm-ss") & ".pdf"
FilePath = Environ$("temp") & "\" & FileName
Wb.ExportAsFixedFormat Type:=xlTypePDF, FileName:= _
FilePath, Quality:=xlQualityStandard, _
IncludeDocProperties:=True, IgnorePrintAreas:=False, OpenAfterPublish:= _
False
Set xOutApp = CreateObject("Outlook.Application")
Set xOutMail = xOutApp.CreateItem(0)
With xOutMail
.To = "xxx@aaa.com"
.CC = "Email Address"
.BCC = "Email Address"
.Subject = "test"
.Body = "test"
.Attachments.Add FilePath
.Display 'or use .Send
End With
Kill FilePath
Set xOutMail = Nothing
Set xOutApp = Nothing
Application.ScreenUpdating = True
End Sub
Примітки:
3 Натисніть кнопку F5 ключ для запуску коду. Потім поточна книга автоматично вставляється у вікно нового повідомлення як вкладений PDF-файл. Перегляньте скріншот:
2.1.5 Надіслати поточний робочий аркуш електронною поштою як вкладення у форматі PDF
Наприклад, є робоча книга під назвою «Місячні продажі», і ви закінчили таблицю звіту про продажі на робочому аркуші під назвою «Звіт про продажі» і хочете надіслати цей робочий аркуш як файл PDF своїм колегам. Наступний код VBA може зробити вам послугу.
1 Натисніть кнопку інший + F11 ключі.
2. На відкритті Microsoft Visual Basic для додатків вікна, натисніть вставити > Модуль. Потім вставте наступний код VBA у вікно модуля (код).
Код VBA: надішліть поточний аркуш електронною поштою як вкладення у форматі PDF
Sub SendWorkSheetToPDF()
'Update by Extendoffice 20220803
Dim Wb As Workbook
Dim FileName As String
Dim OutlookApp As Object
Dim OutlookMail As Object
On Error Resume Next
Set Wb = Application.ActiveWorkbook
FileName = Wb.FullName
xIndex = VBA.InStrRev(FileName, ".")
If xIndex > 1 Then FileName = VBA.Left(FileName, xIndex - 1)
FileName = FileName & "_" + ActiveSheet.Name & ".pdf"
ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, FileName:=FileName
Set OutlookApp = CreateObject("Outlook.Application")
Set OutlookMail = OutlookApp.CreateItem(0)
With OutlookMail
.To = "xxx@aaa.com"
.CC = "Email Address"
.BCC = "Email Address"
.Subject = "test"
.Body = "test"
.Attachments.Add FileName
.Display
'.Send
End With
Kill FileName
Set OutlookMail = Nothing
Set OutlookApp = Nothing
End Sub
Примітки:
3 Натисніть кнопку F5 ключ для запуску коду. Потім поточний аркуш автоматично вставляється у вікно нового повідомлення як вкладений PDF-файл. Перегляньте скріншот:
2.2 Вставте підпис Outlook в електронні листи, надіслані з Excel
Розглянемо наведений вище випадок як приклад: ви застосовуєте наведений вище код VBA, щоб надіслати поточний аркуш як вкладений PDF-файл із Excel, але підпис Outlook не можна додати до вікна повідомлення. Щоб зберегти стандартний підпис Outlook в електронному листі, надісланому з Excel, допоможе наступний метод.
Нижче наведено два коди VBA.
Код VBA 1: код допомагає зберегти підпис Outlook.
Код VBA 2: цей код допомагає надіслати поточний аркуш електронною поштою як вкладений PDF-файл.
Код VBA 1: зберегти підпис Outlook
.HTMLBody = "Email body" & "
" & .HTMLBody
Код VBA 2: надішліть поточний аркуш електронною поштою як вкладений PDF-файл
Sub SendWorkSheetToPDF()
'Update by Extendoffice 20220803
Dim Wb As Workbook
Dim FileName As String
Dim OutlookApp As Object
Dim OutlookMail As Object
On Error Resume Next
Set Wb = Application.ActiveWorkbook
FileName = Wb.FullName
xIndex = VBA.InStrRev(FileName, ".")
If xIndex > 1 Then FileName = VBA.Left(FileName, xIndex - 1)
FileName = FileName & "_" + ActiveSheet.Name & ".pdf"
ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, FileName:=FileName
Set OutlookApp = CreateObject("Outlook.Application")
Set OutlookMail = OutlookApp.CreateItem(0)
With OutlookMail
.To = "xxx@aaa.com"
.CC = "Email Address"
.BCC = "Email Address"
.Subject = "test"
.Body = "test"
.Attachments.Add FileName
.Display
'.Send
End With
Kill FileName
Set OutlookMail = Nothing
Set OutlookApp = Nothing
End Sub
1. Зазвичай вам потрібно натиснути інший + F11 ключі, щоб відкрити Microsoft Visual Basic для додатків вікна.
2 В Microsoft Visual Basic для додатків вікна, натисніть Insert > Модулі. Потім вставте наведений вище код VBA 2 у вікно Module (Code).
3. Щоб зберегти підпис Outlook за замовчуванням у електронному листі, надісланому з Excel, потрібно змінити код VBA 2 наступним чином:
Ось повний код після змін.
Sub SendWorkSheetToPDF()
'Update by Extendoffice 20220803
Dim Wb As Workbook
Dim FileName As String
Dim OutlookApp As Object
Dim OutlookMail As Object
On Error Resume Next
Set Wb = Application.ActiveWorkbook
FileName = Wb.FullName
xIndex = VBA.InStrRev(FileName, ".")
If xIndex > 1 Then FileName = VBA.Left(FileName, xIndex - 1)
FileName = FileName & "_" + ActiveSheet.Name & ".pdf"
ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, FileName:=FileName
Set OutlookApp = CreateObject("Outlook.Application")
Set OutlookMail = OutlookApp.CreateItem(0)
With OutlookMail
.Display
.To = "xxx@aaa.com"
.CC = "Email Address"
.BCC = "Email Address"
.Subject = "test"
.HTMLBody = "Email body" & "
" & .HTMLBody
.Attachments.Add FileName
'.Send
End With
Kill FileName
Set OutlookMail = Nothing
Set OutlookApp = Nothing
End Sub
4 Натисніть кнопку F5 ключ для запуску коду. Потім ви отримаєте нове вікно повідомлення з поточним робочим аркушем, прикріпленим як PDF-файл, а стандартний підпис Outlook буде автоматично вставлено в кінець тіла електронної пошти.
3. Автоматично надсилати електронні листи з Excel, коли виконується умова (за допомогою сценаріїв VBA)
У наведених вище прикладах вам потрібно запустити код вручну, щоб забезпечити доставку електронної пошти. Якщо ви хочете автоматично запускати код, коли виконується певна умова, наприклад, коли клітинка досягає певного значення, коли змінюється значення клітинки, коли досягається дата тощо, електронний лист буде надіслано автоматично. У цьому розділі наведено умови, які користувачі Excel часто шукали в Google, щоб допомогти вам автоматично надсилати електронні листи з Excel, коли виконується певна умова.
3.1 Автоматично надсилати електронний лист, коли клітинка досягає певного значення
Як показано на знімку екрана нижче, припустімо, що у вас є таблиця продажів із клітинкою D6, яка містить загальний обсяг продажів. Ви хочете автоматично надіслати електронного листа своєму босові на основі загального обсягу продажів. Наприклад, створити або надіслати електронний лист автоматично, коли загальний обсяг продажів перевищує 10000 10000, але якщо загальний обсяг продажів дорівнює або менше XNUMX XNUMX, жодних дій не буде вжито.
1. На робочому аркуші, що містить таблицю продажу, клацніть правою кнопкою миші вкладку аркуша та клацніть Переглянути код з меню, що клацне правою кнопкою миші.
2. На відкритті Microsoft Visual Basic для додатків вікно, вставте наступний код VBA у Аркуш (Код) вікна.
Код VBA: автоматично надсилати електронний лист, коли клітинка досягає певного значення в Excel
Dim xRg As Range
'Update by Extendoffice 20200803
Private Sub Worksheet_Change(ByVal Target As Range)
On Error Resume Next
If Target.Cells.Count > 1 Then Exit Sub
Set xRg = Intersect(Range("D6"), Target)
If xRg Is Nothing Then Exit Sub
If IsNumeric(Target.Value) And Target.Value > 10000 Then
Call Mail_small_Text_Outlook
End If
End Sub
Sub Mail_small_Text_Outlook()
Dim xOutApp As Object
Dim xOutMail As Object
Dim xMailBody As String
Set xOutApp = CreateObject("Outlook.Application")
Set xOutMail = xOutApp.CreateItem(0)
xMailBody = "Hi boss" & vbNewLine & vbNewLine & _
"Total sales of over $10,000 in January: " & Range("D6")
On Error Resume Next
With xOutMail
.To = "xxx@aaa.com"
.CC = "Email address"
.BCC = "Email address"
.Subject = "test"
.Body = xMailBody
.Display 'or use .Send
End With
On Error GoTo 0
Set xOutMail = Nothing
Set xOutApp = Nothing
End Sub
Private Sub Worksheet_Calculate()
Dim xI As Integer
Dim xRg As Range
Set xRg = Range("D6")
On Error GoTo Err01
xI = Int(xRg.Value)
If xI > 10000 Then
Call Mail_small_Text_Outlook
End If
Err01:
End Sub
примітки:
xMailBody = "Hi boss" & vbNewLine & vbNewLine & _
"Total sales of over $10,000 in January: " & Range("D6")
Відтепер, коли значення в клітинці D6 перевищує 10000 XNUMX, буде створено електронний лист, як показано на знімку екрана нижче.
3.2 Автоматично надсилати електронний лист, коли змінюється значення клітинки
Як показано на знімку екрана нижче, припустімо, що ви отримали книгу, яка містить місячні продажі на різних аркушах і загальну кількість продажів на аркуші. Вам потрібно перевірити загальний обсяг продажів, і якщо загальний обсяг продажів змінено, надішліть книгу назад відправнику та повідомте відправника, що клітинку було змінено.
1. На робочому аркуші, що містить таблицю продажу, клацніть правою кнопкою миші вкладку аркуша та клацніть Переглянути код з меню, що клацне правою кнопкою миші.
2. На відкритті Microsoft Visual Basic для додатків Вставте наведений нижче код VBA у вікно Аркуш (Код).
Код VBA: автоматично надсилати електронний лист, коли змінюється вказане значення клітинки
Private Sub Worksheet_Change(ByVal Target As Range)
'Updated by Extendoffice 20220803
Dim xRgSel As Range
Dim xOutApp As Object
Dim xMailItem As Object
Dim xMailBody As String
Dim xBoolean As Boolean
Dim xItsRG As Range
Dim xDDs As Range
Dim xDs As Range
On Error Resume Next
Application.ScreenUpdating = False
Application.DisplayAlerts = False
xBoolean = False
Set xRg = Range("B14")
Set xItsRG = Intersect(Target, xRg)
Set xDDs = Intersect(Target.DirectDependents, xRg)
Set xDs = Intersect(Target.Dependents, xRg)
If Not (xItsRG Is Nothing) Then
Set xRgSel = xItsRG
xBoolean = True
ElseIf Not (xDDs Is Nothing) Then
Set xRgSel = xDDs
xBoolean = True
ElseIf Not (xDs Is Nothing) Then
Set xRgSel = xDs
xBoolean = True
End If
ActiveWorkbook.Save
If xBoolean Then
Debug.Print xRgSel.Address
Set xOutApp = CreateObject("Outlook.Application")
Set xMailItem = xOutApp.CreateItem(0)
xMailBody = "The cell " & xRgSel.Address(False, False) & _
" in the worksheet '" & Me.Name & "' were modified on " & _
Format$(Now, "mm/dd/yyyy") & " at " & Format$(Now, "hh:mm:ss") & _
" by " & Environ$("username") & "."
With xMailItem
.To = "xxx@aaa.com"
.CC = "Email address"
.BCC = "Email address"
.Subject = "Worksheet modified"
.Body = xMailBody
.Attachments.Add (ThisWorkbook.FullName)
.Display
End With
Set xRgSel = Nothing
Set xOutApp = Nothing
Set xMailItem = Nothing
End If
Application.DisplayAlerts = True
Application.ScreenUpdating = True
End Sub
примітки: У коді,
Відтепер, коли значення в клітинці B14 змінюється, повідомлення Outlook створюватиметься автоматично, як показано на знімку екрана нижче.
3.3 Автоматично надсилати електронний лист, коли робочу книгу збережено
Якщо у вас є робоча книга, якою потрібно поділитися з іншими після внесення змін, зазвичай вам потрібно зберегти робочу книгу, запустити поштовий клієнт, створити нову електронну пошту з вкладеною цією книгою, заповнити відповідні поля та надіслати електронний лист. У цьому розділі буде показано спосіб автоматичного створення електронного листа кожного разу, коли ви зберігаєте книгу. Будь ласка, зробіть наступне.
1 Натисніть кнопку інший + F11 ключі, щоб відкрити Microsoft Visual Basic для додатків вікна.
2. У цьому вікні двічі клацніть ThisWorkbook в Проекти потім вставте наведений нижче код VBA у Ця робоча книга (код) вікна.
Код VBA: автоматично надсилати електронний лист, коли робочу книгу збережено
Private Sub Workbook_AfterSave(ByVal Success As Boolean)
'Updated by Extendoffice 20220804
Dim xOutApp As Object
Dim xMailItem As Object
Dim xName As String
On Error Resume Next
Set xOutApp = CreateObject("Outlook.Application")
Set xMailItem = xOutApp.CreateItem(0)
xName = ActiveWorkbook.FullName
With xMailItem
.To = "xxx@aaa.com"
.CC = "Email address"
.BCC = "Email address"
.Subject = "The workbook has been updated"
.Body = "Hi," & Chr(13) & Chr(13) & "File is now updated."
.Attachments.Add xName
.Display
'.send
End With
Set xMailItem = Nothing
Set xOutApp = Nothing
End Sub
примітки: У коді,
3. Відтепер при збереженні робочої книги, натиснувши Ctrl + S клавіші або клацання зберегти кнопку електронної пошти Outlook буде створено автоматично. Ви бачите, що поточну книгу вкладено як вкладення, а поля заповнено вказаним вмістом. Перегляньте скріншот:
Поради: якщо ви часто користуєтеся цією робочою книгою, рекомендуємо зберегти її як Книга Excel з підтримкою макросів щоб зберегти сценарій VBA для майбутнього використання. Кроки такі.
3.4 Автоматично надсилати електронний лист у певний час
Припустімо, вам потрібно надіслати комусь електронний лист із зошитом завдань щоп'ятниці вранці о 9 ранкуі хочете зробити це автоматично в Excel без необхідності вручну працювати з клієнтом електронної пошти. У цьому розділі буде показано, як це зробити.
1 Натисніть кнопку інший + F11 ключі, щоб відкрити Microsoft Visual Basic для додатків вікна.
2 В Microsoft Visual Basic для додатків вікна, натисніть Insert > Модуль. Потім вставте наступний код VBA у вікно модуля.
Код VBA1: надішліть поточну книгу електронною поштою як вкладення з Excel
Sub Timer()
If Weekday(Date) = vbFriday Then
SendWorkBook
Application.OnTime TimeValue("09:00:00"), "Timer"
Else
Application.OnTime TimeValue("09:00:00"), "Timer"
End If
End Sub
Sub SendWorkBook()
'Update by Extendoffice 20220802
Dim OutlookApp As Object
Dim OutlookMail As Object
Set OutlookApp = CreateObject("Outlook.Application")
Set OutlookMail = OutlookApp.CreateItem(0)
On Error Resume Next
With OutlookMail
.To = "xxx@aaa.com"
.CC = "Email Address"
.BCC = "Email Address"
.Subject = "kte feature"
.Body = "Hello, please check and read this document, thank you."
.Attachments.Add Application.ActiveWorkbook.FullName
.Display
'.Send
End With
Set OutlookMail = Nothing
Set OutlookApp = Nothing
End Sub
3. У цьому вікні двічі клацніть ThisWorkbook в Проекти потім вставте наведений нижче код VBA у Ця робоча книга (код) вікна.
Код VBA 2: автоматично надсилати електронний лист у певний час
Private Sub Workbook_Open()
Application.OnTime TimeValue("09:00:00"), "Timer"
End Sub
примітки:
4. Збережіть коди, а потім збережіть книгу як книгу Excel із підтримкою макросів, як описано нижче.
5. Відкрийте збережену робочу книгу з підтримкою макросів, після чого електронний лист буде створено або надіслано автоматично, коли настане день і час.
4. Додаткові теми
У цьому розділі зібрані інші теми, з якими ви можете зіткнутися під час надсилання електронних листів із Excel.
4.1 Надсилання електронною поштою діапазону комірок із Excel (зі сценарієм VBA)
Припустімо, що на аркуші Excel є місячна таблиця продажів, як показано на знімку екрана нижче, і вам потрібно надіслати цю місячну таблицю продажів іншим як основний вміст електронного листа або безпосередньо як вкладення. Тут ми пропонуємо вам два методи, як це зробити.
4.1.1 Надіслати електронною поштою діапазон як частину основного вмісту з Excel
Ви можете запустити наведений нижче код VBA, щоб надіслати діапазон клітинок як частину основного вмісту електронної пошти з Excel
1 Натисніть кнопку інший + F11 ключі, щоб відкрити Microsoft Visual Basic для додатків вікна.
2 В Microsoft Visual Basic для додатків вікна, натисніть Tools > посилання. А потім перевірте Бібліотека об’єктів Microsoft Outlook 16.0 і натисніть OK в Посилання - VBAProject діалогове вікно.
3. клацання Insert > Модулі, а потім вставте наведений нижче код VBA у Модуль (Код) вікна.
Код VBA: надішліть діапазон клітинок як частину основного вмісту електронної пошти з Excel
Sub SendARangeofCells()
'Updated by Extendoffice 20220809
Dim xRg As Range
Dim I, J As Long
Dim xAddress As String
Dim xMailOut As Object
Dim xOutApp As Object
On Error Resume Next
Set xOutApp = CreateObject("Outlook.Application")
Set xMailOut = xOutApp.CreateItem(olMailItem)
xAddress = ActiveWindow.RangeSelection.Address
Set xRg = Application.InputBox("Please select range you need to paste into email body", "KuTools For Excel", xAddress, , , , , 8)
If xRg Is Nothing Then Exit Sub
Application.ScreenUpdating = False
Set xOutApp = CreateObject("Outlook.Application")
Set xMailOut = xOutApp.CreateItem(olMailItem)
With xMailOut
.Subject = "test"
.To = "xxx@aaa.com"
.CC = "Email address"
.BCC = "Email address"
.HTMLBody = RangetoHTML(xRg)
.Display
'.Send
End With
Set xMailOut = Nothing
Set xOutApp = Nothing
Application.ScreenUpdating = True
End Sub
' The following VBA script is cited from this page:
' https://stackoverflow.com/questions/18663127/paste-excel-range-in-outlook
Function RangetoHTML(rng As Range)
' By Ron de Bruin.
Dim fso As Object
Dim ts As Object
Dim TempFile As String
Dim TempWB As Workbook
TempFile = Environ$("temp") & "/" & Format(Now, "dd-mm-yy h-mm-ss") & ".htm"
'Copy the range and create a new workbook to past the data in
rng.Copy
Set TempWB = Workbooks.Add(1)
With TempWB.Sheets(1)
.Cells(1).PasteSpecial Paste:=8
.Cells(1).PasteSpecial xlPasteValues, , False, False
.Cells(1).PasteSpecial xlPasteFormats, , False, False
.Cells(1).Select
Application.CutCopyMode = False
On Error Resume Next
.DrawingObjects.Visible = True
.DrawingObjects.Delete
On Error GoTo 0
End With
'Publish the sheet to a htm file
With TempWB.PublishObjects.Add( _
SourceType:=xlSourceRange, _
Filename:=TempFile, _
Sheet:=TempWB.Sheets(1).Name, _
Source:=TempWB.Sheets(1).UsedRange.Address, _
HtmlType:=xlHtmlStatic)
.Publish (True)
End With
'Read all data from the htm file into RangetoHTML
Set fso = CreateObject("Scripting.FileSystemObject")
Set ts = fso.GetFile(TempFile).OpenAsTextStream(1, -2)
RangetoHTML = ts.ReadAll
ts.Close
RangetoHTML = Replace(RangetoHTML, "align=center x:publishsource=", _
"align=left x:publishsource=")
'Close TempWB
TempWB.Close savechanges:=False
'Delete the htm file we used in this function
Kill TempFile
Set ts = Nothing
Set fso = Nothing
Set TempWB = Nothing
End Function
примітки: У коді,
4 Натисніть кнопку F5 ключ для запуску коду. У вискочив Kutools для Excel у діалоговому вікні виберіть діапазон клітинок, які потрібно надіслати як частину основного вмісту електронної пошти, а потім клацніть OK. Дивіться знімок екрана:
Після цього електронний лист Outlook буде створено автоматично. Ви бачите, що діапазон, який ви вибрали на робочому аркуші, вставлено в тіло електронної пошти. Перегляньте скріншот:
4.1.2 Надіслати діапазон електронною поштою як вкладення з Excel
Якщо вам потрібно надіслати електронною поштою діапазон клітинок на аркуші як вкладення з Excel. Ви можете спробувати наступний код VBA.
1 Натисніть кнопку інший + F11 ключі.
2. На відкритті Microsoft Visual Basic для додатків вікна, натисніть Insert > Модулі. Потім вставте наступний код VBA в Модуль (Код) вікна.
Код VBA: діапазон електронною поштою як вкладення з Excel
Sub SendRange()
'Update 20220809
Dim xFile As String
Dim xFormat As Long
Dim Wb As Workbook
Dim Wb2 As Workbook
Dim Ws As Worksheet
Dim FilePath As String
Dim FileName As String
Dim OutlookApp As Object
Dim OutlookMail As Object
Dim WorkRng As Range
xTitleId = "KutoolsforExcel"
Set WorkRng = Application.Selection
Set WorkRng = Application.InputBox("Range", xTitleId, WorkRng.Address, Type:=8)
Application.ScreenUpdating = False
Application.DisplayAlerts = False
Set Wb = Application.ActiveWorkbook
Wb.Worksheets.Add
Set Ws = Application.ActiveSheet
WorkRng.Copy Ws.Cells(1, 1)
Ws.Copy
Set Wb2 = Application.ActiveWorkbook
Select Case Wb.FileFormat
Case xlOpenXMLWorkbook:
xFile = ".xlsx"
xFormat = xlOpenXMLWorkbook
Case xlOpenXMLWorkbookMacroEnabled:
If Wb2.HasVBProject Then
xFile = ".xlsm"
xFormat = xlOpenXMLWorkbookMacroEnabled
Else
xFile = ".xlsx"
xFormat = xlOpenXMLWorkbook
End If
Case Excel8:
xFile = ".xls"
xFormat = Excel8
Case xlExcel12:
xFile = ".xlsb"
xFormat = xlExcel12
End Select
FilePath = Environ$("temp") & "\"
FileName = Wb.Name & Format(Now, "dd-mmm-yy h-mm-ss")
Set OutlookApp = CreateObject("Outlook.Application")
Set OutlookMail = OutlookApp.CreateItem(0)
Wb2.SaveAs FilePath & FileName & xFile, FileFormat:=xFormat
With OutlookMail
.To = "xxx@aaa.com"
.CC = "Email address"
.BCC = "Email address"
.Subject = "Monthly sales for 2021"
.Body = "Hello, please check and read this document. "
.Attachments.Add Wb2.FullName
.Display
'.Send
End With
Wb2.Close
Kill FilePath & FileName & xFile
Set OutlookMail = Nothing
Set OutlookApp = Nothing
Ws.Delete
Application.DisplayAlerts = True
Application.ScreenUpdating = True
End Sub
примітки:
3 Натисніть кнопку F5 ключ для запуску коду. У вискочив Kutools для Excel у діалоговому вікні виберіть діапазон клітинок, які потрібно надіслати як вкладення в електронному листі, а потім клацніть OK. Дивіться знімок екрана:
Після цього електронний лист Outlook буде створено автоматично. І діапазон клітинок, які ви вибрали на аркуші, зберігається як книга Excel і вкладається у вікні повідомлення. Перегляньте скріншот:
4.2 Надсилання електронних листів після натискання кнопки в Excel
Якщо вам потрібно натиснути кнопку команди, щоб запустити макрос для надсилання електронного листа з Excel, наприклад, надішліть поточну книгу як вкладення іншим, натиснувши кнопку команди на аркуші. Ви можете виконати наведені нижче дії, щоб це зробити.
1. клацання Розробник > Insert > Кнопка керування (керування ActiveX). Потім намалюйте командну кнопку на аркуші.
Поради: якщо у вас уже є кнопка команди, пропустіть цей крок.
2 Натисніть кнопку інший + F11 ключі, щоб відкрити Microsoft Visual Basic для додатків вікно. У вікні натисніть Insert > Мод, потім вставте код VBA (код, який використовується для надсилання електронною поштою поточної робочої книги як вкладення з Excel) у вікно модуля (код).
Натисніть тут, щоб отримати код.
примітки: тут назва макросу, який ви створили на кроці 2 SendWorkbook.
3 Натисніть кнопку інший + Q клавіші, щоб закрити Microsoft Visual Basic для додатків вікна.
4. Тепер потрібно призначити макрос командній кнопці. Клацніть правою кнопкою миші командну кнопку, виберіть Переглянути код з меню правою кнопкою миші.
5. Тоді Microsoft Visual Basic для додатків з’явиться спливаюче вікно, ви побачите наступні два рядки в списку Аркуш (Код) вікна.
Private Sub CommandButton1_Click()
End Sub
6. Введіть назву наявного макросу всередині підпроцедури для командної кнопки.
7 Натисніть кнопку інший + Q клавіші, щоб закрити Редактор Visual Basic, і клацніть Розробник > Режим дизайну щоб вимкнути режим проектування.
Тепер ви можете натиснути кнопку команди, щоб надіслати електронний лист із поточною робочою книгою як вкладеним файлом.
4.3 Надсилати електронні листи з указаного облікового запису електронної пошти
Зазвичай під час запуску електронного листа з Excel із кодом VBA обліковий запис електронної пошти відправника є обліковим записом за замовчуванням у Outlook. Припустімо, ви налаштували кілька облікових записів електронної пошти в Outlook і хочете використовувати певний обліковий запис для надсилання електронних листів із Excel замість використання облікового запису за замовчуванням. Наведений нижче код VBA може допомогти.
У цьому випадку необхідні наступні коди.
VBA код 1:
Dim OutlookMail As Outlook.MailItem
VBA код 2:
For Each xAccount In OutlookApp.Session.Accounts
If VBA.LCase(xAccount.SmtpAddress) = VBA.LCase("zxm@addin99.com") Then 'Specify your email account here
OutlookMail.SendUsingAccount = xAccount
End If
Next
Як використовувати наведений вище код VBA?
У цьому прикладі ми збираємося вказати певний обліковий запис електронної пошти, щоб надіслати поточну книгу як вкладення з Excel. Будь ласка, зробіть наступне.
1 Натисніть кнопку інший + F11 ключі. В Microsoft Visual Basic для додатків вікна, натисніть Tools > посилання. А потім перевірте Бібліотека об’єктів Microsoft Outlook 16.0 і натисніть OK в Посилання - VBAProject діалогове вікно.
2. клацання Insert > Модулі. Потім вставте наступний код VBA в Модуль (Код) вікна.
Код VBA: надішліть поточну книгу як вкладення електронної пошти з Excel через указаний обліковий запис Outlook
Sub SendWorkBook()
'Update by Extendoffice 20220809
Dim OutlookApp As Object
Dim OutlookMail As Outlook.MailItem 'important! Here can’t be declared as Object
Dim xAccount As Account
Set OutlookApp = CreateObject("Outlook.Application")
Set OutlookMail = OutlookApp.CreateItem(olMailItem)
On Error Resume Next
'The following lines helps to specify a certian email account
For Each xAccount In OutlookApp.Session.Accounts
If VBA.LCase(xAccount.SmtpAddress) = VBA.LCase("zxm@addin99.com") Then 'Specify your email account here
OutlookMail.SendUsingAccount = xAccount
End If
Next
'End
With OutlookMail
.To = "xxx@aaa.com"
.CC = "Email Address"
.BCC = "Email Address"
.Subject = "kte feature"
.Body = "Hello, please check and read this document, thank you."
.Attachments.Add Application.ActiveWorkbook.FullName
.Display
'.Send
End With
Set OutlookMail = Nothing
Set OutlookApp = Nothing
End Sub
3 Натисніть кнопку F5 ключ для запуску коду. Потім з’явиться повідомлення електронної пошти Outlook, ви бачите, що Від поле заповнюється обліковим записом електронної пошти, який ви вказали в коді.
4.4 Надіслати електронний лист, коли настала дата
Якщо вам потрібно надіслати електронний лист на основі певної дати виконання, наприклад, як показано на знімку екрана нижче, є таблиця проектів, коли дата виконання в діапазоні E2:E7 дорівнює або менше 7 днів від сьогоднішнього дня (припускається, що поточна дата – 2022/8/4), відповідним керівникам проекту буде автоматично надіслано електронний лист із сповіщенням про те, що термін дії проекту закінчується.
1. На робочому аркуші, що містить таблицю проекту, клацніть правою кнопкою миші вкладку аркуша та клацніть Переглянути код з меню, що клацне правою кнопкою миші.
2. На відкритті Microsoft Visual Basic для додатків вікно, вставте наступний код VBA у Аркуш (Код) вікна.
Код VBA: автоматично надсилати електронний лист, коли настає термін виконання
Public Sub SendMailDueDate()
'Updated by Extendoffice 20220804
Dim xRgDate As Range
Dim xRgSend As Range
Dim xRgText As Range
Dim xRgDone As Range
Dim xOutApp As Object
Dim xMailItem As Object
Dim xLastRow As Long
Dim vbCrLf As String
Dim xMailBody As String
Dim xRgDateVal As String
Dim xRgSendVal As String
Dim xMailSubject As String
Dim i As Long
On Error Resume Next
Set xRgDate = Range("E2:E7") 'Please reference the due date column range
If xRgDate Is Nothing Then Exit Sub
Set xRgSend = Range("C2:C7") 'Please reference the email addresses column range
If xRgSend Is Nothing Then Exit Sub
Set xRgText = Range("D2:D7") 'Please reference the remark column range (the remark used to notify project leaders of the expiration of the project)
If xRgText Is Nothing Then Exit Sub
xLastRow = xRgDate.Rows.Count
Set xRgDate = xRgDate(1)
Set xRgSend = xRgSend(1)
Set xRgText = xRgText(1)
Set xOutApp = CreateObject("Outlook.Application")
For i = 1 To xLastRow
xRgDateVal = ""
xRgDateVal = xRgDate.Offset(i - 1).Value
If xRgDateVal <> "" Then
If CDate(xRgDateVal) - Date <= 7 And CDate(xRgDateVal) - Date > 0 Then
xRgSendVal = xRgSend.Offset(i - 1).Value
xMailSubject = xRgText.Offset(i - 1).Value & " on " & xRgDateVal
vbCrLf = "
"
xMailBody = ""
xMailBody = xMailBody & "Dear " & xRgSendVal & vbCrLf
xMailBody = xMailBody & "Remark : " & xRgText.Offset(i - 1).Value & vbCrLf
xMailBody = xMailBody & ""
Set xMailItem = xOutApp.CreateItem(0)
With xMailItem
.Subject = xMailSubject
.To = xRgSendVal
.CC = "Email address"
.BCC = "Email address"
.HTMLBody = xMailBody
.Display
'.Send
End With
Set xMailItem = Nothing
End If
End If
Next
Set xOutApp = Nothing
End Sub
примітки: У коді,
3 Натисніть кнопку F5 ключ для запуску коду. Потім, якщо термін дії відповідає умовам, буде створено відповідний електронний лист. У цьому випадку буде створено два електронні листи, як показано на знімку екрана нижче.
5. Зручний інструмент, який допоможе вам легко надсилати електронні листи з Excel
Якщо ви новачок у VBA, наведені вище методи можуть бути непростими для вас. Тут ми рекомендуємо Kutools для ExcelАвтора Надіслати електронні листи за допомогою цієї функції ви можете легко надсилати електронні листи з Excel лише кількома клацаннями. Будь ласка, зробіть наступне.
Перед поданням заявки Kutools для Excel, будь ласка завантажте та встановіть його спочатку.
5.1 Легко створіть список розсилки, який містить потрібні вам поля електронної пошти
Перш ніж застосувати функцію надсилання електронних листів, вам потрібно створити список розсилки, який містить потрібні вам поля електронної пошти. Тут може допомогти функція «Створити список розсилки».
1. клацання Kutools Plus > Створити список розсилки.
2. На відкритті Створити список розсилки вікно, вам потрібно налаштувати наступним чином.
Потім створюється зразок таблиці списку розсилки, як показано на знімку екрана нижче.
3. Тепер вам потрібно замінити вихідні дані у вибірці на дані вашого поля.
Тепер ви створили таблицю списку розсилки. Будь ласка, продовжуйте застосовувати Надіслати електронні листи функція надсилання електронних листів із Excel на основі полів, які ви створили.
Якщо ви хочете отримати безкоштовну пробну версію (30 днів) цієї програми, натисніть, щоб завантажити, а потім перейдіть до застосування операції, як описано вище.
5.2 Легко надсилайте електронні листи, включаючи поля, створені вами в списку розсилки
Після створення списку розсилки (натисніть, щоб дізнатися, як), який містить поля, які можуть знадобитися у ваших електронних листах, тепер ви можете надсилати електронні листи з Excel із цими полями.
1. Виберіть весь список розсилки, натисніть Kutools Plus > Надіслати електронні листи.
2 В Надіслати електронні листи діалоговому вікні, виконайте наступне налаштування.
3. Тоді a Kutools для Excel з’явиться діалогове вікно з інформацією про кількість надісланих електронних листів, натисніть OK , щоб закрити це діалогове вікно.
Поради: Ви можете перейти до Відправлені у папці Outlook, щоб перевірити надіслані електронні листи.
5.3 Легко надсилайте електронні листи з текстом HTML (включаючи гіперпосилання, зображення тощо)
Ця функція надсилання електронних листів дозволяє створити електронний лист HTML, який містить гіперпосилання, зображення, різні розміри та кольори шрифтів тощо.
після створення списку розсилки, який містить потрібні вам поля електронної пошти,
Коли ти налаштувати діалогове вікно Надсилання електронних листів, ви можете зробити основний вміст багатим, використовуючи параметри на панелі інструментів.
Перегляньте знімок екрана нижче:
5.4 Легко вставте стандартний підпис Outlook під час надсилання електронних листів
У наведеному вище методі ми продемонстрували код VBA, який допоможе надсилати електронні листи з підписом Outlook за замовчуванням. Тут із функцією «Надіслати електронні листи» вам просто потрібно вибрати опцію, тоді підпис Outlook за замовчуванням буде вставлено в електронні листи, надіслані з Excel.
після створення списку розсилки, який містить потрібні вам поля електронної пошти,
Коли налаштувати діалогове вікно Надсилання електронних листів, потрібно натиснути Опції > Використовуйте налаштування підпису Outlook.
примітки: Переконайтеся, що перед параметром «Використовувати параметри підпису Outlook» стоїть позначка.
Коли одержувачі отримують електронний лист, вони можуть бачити підпис Outlook за замовчуванням, який відображається в кінці тексту електронного листа.
5.5 Легко надсилайте електронні листи з указаного облікового запису електронної пошти
Щоб використовувати певний обліковий запис електронної пошти для надсилання електронних листів із Excel замість використання облікового запису за замовчуванням, функція «Надіслати електронні листи» також може допомогти легко виконати це.
після створення списку розсилки, який містить потрібні вам поля електронної пошти,
Коли налаштувати діалогове вікно Надсилання електронних листів, потрібно натиснути Опції > Надіслано з, а потім виберіть обліковий запис електронної пошти, з якого потрібно надсилати електронні листи.
примітки: після вибору облікового запису електронної пошти перед ним з’явиться позначка.
Натисніть знайдете щоб дізнатися більше про цю функцію надсилання електронних листів.
Якщо ви хочете отримати безкоштовну пробну версію (30 днів) цієї програми, натисніть, щоб завантажити, а потім перейдіть до застосування операції, як описано вище.
Підсумовуючи, надсилання електронних листів із Excel є досить корисним у нашій щоденній роботі. Ця стаття охоплює більш вичерпні теми надсилання електронних листів із Excel. Якщо є інші теми чи простіші рішення, залиште коментар, щоб повідомити мені про це.
Найкращі інструменти продуктивності офісу
Покращуйте свої навички Excel за допомогою Kutools для Excel і відчуйте ефективність, як ніколи раніше. Kutools для Excel пропонує понад 300 додаткових функцій для підвищення продуктивності та економії часу. Натисніть тут, щоб отримати функцію, яка вам найбільше потрібна...
Вкладка Office Передає інтерфейс із вкладками в Office і значно полегшує вашу роботу
- Увімкніть редагування та читання на вкладках у Word, Excel, PowerPoint, Publisher, Access, Visio та Project.
- Відкривайте та створюйте кілька документів на нових вкладках того самого вікна, а не в нових вікнах.
- Збільшує вашу продуктивність на 50% та зменшує сотні клацань миші для вас щодня!