VBA Siųsti el. Laiškus iš „Excel“ per „Outlook“

Ši pamoka parodys, kaip siųsti el. Laiškus iš „Excel“ per „Outlook“ naudojant VBA.

Aktyvios darbaknygės siuntimas

1234567891011121314151617181920 Funkcija SendActiveWorkbook (strDėl klaidos Tęsti toliau„Dim“ programa „Outlook“ kaip objektasDim mItem kaip objektas“sukurkite naują„ Outlook “egzemplioriųNustatykite appOutlook = CreateObject ("Outlook.Application")Nustatyti mItem = appOutlook .CreateItem (0)Su mItem.To = strTo.CC = "".Subject = strSubject.Kūnas = strBody.Attachments.Add ActiveWorkbook.FullName„naudokite siuntimą, kad išsiųstumėte iš karto, arba rodyti, kad būtų rodomas ekrane.Display 'arba .SiųstiPabaiga su“išvalyti daiktusNustatyti mItem = NiekoNustatyti appOutlook = NiekoPabaigos funkcija

Aukščiau pateiktą funkciją galima iškviesti naudojant toliau nurodytą procedūrą

123456789101112131415 Sub SendMail ()Pritemdyti kaip eilutęApšviesti strSubject kaip eilutęDim strBody As String“užpildyti kintamuosiusstrTo = "[email protected]"strSubject = "Finansinį failą rasite pridėtą"strBody = "čia yra tam tikras tekstas, skirtas el. laiško turiniui""skambinkite į funkciją, kad išsiųstumėte el. laiškąJei „SendActiveWorkbook“ (strTo, strSubject,, strBody) = tiesa tada„Msgbox“ „El. Laiško kūrimo sėkmė“KitasMsgbox "Nepavyko sukurti el. Laiško!"Baigti, jeiPabaiga Sub

Ankstyvojo įrišimo naudojimas nurodant „Outlook“ objektų biblioteką

Aukščiau pateiktas kodas naudoja „Late Binding“, nurodydamas „Outlook“ objektą. Galite pridėti nuorodą į „Excel“ ir deklaruoti „Outlook“ programą ir „Outlook“ pašto elementą naudodami ankstyvą įrišimą, jei pageidaujate. Ankstyvas susiejimas pagreitina kodo veikimą, tačiau apriboja jus, nes vartotojui kompiuteryje reikės tos pačios „Microsoft Office“ versijos.

Spustelėkite meniu Įrankiai ir Nuorodos, kad būtų parodytas nuorodos dialogo langas.

Įtraukite naudojamos „Office“ versijos nuorodą į „Microsoft Outlook“ objektų biblioteką.

Tada galite pataisyti kodą, kad galėtumėte tiesiogiai naudoti šias nuorodas.

Didelis ankstyvo įrišimo privalumas yra išskleidžiamieji sąrašai, kuriuose rodomi objektai, kuriuos galima naudoti!

Vieno lapo siuntimas iš aktyvios darbaknygės

Norėdami išsiųsti vieną lapą, pirmiausia turite sukurti naują darbaknygę iš esamos darbaknygės, kurioje yra tik tas lapas, ir tada išsiųsti tą lapą.

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849 Funkcija SendActiveWorksheet (strDėl klaidos GoTo eh“deklaruoti kintamuosius, kad būtų laikomi reikalingi objektaiDim wbDestination As WorkbookDim strDestName As StringDim wbSource As WorkbookDim wsSource As Workheet„Dim OutApp“ kaip objektas„Dim OutMail“ kaip objektasDim strTempName As StringDim strTempPath kaip eilutė“pirmiausia sukurkite paskirties darbaknygęNustatykite „wbDestination = Workbooks.Add“strDestName = wbDestination.Namenustatykite šaltinio darbaknygę ir lapąNustatykite wbSource = ActiveWorkbookNustatykite wsSource = wbSource.ActiveSheet“nukopijuokite veiklos lapą į naują darbo knygąwsSource.Copy After: = Darbaknygės (strDestName). Lakštai (1)'išsaugoti laikinu pavadinimustrTempPath = Aplinka $ ("temp") & "\"strTempName = "Sąrašas gautas iš" & wbSource.Name & ".xlsx"Su „wbDestination“.SaveAs strTempPath & strTempNamedabar el. paštu išsiųskite paskirties darbo knygąSet OutApp = CreateObject ("Outlook.Application")Nustatyti „OutMail“ = „OutApp.CreateItem“ (0)Su „OutMail“.To = strTo.Subject = strSubject.Kūnas = strBody.Attachments.Add wbDestination.FullName„naudokite siuntimą, kad išsiųstumėte iš karto, arba rodyti, kad būtų rodomas ekrane.Display 'arba .DisplayPabaiga su.Uždaryti klaidingąPabaiga suištrinkite laikiną darbo knygą, kurią pridėjote prie savo paštoNužudyti strTempPath & strTempName„išvalykite objektus, kad atlaisvintumėte atmintįNustatyti wbDestination = NiekoNustatyti wbSource = NiekoNustatyti wsSource = Nieko„Set OutMail“ = nieko„Set OutApp“ = niekoIšėjimo funkcijaeh:„MsgBox“ klaida. AprašymasPabaigos funkcija

ir norėdami paleisti šią funkciją, galime sukurti šią procedūrą

12345678910111213 Sub SendSheetMail ()Pritemdyti kaip eilutęApšviesti strSubject kaip eilutęDim strBody As StringstrTo = "[email protected]"strSubject = "Finansinį failą rasite pridėtą"strBody = "čia yra tam tikras tekstas, skirtas el. laiško turiniui"Jei SendActiveWorksheet (strTo, strSubject,, strBody) = Tiesa tada„MsgBox“ „El. Laiško kūrimo sėkmė“KitasMsgBox "Nepavyko sukurti el. Laiško!"Pabaiga JeiPabaiga Sub
wave wave wave wave wave