Denne opplæringen viser deg hvordan du sender e -post fra Excel via Outlook ved hjelp av VBA.
Sender den aktive arbeidsboken
1234567891011121314151617181920 | Funksjon SendActiveWorkbook (strTo As String, strSubject As String, Valgfri strCC As String, Valgfri strBody As String) Som BooleanVed feil Fortsett nesteDim appOutlook As ObjectDim mItem som objekt'opprett en ny forekomst av OutlookAngi appOutlook = CreateObject ("Outlook.Application")Sett mItem = appOutlook .CreateItem (0)Med mItem.To = strTo.CC = "".Subject = strSubject.Body = strBody.Attachments.Legg til ActiveWorkbook.FullName'bruk send for å sende umiddelbart eller vis den for å vises på skjermen.Display 'eller .SendSlutt med'rydde opp gjenstanderSett mItem = IngentingSett appOutlook = IngentingSluttfunksjon |
Funksjonen ovenfor kan kalles ved hjelp av prosedyren nedenfor
123456789101112131415 | Sub SendMail ()Dim strTo As StringDim strSubject As StringDim strBody As String'fylle variablerstrTo = "[email protected]"strSubject = "Finn finansfil vedlagt"strBody = "litt tekst går her for e -postens brødtekst"'ring funksjonen for å sende e -postenHvis SendActiveWorkbook (strTo, strSubject,, strBody) = true daMsgbox "Suksess med oppretting av e -post"EllersMsgbox "Opprettelse av e -post mislyktes!"Slutt omSlutt Sub |
Bruke Early Binding til å referere til Outlook Object Library
Koden ovenfor bruker sen binding for å referere til Outlook -objektet. Du kan legge til en referanse til Excel og deklarere Outlook -programmet og Outlook Mail -elementet ved å bruke Tidlig binding hvis du foretrekker det. Tidlig binding gjør at koden kjører raskere, men begrenser deg ettersom brukeren må ha den samme versjonen av Microsoft Office på PCen.
Klikk på Verktøy -menyen og Referanser for å vise referansedialogboksen.
Legg til en referanse til Microsoft Outlook Object Library for versjonen av Office du bruker.
Du kan deretter endre koden din for å bruke disse referansene direkte.
En stor fordel med tidlig binding er rullegardinlistene som viser deg objektene som er tilgjengelige å bruke!
Sende et enkelt ark fra den aktive arbeidsboken
For å sende et enkelt ark, må du først opprette en ny arbeidsbok fra den eksisterende arbeidsboken med nettopp det arket i, og deretter sende det arket.
12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849 | Funksjon SendActiveWorksheet (strTo As String, strSubject As String, Valgfri strCC As String, Valgfri strBody As String) Som BooleanPå feil GoTo eh'erklære variabler for å holde objektene som krevesDim wbDestination As WorkbookDim strDestName som strengDim wbSource As WorkbookDim wsSource As regnearkDim OutApp som objektDim OutMail som objektDim strTempName Som strengDim strTempPath As String'Lag først reisemålsbokSett wbDestination = Workbooks.AddstrDestName = wbDestination.Name'sett kilden arbeidsbok og arkAngi wbSource = ActiveWorkbookAngi wsSource = wbSource.ActiveSheet'kopier det aktive arket til den nye arbeidsbokenwsSource.Copy After: = Workbooks (strDestName) .Sheets (1)'lagre med et midlertidig navnstrTempPath = Environ $ ("temp") og "\"strTempName = "Liste hentet fra" & wbSource.Name & ".xlsx"Med wbDestination.SaveAs strTempPath & strTempName'send e -post destinasjonsarbeidsbokenSett OutApp = CreateObject ("Outlook.Application")Angi OutMail = OutApp.CreateItem (0)Med OutMail.To = strTo.Subject = strSubject.Body = strBody.Attachments.Add wbDestination.FullName'bruk send for å sende umiddelbart eller vis den for å vises på skjermen.Display 'eller .DisplaySlutt med.Lukk FalskSlutt med'slett midlertidig arbeidsbok som du har lagt ved e -posten dinDrep strTempPath & strTempName'rydd opp objektene for å frigjøre minnetSett wbDestination = IngentingSett wbSource = IngentingSett wsSource = IngentingSet OutMail = NothingSett OutApp = IngentingAvslutt funksjoneh:MsgBox Err.BeskrivelseSluttfunksjon |
og for å kjøre denne funksjonen, kan vi lage følgende prosedyre
12345678910111213 | Sub SendSheetMail ()Dim strTo As StringDim strSubject As StringDim strBody As StringstrTo = "[email protected]"strSubject = "Finn finansfil vedlagt"strBody = "litt tekst går her for e -postens brødtekst"Hvis SendActiveWorksheet (strTo, strSubject,, strBody) = True ThenMsgBox "Suksess for oppretting av e -post"EllersMsgBox "Opprettelse av e -post mislyktes!"Slutt omSlutt Sub |