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 |