VBA Posielajte e -maily z Excelu prostredníctvom Outlooku

Tento tutoriál vám ukáže, ako odosielať e -maily z Excelu prostredníctvom Outlooku pomocou VBA.

Odoslanie aktívneho zošita

1234567891011121314151617181920 Funkcia SendActiveWorkbook (strTo ako reťazec, strSubject ako reťazec, voliteľné strCC ako reťazec, voliteľné strBody ako reťazec) ako booleovskýPri chybe Pokračovať ďalejDim appOutlook As ObjectDim mItem As Object„Vytvorte novú inštanciu programu OutlookNastaviť appOutlook = CreateObject ("Outlook.Application")Nastaviť položku mItem = appOutlook .CreateItem (0)S položkou mItem.To = strTo.CC = "".Subject = strSubject.Telo = strBody.Prílohy.Pridajte ActiveWorkbook.FullName'Použite odoslať na okamžité odoslanie alebo zobrazenie na zobrazenie na obrazovke.Display 'alebo .OdoslaťUkončiť s'vyčistiť predmetyNastaviť položku = ničNastaviť appOutlook = ničKoncová funkcia

Vyššie uvedenú funkciu je možné vyvolať pomocou nižšie uvedeného postupu

123456789101112131415 Sub odoslaná pošta ()Dim strTo As StringDim strSubject ako reťazecDim strBody As String"vyplňte premenné."strTo = "[email protected]"strSubject = "V prílohe nájdete finančný súbor"strBody = "Tu je nejaký text pre telo e -mailu"'zavolajte funkciu a pošlite e -mailAk SendActiveWorkbook (strTo, strSubject,, strBody) = true potomMsgbox „Úspešné vytvorenie e -mailu“InakMsgbox "Vytvorenie e -mailu zlyhalo!"Koniec AkKoniec pod

Použitie Early Binding na odkazovanie na objektovú knižnicu programu Outlook

Vyššie uvedený kód používa neskorú väzbu na odkaz na objekt Outlook. Ak je to preferované, môžete pridať odkaz na Excel a deklarovať aplikáciu Outlook a poštovú položku programu Outlook pomocou funkcie Predčasná väzba. Skorá väzba urýchľuje spustenie kódu, ale obmedzuje vás, pretože používateľ by musel mať na svojom počítači rovnakú verziu balíka Microsoft Office.

Kliknutím na ponuku Nástroje a Referencie zobrazíte dialógové okno s referenciami.

Pridajte odkaz na objektovú knižnicu programu Microsoft Outlook pre verziu balíka Office, ktorú používate.

Potom môžete svoj kód zmeniť tak, aby tieto odkazy používal priamo.

Veľkou výhodou skorej väzby sú rozbaľovacie zoznamy, ktoré vám ukazujú objekty, ktoré sú k dispozícii na použitie!

Odoslanie jedného listu z aktívneho zošita

Ak chcete odoslať jeden hárok, musíte najskôr vytvoriť nový zošit z existujúceho zošita, v ktorom je len tento hárok, a potom tento hárok odoslať.

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849 Funkcia SendActiveWorksheet (strTo ako reťazec, strSubject ako reťazec, voliteľný strCC ako reťazec, voliteľný strBody ako reťazec) ako boolovskýPri chybe Prejsť eh'Deklarujte premenné, aby držali požadované objektyDim wbCieľ ako pracovný zošitDim strDestName ako reťazecDim wbZdroj ako zošitDim wsSource As worksheetDim OutApp ako objektDim OutMail ako objektDim strTempName As StringDim strTempPath ako reťazec'Najprv vytvorte cieľový zošitNastaviť wbDestination = zošity.PridaťstrDestName = wbDestination.Name'nastavte zdrojový zošit a listNastaviť wbSource = ActiveWorkbookNastaviť wsSource = wbSource.ActiveSheet“skopírujte aktívny list do nového zošitawsSource.Copy Po: = Zošity (strDestName). Listy (1)„Uložte s dočasným názvomstrTempPath = Prostredie $ ("temp") & "\"strTempName = "Zoznam získaný z" & wbSource.Name & ".xlsx"S cieľom wb.SaveAs strTempPath & strTempName'teraz pošlite e -mail na cieľový zošitSet OutApp = CreateObject ("Outlook.Application")Set OutMail = OutApp.CreateItem (0)S OutMail.To = strTo.Subject = strSubject.Telo = strBody.Prílohy.Pridajte wbDestination.FullName'Použite odoslať na okamžité odoslanie alebo zobrazenie na zobrazenie na obrazovke.Display 'alebo .DisplayUkončiť s.Zavrieť FalseUkončiť s'odstráňte dočasný zošit, ktorý ste pripojili k svojej pošteZabite strTempPath & strTempName'vyčistite predmety, aby sa uvoľnila pamäťNastaviť wbDestination = ničNastaviť wbSource = NičNastaviť wsSource = NičSet OutMail = NičSet OutApp = NičUkončiť funkciuaha:MsgBox Err.PopisKoncová funkcia

a na spustenie tejto funkcie môžeme vytvoriť nasledujúci postup

12345678910111213 Sub SendSheetMail ()Dim strTo As StringDim strSubject ako reťazecDim strBody As StringstrTo = "[email protected]"strSubject = "V prílohe nájdete finančný súbor"strBody = "Tu je nejaký text pre telo e -mailu"Ak SendActiveWorksheet (strTo, strSubject,, strBody) = True ThenMsgBox „Úspešné vytvorenie e -mailu“InakMsgBox „Vytvorenie e -mailu zlyhalo!“Koniec AkKoniec pod
wave wave wave wave wave