Tento tutoriál vám ukáže, jak odesílat e -maily z aplikace Excel prostřednictvím aplikace Outlook pomocí VBA.
Odeslání aktivního sešitu
1234567891011121314151617181920 | Funkce SendActiveWorkbook (strTo As String, strSubject As String, Optional strCC As String, Optional strBody As String) As BooleanPři chybě Pokračovat DalšíDim appOutlook As ObjectDim mItem As Object'vytvořte novou instanci aplikace OutlookNastavit appOutlook = CreateObject ("Outlook.Application")Nastavit mItem = appOutlook .CreateItem (0)S položkou.To = strTo.CC = "".Subject = strSubject.Body = strBody.Attachments.Add ActiveWorkbook.FullName'použijte Odeslat k okamžitému odeslání nebo zobrazení k zobrazení na obrazovce.Display 'nebo .SendKonec s„vyčistit předmětyNastavit mItem = NicNastavit appOutlook = NicKoncová funkce |
Výše uvedenou funkci lze vyvolat pomocí níže uvedeného postupu
123456789101112131415 | Sub SendMail ()Dim strTo As StringDim strSubject jako řetězecDim strBody As String'naplňte proměnnéstrTo = "[email protected]"strSubject = "V příloze naleznete finanční soubor"strBody = "sem patří text pro tělo e -mailu"'zavoláním funkce odešlete e -mailPokud SendActiveWorkbook (strTo, strSubject,, strBody) = true thenMsgbox „Úspěšné vytvoření e -mailu“JinýMsgbox "Vytvoření e -mailu se nezdařilo!"Konec pokudEnd Sub |
Použití Early Binding k odkazování na objektovou knihovnu aplikace Outlook
Výše uvedený kód používá pozdní vazbu k odkazu na objekt aplikace Outlook. Pokud je to upřednostňováno, můžete přidat odkaz na Excel a deklarovat aplikaci Outlook a poštovní položku aplikace Outlook pomocí Early Binding. Early Binding zrychluje běh kódu, ale omezuje vás, protože uživatel by musel mít na svém počítači stejnou verzi Microsoft Office.
Kliknutím na nabídku Nástroje a odkazy zobrazíte dialogové okno s referencemi.
Přidejte odkaz na objektovou knihovnu Microsoft Outlook pro verzi Office, kterou používáte.
Potom můžete upravit svůj kód a použít tyto odkazy přímo.
Velkou výhodou rané vazby jsou rozevírací seznamy, které vám ukazují objekty, které jsou k dispozici k použití!
Odeslání jednoho listu z aktivního sešitu
Chcete -li odeslat jeden list, musíte nejprve vytvořit nový sešit ze stávajícího sešitu, který obsahuje pouze tento list, a poté tento list odeslat.
12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849 | Funkce SendActiveWorksheet (strTo jako řetězec, strSubject jako řetězec, volitelný strCC jako řetězec, volitelný strBody jako řetězec) jako logická hodnotaPři chybě GoTo eh'Deklarujte proměnné, aby obsahovaly požadované objekty.'Dim wb Cíl jako sešitDim strDestName jako řetězecDim wbSource jako sešitDim wsSource As WorksheetDim OutApp jako objektDim OutMail jako objektDim strTempName jako řetězecDim strTempPath jako řetězec'Nejprve vytvořte cílový sešitNastavit wbDestination = Workbooks.AddstrDestName = wbDestination.Name'nastavit zdrojový sešit a listNastavit wbSource = ActiveWorkbookNastavit wsSource = wbSource.ActiveSheet'zkopírujte aktivní list do nového sešitu.'wsSource.Copy After: = Sešity (strDestName) .Sheets (1)„Uložit s dočasným názvemstrTempPath = Prostředí $ ("temp") & "\"strTempName = "Seznam získán z" & wbSource.Name & ".xlsx"S wbDestination.SaveAs strTempPath & strTempName'nyní pošlete e -mail na cílový sešitSet OutApp = CreateObject ("Outlook.Application")Set OutMail = OutApp.CreateItem (0)S OutMail.To = strTo.Subject = strSubject.Body = strBody.Attachments.Add wbDestination.FullName'použijte Odeslat k okamžitému odeslání nebo zobrazení k zobrazení na obrazovce.Display 'nebo .DisplayKonec s.Zavřete FalseKonec s'odstranit dočasný sešit, který jste připojili ke své poštěZabijte strTempPath a strTempName'vyčistěte předměty a uvolněte paměťNastavit wbDestination = NicNastavit wbSource = NicNastavit wsSource = NicSet OutMail = NicSet OutApp = NicFunkce ukončeníaha:MsgBox Err.PopisKoncová funkce |
a pro spuštění této funkce můžeme vytvořit následující postup
12345678910111213 | Sub SendSheetMail ()Dim strTo As StringDim strSubject jako řetězecDim strBody As StringstrTo = "[email protected]"strSubject = "V příloze naleznete finanční soubor"strBody = "sem patří text pro tělo e -mailu"If SendActiveWorksheet (strTo, strSubject,, strBody) = True ThenMsgBox „Vytvoření e -mailu bylo úspěšné“JinýMsgBox "Vytvoření e -mailu se nezdařilo!"Konec IfEnd Sub |