VBA Lähetä sähköpostit Excelistä Outlookin kautta

Tämä opetusohjelma näyttää, kuinka voit lähettää sähköpostiviestejä Excelistä Outlookin kautta VBA: n avulla.

Aktiivisen työkirjan lähettäminen

1234567891011121314151617181920 Toiminto SendActiveWorkbook (strTo As String, strSubject As String, Optional strCC as String, Optional strBody As String) BooleaninaVirhe Jatka seuraavaksiHimmennä sovellusOutlook kohteenaDim mItem objektinaLuo uusi Outlook -esiintymäAseta appOutlook = CreateObject ("Outlook.Application")Aseta mItem = appOutlook .CreateItem (0)MItemin kanssa.To = strTo.CC = "".Subject = strSubject.Body = strBody.Attachments.Add ActiveWorkbook.FullNameKäytä lähetä lähettääksesi välittömästi tai näytä näyttö näytöllä.Display 'tai .LähetäLopeta'puhdista esineetAseta mItem = ei mitäänAseta appOutlook = ei mitäänLopeta toiminto

Yllä oleva toiminto voidaan kutsua alla olevan menettelyn mukaisesti

123456789101112131415 Sub SendMail ()Himmennä merkkijonoksiDim strSubject merkkijononaDim strBody As merkkijono'täyttää muuttujatstrTo = "jon.seppä@gmail.com"strSubject = "Löydät rahoitustiedoston liitteenä"strBody = "Jotkut tekstit tulevat tähän sähköpostin runkoon"'Lähetä toiminto sähköpostitse soittamalla toimintoonJos SendActiveWorkbook (strTo, strSubject,, strBody) = totta silloinViestiviesti "Sähköpostin luominen onnistui"MuuViesti "Sähköpostin luominen epäonnistui!"Loppu JosEnd Sub

Early Binding -sovelluksen käyttäminen viittaamaan Outlookin objektikirjastoon

Yllä oleva koodi käyttää Late Binding -ohjelmaa viittaamaan Outlook -objektiin. Voit lisätä viittauksen Exceliin ja ilmoittaa Outlook -sovelluksen ja Outlook -postilähetyksen käyttämällä Early Binding -toimintoa, jos haluat. Varhainen sitominen nopeuttaa koodin toimintaa, mutta rajoittaa sinua, koska käyttäjän on oltava sama Microsoft Office -versio tietokoneellaan.

Avaa viitevalintaikkuna napsauttamalla Työkalut -valikkoa ja viittauksia.

Lisää viittaus käyttämääsi Office -version Microsoft Outlook -objektikirjastoon.

Voit sitten muuttaa koodiasi käyttämään näitä viittauksia suoraan.

Suuri etu varhaisessa sidonnassa on avattavat luettelot, jotka näyttävät käytettävissä olevat objektit!

Yhden arkin lähettäminen aktiivisesta työkirjasta

Jos haluat lähettää yhden arkin, sinun on ensin luotava uusi työkirja olemassa olevasta työkirjasta, jossa on vain tämä arkki, ja lähetä sitten kyseinen arkki.

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849 Toiminto SendActiveWorksheet (strTo As String, strSubject As String, Optional strCC as String, Optional strBody As String) BooleaninaVirhe GoTo eh'ilmoittaa muuttujat, jotka säilyttävät vaaditut objektitDim wbDestination as WorkbookDim strDestName kuin merkkijonoDim wbSource TyökirjaDim wsSource kuin laskentataulukkoDim OutApp objektinaDim OutMail objektinaDim strTempName Kuten merkkijonoDim strTempPath merkkijonona'Luo ensin kohdekirjaAseta wbDestination = Työkirjat. LisäästrDestName = wbDestination.Name'Aseta lähdekirja ja taulukkoAseta wbSource = ActiveWorkbookAseta wsSource = wbSource.ActiveSheet'kopioi aktiivilomake uuteen työkirjaanwsSource.Copy After: = Työkirjat (strDestName) .Sheets (1)Tallenna väliaikaisella nimellästrTempPath = Ympäristö $ ("temp") & "\"strTempName = "Luettelo hankittu osoitteesta" & wbSource.Name & ".xlsx"WbDestinationin kanssa.SaveAs strTempPath & strTempName'lähetä nyt sähköpostitse kohdetyökirjaAseta OutApp = CreateObject ("Outlook.Application")Aseta OutMail = OutApp.CreateItem (0)OutMailin kanssa.To = strTo.Subject = strSubject.Body = strBody.Attachments.Add wbDestination.FullNameKäytä lähetä lähettääksesi välittömästi tai näytä näyttö näytöllä.Display 'tai .DisplayLopetaSulje VääräLopeta'Poista sähköpostisi liittämäsi väliaikainen työkirjaTapa strTempPath & strTempName'puhdista esineet muistin vapauttamiseksiAseta wbDestination = ei mitäänAseta wbSource = ei mitäänAseta wsSource = ei mitäänSet OutMail = Ei mitäänSet OutApp = Ei mitäänLopeta toimintoeh:MsgBox -virhe KuvausLopeta toiminto

ja tämän toiminnon suorittamiseksi voimme luoda seuraavan menettelyn

12345678910111213 Sub SendSheetMail ()Himmennä merkkijonoksiDim strSubject merkkijononaDim strBody As merkkijonostrTo = "jon.seppä@gmail.com"strSubject = "Löydät rahoitustiedoston liitteenä"strBody = "Jotkut tekstit tulevat tähän sähköpostin runkoon"Jos SendActiveWorksheet (strTo, strSubject,, strBody) = TosiMsgBox "Sähköpostin luominen onnistui"MuuMsgBox "Sähköpostin luominen epäonnistui!"Loppu JosEnd Sub
wave wave wave wave wave