VBA Отправка писем из Excel через Outlook

Из этого туториала Вы узнаете, как отправлять электронные письма из Excel через Outlook с помощью VBA.

Отправка активной книги

1234567891011121314151617181920 Функция SendActiveWorkbook (strTo As String, strSubject As String, Optional strCC As String, Optional strBody As String) As BooleanПри ошибке Возобновить ДалееDim appOutlook как объектDim mItem As Object'создать новый экземпляр OutlookУстановите appOutlook = CreateObject ("Outlook.Application")Установите mItem = appOutlook .CreateItem (0)С mItem.To = strTo.CC = "".Subject = strSubject.Body = strBody.Attachments.Add ActiveWorkbook.FullName'используйте send для немедленной отправки или display для отображения на экране.Display 'или .SendКонец с'убирать объектыУстановите mItem = NothingУстановите appOutlook = NothingКонечная функция

Вышеупомянутую функцию можно вызвать с помощью процедуры ниже

123456789101112131415 Sub SendMail ()Dim strTo As StringDim strSubject как строкаDim strBody как строка'заполнить переменныеstrTo = "[email protected]"strSubject = "Пожалуйста, найдите прикрепленный финансовый файл"strBody = "здесь идет текст в теле письма"'вызвать функцию для отправки электронного письмаЕсли SendActiveWorkbook (strTo, strSubject`` strBody) = true, тоMsgbox «Электронное письмо успешно создано»ЕщеMsgbox "Не удалось создать электронное письмо!"Конец, еслиКонец подписки

Использование раннего связывания для ссылки на библиотеку объектов Outlook

В приведенном выше коде для ссылки на объект Outlook используется поздняя привязка. Вы можете добавить ссылку на Excel и объявить приложение Outlook и почтовый элемент Outlook с помощью раннего связывания, если это необходимо. Раннее связывание ускоряет выполнение кода, но ограничивает вас, поскольку пользователю необходимо иметь ту же версию Microsoft Office на своем ПК.

Щелкните меню Инструменты и Ссылки, чтобы открыть диалоговое окно справки.

Добавьте ссылку на библиотеку объектов Microsoft Outlook для той версии Office, которую вы используете.

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

Большим преимуществом раннего связывания являются раскрывающиеся списки, в которых показаны доступные для использования объекты!

Отправка отдельного листа из активной книги

Чтобы отправить один лист, вам сначала нужно создать новую книгу из существующей книги, содержащей только этот лист, а затем отправить этот лист.

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849 Функция SendActiveWorksheet (strTo As String, strSubject As String, Optional strCC As String, Optional strBody As String) As BooleanПри ошибке GoTo а'объявляем переменные для хранения требуемых объектовDim wbDestination As WorkbookDim strDestName As StringDim wbSource As WorkbookDim wsSource As WorksheetDim OutApp как объектЗаменить исходящую почту как объектDim strTempName As StringDim strTempPath как строка'сначала создать целевую книгуУстановите wbDestination = Workbooks.Add.strDestName = wbDestination.Name'установить исходную книгу и листУстановите wbSource = ActiveWorkbookУстановите wsSource = wbSource.ActiveSheet.'копируем активную таблицу в новую книгуwsSource.Copy After: = Workbooks (strDestName) .Sheets (1)'сохранить с временным именемstrTempPath = Окружающая среда $ ("темп") & "\"strTempName = "Список получен из" & wbSource.Name & ".xlsx"С wbDestination.SaveAs strTempPath и strTempName'теперь отправьте по электронной почте целевую книгуУстановите OutApp = CreateObject ("Outlook.Application")Установите OutMail = OutApp.CreateItem (0)С OutMail.To = strTo.Subject = strSubject.Body = strBody.Attachments.Add wbDestination.FullName'используйте send для немедленной отправки или display для отображения на экране.Display 'или .DisplayКонец с.Закрыть FalseКонец с'удалить временную книгу, которую вы прикрепили к своей почтеУбить strTempPath и strTempName'очистить объекты, чтобы освободить памятьУстановите wbDestination = NothingУстановите wbSource = NothingУстановите wsSource = NothingУстановить OutMail = NothingSet OutApp = НичегоФункция выходаа:MsgBox Ошибка ОписаниеКонечная функция

и для запуска этой функции мы можем создать следующую процедуру

12345678910111213 Sub SendSheetMail ()Dim strTo As StringDim strSubject как строкаDim strBody как строкаstrTo = "[email protected]"strSubject = "Пожалуйста, найдите прикрепленный финансовый файл"strBody = "здесь идет текст в теле письма"Если SendActiveWorksheet (strTo, strSubject`` strBody) = True, тоMsgBox "Электронное письмо успешно создано"ЕщеMsgBox "Не удалось создать электронное письмо!"Конец, еслиКонец подписки

Вы поможете развитию сайта, поделившись страницей с друзьями

wave wave wave wave wave