VBA Надсилання електронних листів з Excel через Outlook

Цей підручник покаже вам, як надсилати електронні листи з Excel через Outlook за допомогою VBA.

Надсилання активної робочої книги

1234567891011121314151617181920 Функція SendActiveWorkbook (strTo As String, strSubject As String, Optional strCC As String, Optional strBody As String) Як BooleanУвімкнути Помилка Відновити ДаліDim appOutlook As ObjectЗатемнити елемент як об’єкт'створити новий екземпляр OutlookВстановити appOutlook = CreateObject ("Outlook.Application")Встановити mItem = appOutlook .CreateItem (0)З елементом mItem.To = strTo.CC = "".Subject = strSubject.Body = strBody.Додавання. Додайте ActiveWorkbook.FullName'скористайтеся відправленням для негайного надсилання або відображенням для відображення на екрані.Display 'або .SendЗакінчити з'прибирати предметиВстановити mItem = НічогоВстановити appOutlook = НічогоФункція завершення

Наведену вище функцію можна викликати за допомогою наведеної нижче процедури

123456789101112131415 Sub SendMail ()Dim strTo As StringЗатемнити strSubject As StringDim strBody As String'заповнювати змінніstrTo = "[email protected]"strSubject = "Будь ласка, знайдіть прикріплений фінансовий файл"strBody = "сюди надходить деякий текст"'виклик функції, щоб надіслати електронний листЯкщо SendActiveWorkbook (strTo, strSubject,, strBody) = true, тоПовідомлення "Успіх створення електронної пошти"ІнакшеMsgbox "Не вдалося створити електронну пошту!"Закінчити, якщоEnd Sub

Використання Early Binding для посилання на бібліотеку об’єктів 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) Як булеве значенняУвімкнено Помилка GoTo eh'оголошуйте змінні для зберігання необхідних об'єктівDim wbDestination As WorkbookDim strDestName As StringDim wbSource As WorkbookЗатемнити wsSource як аркушЗатемнити OutApp як об'єктПриглушити пошту як об’єктDim strTempName As StringЗатемнити strTempPath як рядок'Спочатку створіть книгу призначенняВстановити wbDestination = Робочі книги. ДодатиstrDestName = wbDestination.Name'встановити вихідну книгу та аркушВстановіть wbSource = ActiveWorkbookВстановіть wsSource = wbSource.ActiveSheet'скопіюйте аркуш активності до нової книгиwsSource.Copy After: = Робочі книги (strDestName). Таблиці (1)'зберегти з тимчасовою назвоюstrTempPath = Environ $ ("temp") & "\"strTempName = "Список, отриманий з" & wbSource.Name & ".xlsx"З wbDestination.Зберегти Як strTempPath & strTempName'тепер надішліть електронну пошту робочої книги призначенняВстановіть OutApp = CreateObject ("Outlook.Application")Встановити OutMail = OutApp.CreateItem (0)З OutMail.To = strTo.Subject = strSubject.Body = strBody.Додавання. Додайте wbDestination.FullName'скористайтеся відправленням для негайного надсилання або відображенням для відображення на екрані.Display 'або .DisplayЗакінчити з.Закрити неправдуЗакінчити з'видалити тимчасову книгу, яку ви додали до своєї поштиУбийте strTempPath & strTempName'очистіть об'єкти, щоб звільнити пам'ятьВстановити wbDestination = НічогоВстановити wbSource = НічогоВстановити wsSource = НічогоВстановити OutMail = НічогоВстановити OutApp = НічогоФункція виходуех:Опис помилки MsgBoxФункція завершення

і для запуску цієї функції ми можемо створити таку процедуру

12345678910111213 Sub SendSheetMail ()Dim strTo As StringЗатемнити strSubject As StringDim strBody As StringstrTo = "[email protected]"strSubject = "Будь ласка, знайдіть прикріплений фінансовий файл"strBody = "сюди надходить деякий текст"Якщо SendActiveWorksheet (strTo, strSubject,, strBody) = ІстинаMsgBox "Успіх створення електронної пошти"ІнакшеMsgBox "Не вдалося створити електронну пошту!"Закінчити ЯкщоEnd Sub
wave wave wave wave wave