Руководство по Excel – Отправка писем из Excel
Обычно для отправки электронных писем мы используем почтовые клиенты, такие как Outlook, Gmail и другие. Однако многие пользователи хранят данные в рабочих книгах Excel и во время работы с ними часто нуждаются в отправке этих данных другим людям. В таких случаях гораздо удобнее отправлять письма прямо из рабочей книги Excel — это экономит время, которое пришлось бы тратить на работу с почтовым клиентом. В этом пошаговом руководстве показано, как отправлять письма из Excel в различных ситуациях.
Примечание. Перед использованием описанных ниже методов обязательно настройте почтовый клиент Outlook на своём компьютере и установите его в качестве почтового клиента по умолчанию.
Оглавление:[ Скрыть ]
1. Основы отправки писем прямо из Excel
В этом разделе вы найдёте основы отправки писем прямо из Excel.
1,1 Отправка писем из Excel с помощью встроенных функций Excel
Если вам нужно отправлять из Excel только простые письма с полями «Кому», «Тема», «Копия» и текстом сообщения — на помощь придут встроенные функции Excel.
1,1.1 Отправка письма из Excel с помощью формулы
Как показано в таблице ниже, для отправки из Excel различных писем на основе заданных полей можно использовать ссылки на ячейки с этими полями, чтобы создавать разные гиперссылки с помощью функции HYPERLINK. После создания гиперссылок достаточно просто щёлкнуть по нужной — и письмо автоматически откроется для отправки.
Примечание. Если в полях «Кому» или «Копия» указано несколько получателей, разделяйте их точкой с запятой.

Этот раздел состоит из четырёх частей и пошагово показывает, как добавить в формулу гиперссылку с адресом электронной почты получателя, копией для других получателей, темой письма и текстом сообщения. Выполните следующие действия.
Ниже приведены синтаксис и аргументы функции «ГИПЕРССЫЛКА».
Синтаксис
HYPERLINK(link_location, [friendly_name])
Аргументы
1,1.1,1 Добавление Адрес электронной почты в формулу гиперссылки
В данном случае для добавления получателя письма в формулу используется префикс «mailto:». В нашем примере адрес электронной почты первого получателя находится в ячейке B2, поэтому к ссылке на эту ячейку добавляется префикс «mailto:».
“mailto:”&B2
1. Выберите ячейку, в которой будет отображаться гиперссылка. В данном примере выбрана ячейка F2.
2. Затем введите в неё следующую формулу.
=HYPERLINK("mailto:"&,B2) 
Примечание. После нажатия клавиши «Enter» создастся гиперссылка, как показано на скриншоте ниже. При клике по этой ссылке автоматически откроется окно создания письма в Outlook, а адрес электронной почты получателя будет подставлен в поле «Кому».

Адрес получателя и адрес электронной почты теперь добавлены в формулу гиперссылки. Продолжайте выполнять следующие шаги, чтобы при необходимости указать тему письма, получателей копии и текст сообщения.
1,1.1,2 Добавление получателей копии в формулу гиперссылки
Чтобы добавить получателей копии в гиперссылку, включите в формулу параметр «?cc=» следующим образом.
Формула в ячейке F2 должна выглядеть так:
=HYPERLINK("mailto:" &, B2 &, "?cc=" &, C2) 
1,1.1,3 Добавление темы письма в формулу гиперссылки
Чтобы добавить тему письма в гиперссылку, включите в формулу фрагмент «&subject=» следующим образом.
Теперь формула в ячейке 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) 
Примечание. Если нажать клавишу «Enter» и щёлкнуть по ссылке, в окне «Новое письмо» содержимое тела сообщения отобразится в одну строку.

Чтобы текст сообщения отображался в отдельных строках, добавьте код символа перевода строки «%0A» в нужное место содержимого ячейки. См. скриншот:

1,1.1,5 Указание отображаемого текста для гиперссылки
На предыдущих шагах мы завершили аргумент Link_location, указав все необходимые почтовые поля. В этом разделе мы завершим следующий аргумент — [friendly_name].
В данном случае я хочу, чтобы в ячейке с гиперссылкой отображался текст «Отправить письмо xx», где xx — имя получателя из ячейки A2. Поэтому формулу в ячейке F2 следует изменить следующим образом:
=HYPERLINK("mailto:" &, B2 &, "?cc=" &, C2 &, "&subject="&, D2 &, "&body="&, E2, "Email to "&,A2) Нажмите клавишу «Enter», чтобы instantly получить результат.

Выделите ячейку с этой формулой и перетащите её маркер автозаполнения вниз, чтобы создать дополнительные гиперссылки для отправки писем. См. скриншот:

1,1.2 Отправка письма из Excel с помощью функции гиперссылки
Помимо применения приведённой выше формулы гиперссылки, вы можете вручную создать почтовую гиперссылку с помощью функции «Создать гиперссылку» в Excel. В этом разделе подробно описаны все необходимые шаги.
1. Щелкните правой кнопкой мыши по ячейке, куда хотите вставить гиперссылку, и выберите в контекстном меню пункт «Ссылка».

2. В открывшемся диалоговом окне «Создать гиперссылку» выполните следующие настройки.

При клике по гиперссылке автоматически откроется окно создания письма в Outlook с заранее заполненными полями «Кому», «Тема» и «Текст сообщения», как показано на скриншоте ниже.

Примечания:
1,2 Отправка писем нескольким получателям из ячеек с помощью сценария VBA
В приведённом выше примере несколько адресов электронной почты отображаются в одной ячейке, разделённые точками с запятой. Если у вас есть список адресов электронной почты, как показано на скриншоте ниже, и вы хотите отправить одно общее или отдельные письма всем этим получателям, следующий код VBA поможет вам в этом.

1,2.1 Отправка одного письма нескольким получателям из ячеек с помощью сценария VBA
1. На листе, содержащем все адреса электронной почты, на которые вы хотите отправить письмо, нажмите «Alt» + «F11», чтобы открыть окно Microsoft Visual Basic for Applications.
2. В окне «Microsoft Visual Basic for Applications» выберите «Вставка» > «Модуль», затем вставьте приведённый ниже код в окно «Модуль (Код)».

Код 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», чтобы запустить код. Откроется диалоговое окно «Kutools для Excel» — выберите список адресов «Адрес электронной почты» и нажмите «ОК».

Примечания:
.Body = "Dear " _
& vbNewLine & vbNewLine & _
"This is a test email " & _
"sending in Excel" После выполнения кода все адреса электронной почты из выбранного диапазона будут отображены в поле «Кому» окна сообщения. См. скриншот:

1,2.2 Отправка отдельных писем каждому получателю из ячеек с помощью сценария VBA
Приведённый выше код добавляет все адреса электронной почты из диапазона «Выберите диапазон» в поле «Кому» окна сообщения. Если вы хотите отправлять отдельные письма каждому адресату из списка адресов в ячейках, не раскрывая им адреса друг друга, воспользуйтесь следующим сценарием VBA.
1. На листе, содержащем все адреса электронной почты, на которые вы хотите отправить письма, нажмите «Alt» + «F11», чтобы открыть окно Microsoft Visual Basic for Applications.
2. В окне «Microsoft Visual Basic for Applications» выберите «Вставка» > «Модуль», затем вставьте приведённый ниже код в окно «Модуль (Код)».
Код 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. Затем выберите «Сервис» > «Ссылки». В диалоговом окне «Ссылки – VBAProject» найдите элемент «Библиотека объектов Microsoft Outlook 16,0», установите рядом с ним флажок и нажмите «ОК», чтобы сохранить изменения.

4. Нажмите клавишу «F5», чтобы запустить код. Откроется диалоговое окно «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. Нажмите сочетание клавиш «Alt» + «F11».
2. В открывшемся окне «Microsoft Visual Basic for Applications» выберите «Вставка» > «Модуль», затем вставьте приведённый ниже код 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. Затем выберите «Сервис» > «Ссылки». В открывшемся диалоговом окне «Ссылки – VBAProject» найдите «Библиотеку объектов Microsoft Outlook 16,0», установите напротив неё флажок и нажмите «ОК», чтобы сохранить изменения.

4. Нажмите клавишу «F5», чтобы запустить код. После этого откроется окно «Обзор» — выберите нужные файлы для вложения в письмо и нажмите «ОК».

Затем появится окно сообщения, и вы увидите, что выбранные файлы отображаются во вложениях в поле «Вложенные файлы».

2,1.2 Отправка Текущий лист во вложении
Если вы хотите отправить текущий лист из Excel во вложении, воспользуйтесь сценарием VBA из этого раздела.
1. Нажмите клавиши «Alt» + «F11».
2. В открывшемся окне «Microsoft Visual Basic for Applications» выберите «Вставка» > «Модуль», а затем вставьте приведённый ниже код 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. Нажмите сочетание клавиш «Alt» + «F11».
2. В открывшемся окне «Microsoft Visual Basic для приложений» выберите «Вставка» > «Модуль», затем вставьте приведённый ниже код VBA в окно модуля (Code).
Код 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. Нажмите сочетание клавиш «Alt» + «F11».
2. В открывшемся окне «Microsoft Visual Basic для приложений» выберите «Вставка» > «Модуль», а затем вставьте приведённый ниже код VBA в окно модуля (Code).
Код 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. Нажмите сочетание клавиш «Alt» + «F11».
2. В открывшемся окне «Microsoft Visual Basic for Applications» выберите «Вставка» > «Модуль», а затем вставьте приведённый ниже код 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. Обычно для открытия окна «Microsoft Visual Basic for Applications» достаточно нажать клавиши «Alt» + «F11».
2. В окне «Microsoft Visual Basic for Applications» выберите «Вставка» > «Модуль», затем вставьте приведённый выше код VBA 2 в открывшееся окно модуля.
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 указана итоговая сумма. Вы хотите автоматически отправлять письмо своему руководителю на основе этой суммы: например, создавать и отправлять сообщение, если итог превышает 10 000, и не предпринимать никаких действий, если он составляет 10 000 или меньше.

1. На листе с таблицей продаж щелкните правой кнопкой мыши по ярлыку листа и выберите в контекстном меню «Просмотреть код».

2. В открывшемся окне «Microsoft Visual Basic for Applications» вставьте приведённый ниже код 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 превысит 10 000, будет автоматически создано письмо, как показано на снимке экрана ниже.

3,2 Автоматическая отправка письма при изменении значения ячейки
Как показано на снимке экрана ниже, предположим, вы получили книгу, в которой ежемесячные продажи размещены на отдельных листах, а на одном из листов указана итоговая сумма продаж. Вам нужно проверить эту итоговую сумму и, если она была изменена, вернуть книгу отправителю с уведомлением об изменении ячейки.

1. На листе с таблицей продаж щёлкните правой кнопкой мыши по ярлыку листа и выберите в контекстном меню пункт «Просмотреть код».

2. В открывшемся окне «Microsoft Visual Basic for Applications» вставьте приведённый ниже код 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. Нажмите клавиши «Alt» + «F11», чтобы открыть окно Microsoft Visual Basic for Applications.
2. В этом окне дважды щелкните «ЭтаКнига» на панели «Проект», затем вставьте приведённый ниже код 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. Нажмите клавиши «Alt» + «F11», чтобы открыть окно Microsoft Visual Basic для приложений.
2. В окне «Microsoft Visual Basic для приложений» выберите «Вставка» > «Модуль», а затем вставьте приведённый ниже код VBA в открывшееся окно модуля.

Код VBA 1: Отправка Текущая книга как вложения из 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. В этом окне дважды щёлкните «ЭтаКнига» на панели «Проект», а затем вставьте приведённый ниже код 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. Нажмите клавиши «Alt» + «F11», чтобы открыть окно Microsoft Visual Basic для приложений.
2. В окне «Microsoft Visual Basic для приложений» выберите «Сервис» → «Ссылки», установите флажок рядом с «Библиотека объектов Microsoft Outlook 16,0» и нажмите «ОК» в диалоговом окне «Ссылки – VBAProject».

3. Выберите «Вставка» > «Модуль», затем вставьте приведённый ниже код 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» выберите диапазон ячеек, который будет отправлен в теле письма, и нажмите «ОК». См. скриншот:

Затем автоматически создастся письмо в Outlook, и вы увидите, что выбранный вами диапазон с листа вставлен прямо в тело письма. См. скриншот:

4,1.2 Отправка диапазона как вложения из Excel
Если вам нужно отправить диапазон ячеек с листа в виде вложения из Excel, воспользуйтесь приведённым ниже кодом VBA.
1. Нажмите сочетание клавиш «Alt» + «F11».
2. В открывшемся окне «Microsoft Visual Basic для приложений» выберите «Вставка» > «Модуль», а затем вставьте приведённый ниже код 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» выберите диапазон ячеек, который хотите отправить как вложение в письме, и нажмите «ОК». См. скриншот:

Затем автоматически создастся письмо в Outlook. Выбранный вами диапазон ячеек будет сохранён как книга Excel и прикреплён к сообщению. См. скриншот:

4,2 Отправка писем при нажатии кнопки в Excel
Если вам нужно нажать кнопку управления для запуска макроса, отправляющего письмо из Excel (например, чтобы отправить текущую книгу как вложение другим пользователям, просто щёлкнув кнопку на листе), выполните следующие шаги.
1. Выберите «Разработчик» > «Вставить» > «Кнопка управления (элемент ActiveX)», затем нарисуйте кнопку управления прямо на листе.
Совет: если кнопка управления уже есть, просто пропустите этот шаг.

2. Нажмите сочетание клавиш «Alt» + «F11», чтобы открыть окно «Microsoft Visual Basic для приложений». В открывшемся окне выберите «Вставка» > «Модуль» и вставьте приведённый код VBA (для отправки текущей книги как вложения из Excel) в окно «Модуль (Код)».
Нажмите здесь, чтобы получить код.

Примечание: в шаге 2 вы создали макрос с именем «SendWorkbook».
3. Нажмите клавиши «Alt» + «Q», чтобы закрыть окно Microsoft Visual Basic для приложений.
4. Теперь нужно назначить макрос кнопке управления. Щёлкните правой кнопкой мыши по кнопке и выберите в контекстном меню пункт «Просмотреть код».

5. Откроется окно «Microsoft Visual Basic для приложений», где в окне «Лист (Код)» вы увидите следующие две строки.
Private Sub CommandButton1_Click()
End Sub 
6. Введите имя существующего макроса в процедуру для кнопки управления.

7. Нажмите «Alt» + «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. Нажмите клавиши «Alt» + «F11». В окне «Microsoft Visual Basic для приложений» выберите «Сервис» → «Ссылки», установите флажок напротив «Библиотека объектов Microsoft Outlook 16,0» и нажмите «ОК» в диалоговом окне «Ссылки – VBAProject».

2. Выберите «Вставка» > «Модуль», затем вставьте приведённый ниже код 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 дням от текущей даты (при условии, что сегодня 04,08.2022), — письмо автоматически отправляется соответствующим руководителям проектов с уведомлением о скором истечении срока.

1. На листе с таблицей проектов щелкните правой кнопкой мыши ярлык листа и выберите в контекстном меню пункт «Просмотреть код».

2. В открывшемся окне «Microsoft Visual Basic для приложений» вставьте приведённый ниже код VBA в окно «Лист (Code)».
Код 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 всего за несколько щелчков. Выполните следующие действия.
5,1 Легко создайте Список писем, включающий необходимые поля письма
Перед использованием функции «Отправка писем» необходимо создать Список писем с нужными полями письма — в этом поможет функция «Создать список рассылки».
1. Выберите «KUTOOLS PLUS» > «Создать список рассылки».

2. В открывшемся окне «Создать список рассылки» выполните следующие настройки.

Затем будет создана образцовая таблица «Список писем», как показано на скриншоте ниже.

3. Теперь замените исходные данные в шаблоне на свои собственные значения полей.

Теперь у вас есть таблица «Список писем». Перейдите к использованию функции «Отправка писем», чтобы отправлять сообщения из Excel на основе созданных вами полей.
Kutools для Excel— раскройте весь потенциал Excel с помощью более чем 300 незаменимых инструментов, которые ускоряют и упрощают вашу работу, а также воспользуйтесь возможностями ИИ для более разумной обработки данных и повышения продуктивности.Получить сейчас
5,2 Простая отправка писем с полями, созданными в Список писем
После создания Списка писем ()нажмите, чтобы узнать как) с полями, которые могут понадобиться в ваших письмах, вы сможете отправлять письма из Excel, используя эти поля.
1. Выделите весь список писем и нажмите «KUTOOLS PLUS» > «Отправить письма».

2. В диалоговом окне «Отправить письма» выполните следующую настройку.

3. Затем появится диалоговое окно «Kutools для Excel» с указанием количества отправленных писем. Нажмите кнопку «ОК», чтобы закрыть его.
Совет: чтобы проверить отправленные письма, просто перейдите в папку «Отправленные» в Outlook.

5,3 Простая отправка писем с HTML-оформлением (включая гиперссылки, изображения и другие элементы)
Функция отправки писем позволяет создавать HTML-письма с гиперссылками, изображениями, различными размерами и цветами шрифта и другими элементами оформления.
После создания списка писем, содержащего необходимые вам поля электронной почты, при настройке диалогового окна «Отправить письма» вы можете обогатить содержимое тела письма с помощью опций на панели инструментов.
См. скриншот ниже:

5,4 Простая вставка стандартной подписи Outlook при отправке писем
В описанном выше методе мы показали код VBA, который позволяет отправлять письма со стандартной подписью Outlook. Благодаря функции отправки писем достаточно просто установить соответствующий флажок — и стандартная подпись Outlook будет автоматически добавляться к письмам, отправляемым из Excel.
После создания списка писем с необходимыми полями электронной почты, при настройке диалогового окна «Отправить письма» выберите «Параметры» > «Использовать настройки подписи Outlook».
Примечание: убедитесь, что рядом с параметром «Использовать настройки подписи Outlook» стоит отметка.

Когда получатели получат письмо, в конце сообщения они увидят стандартную подпись Outlook.
5,5 Простая отправка писем с указанного почтового аккаунта
Чтобы отправлять письма из Excel с определённого почтового аккаунта вместо учётной записи по умолчанию, воспользуйтесь функцией отправки писем — она легко справится с этой задачей.
После создания списка писем с необходимыми полями электронной почты, при настройке диалогового окна «Отправить письма» нажмите «Параметры» > «Отправлять от имени» и выберите нужный почтовый аккаунт.
Примечание: после выбора почтового аккаунта рядом с ним появится отметка.

Нажмите здесь, чтобы узнать больше о функции отправки писем.
Kutools для Excel— раскройте весь потенциал Excel с помощью более чем 300 незаменимых инструментов, которые ускоряют и упрощают вашу работу, а также воспользуйтесь возможностями ИИ для более разумной обработки данных и повышения продуктивности.Получить сейчас
В заключение, отправка писем из Excel чрезвычайно полезна в повседневной работе. В этой статье подробно рассмотрены ключевые аспекты отправки писем из Excel. Если у вас есть дополнительные темы или более простые решения — обязательно поделитесь ими в комментариях!
Лучшие инструменты повышения продуктивности в Office
Раскройте весь потенциал Excel с помощью Kutools для Excel и ощутите эффективность как никогда раньше.Kutools для Excel предлагает более 300 расширенных функций для повышения продуктивности и Экономия времени.Нажмите здесь, чтобы получить нужную Вам функцию…
Office Tab добавляет в Office вкладки и значительно упрощает Вашу работу
- Включите редактирование и чтение во вкладках в Word, Excel, PowerPoint, Publisher, Access, Visio и Project.
- Открывайте и создавайте несколько документов во вкладках одного окна — вместо того чтобы использовать отдельные окна.
- Повышает вашу продуктивность на 50 % и экономит сотни кликов мышью каждый день!
Все надстройки Kutools — один установщик
Kutools for Office — набор надстроек для Excel, Word, Outlook и PowerPoint, а также Office Tab Pro, идеально подходящий командам, работающим с разными приложениями Office.
- Единый комплект— надстройки для Excel, Word, Outlook и PowerPoint + Office Tab Pro
- Один установщик, одна лицензия— настройка занимает считанные минуты (готово для MSI)
- Лучше работать вместе— оптимизированная продуктивность во всех приложениях Office
- 30-дневная полнофункциональная пробная версия— без регистрации и кредитной карты
- Лучшее соотношение цены и качества— экономия по сравнению с покупкой отдельных надстроек