VBA Изпращане на имейли от Excel чрез Outlook

Този урок ще ви покаже как да изпращате имейли от Excel чрез Outlook чрез VBA.

Изпращане на активната работна книга

1234567891011121314151617181920 Функция SendActiveWorkbook (strTo As String, strSubject As String, Незадължително strCC As String, Незадължително strBody As String) Като BooleanНа грешка възобновяване следващоDim appOutlook As ObjectDim mItem 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 StringDim strSubject As StringDim strBody As String'попълнете променливиstrTo = "[email protected]"strSubject = "Моля, намерете прикачен финансов файл"strBody = "тук има текст за тялото на имейла"'извикайте функцията, за да изпратите имейлаАко SendActiveWorkbook (strTo, strSubject,, strBody) = true тогаваMsgbox „Успех при създаването на имейл“ИначеMsgbox "Създаването на имейл не бе успешно!"Край, акоEnd Sub

Използване на Ранно свързване за препратка към библиотеката на обекти на Outlook

Кодът по -горе използва Късно свързване за препратка към обекта на Outlook. Можете да добавите препратка към Excel и да декларирате приложението Outlook и Outlook Mail Item с помощта на Early Binding, ако предпочитате. Ранното свързване прави кода да работи по -бързо, но ви ограничава, тъй като потребителят би трябвало да има същата версия на Microsoft Office на своя компютър.

Щракнете върху менюто Инструменти и Препратки, за да се покаже диалоговият прозорец за справка.

Добавете препратка към библиотеката на обекти на Microsoft Outlook за версията на Office, която използвате.

След това можете да промените кода си, за да използвате тези препратки директно.

Голямо предимство на ранното свързване са падащите списъци, които ви показват обектите, които са на разположение за използване!

Изпращане на един лист от активната работна книга

За да изпратите един лист, първо трябва да създадете нова работна книга от съществуващата работна книга само с този лист в нея и след това да изпратите този лист.

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849 Функция SendActiveWorksheet (strTo As String, strSubject As String, Незадължително strCC As String, Незадължително strBody As String) Като BooleanПри грешка GoTo, а'декларират променливи, за да държат необходимите обектиDim wbDestination As WorkbookDim strDestName As StringDim wbSource As WorkbookЗатъмнете wsSource като работен листЗатъмнете OutApp като обектЗатъмнете OutMail като обектDim strTempName As StringDim strTempPath As String„първо създайте работна книга за местоназначениеЗадайте wbDestination = Workbooks.AddstrDestName = wbDestination.Name'задайте изходната работна книга и листЗадайте wbSource = ActiveWorkbookЗадайте wsSource = wbSource.ActiveSheet'копирайте активния лист в новата работна книгаwsSource.Copy After: = Работни книги (strDestName). Листове (1)'запишете с име на tempstrTempPath = Environ $ ("temp") & "\"strTempName = "Списък, получен от" & wbSource.Name & ".xlsx"С wbDestination.SaveAs strTempPath & strTempName'сега изпратете имейл на работната книга на местоназначениетоЗадайте OutApp = CreateObject ("Outlook.Application")Задаване на OutMail = OutApp.CreateItem (0)С OutMail.To = strTo.Subject = strSubject.Body = strBody.Допълнения. Добавете wbDestination.FullName'използвайте изпращане за незабавно изпращане или показване за показване на екрана.Display 'или .DisplayКрай с.Затвори FalseКрай с„изтрийте временна работна книга, която сте прикачили към пощата сиУбийте strTempPath & strTempName„почистете обектите, за да освободите паметтаЗадайте wbDestination = НищоЗадайте wbSource = НищоЗадайте wsSource = НищоЗадайте OutMail = НищоЗадайте OutApp = НищоИзлезте от функциятаа:MsgBox Err. ОписаниеКрайна функция

и за да стартираме тази функция, можем да създадем следната процедура

12345678910111213 Sub SendSheetMail ()Dim strTo As StringDim strSubject As StringDim strBody As StringstrTo = "[email protected]"strSubject = "Моля, намерете прикачен финансов файл"strBody = "тук има текст за тялото на имейла"Ако SendActiveWorksheet (strTo, strSubject,, strBody) = Вярно, тогаваMsgBox „Успех при създаването на имейл“ИначеMsgBox "Създаването на имейл не бе успешно!"Край АкоEnd Sub
wave wave wave wave wave