VBA E-mails verzenden vanuit Excel via Outlook

Deze zelfstudie laat u zien hoe u e-mails vanuit Excel via Outlook kunt verzenden met VBA.

Het actieve werkboek verzenden

1234567891011121314151617181920 Functie SendActiveWorkbook (strTo As String, strSubject As String, Optioneel strCC As String, Optioneel strBody As String) As BooleanBij fout Hervatten volgendeDim appOutlook As ObjectDim mItem als object'maak een nieuw exemplaar van Outlook'Stel appOutlook = CreateObject ("Outlook.Application") inStel mItem = appOutlook .CreateItem (0)Met mItem.To = strTo.CC = "".Onderwerp = strOnderwerp.Body = strBody.Bijlagen.Add ActiveWorkbook.FullName'gebruik verzenden om onmiddellijk te verzenden of weergeven om op het scherm weer te geven'.Weergeven 'of .Verzenden'Eindigt met'objecten opruimen'Stel mItem = Niets inStel appOutlook = Niets inFunctie beëindigen

De bovenstaande functie kan worden aangeroepen met behulp van de onderstaande procedure:

123456789101112131415 Sub SendMail()Dim strTo As StringDim strOnderwerp als tekenreeksDim strBody As String'variabelen invullen'strTo = "[email protected]"strSubject = "Gelieve het financiële bestand bijgevoegd te vinden"strBody = "hier komt wat tekst voor de hoofdtekst van de e-mail"'roep de functie aan om de e-mail te verzenden'Als SendActiveWorkbook(strTo, strSubject, , strBody) = true danMsgbox "E-mail aanmaken gelukt"AndersMsgbox "Aanmaken van e-mail mislukt!"Stop alsEinde sub

Early Binding gebruiken om naar de Outlook-objectbibliotheek te verwijzen

De bovenstaande code gebruikt Late Binding om naar het Outlook-object te verwijzen. U kunt een verwijzing naar Excel toevoegen en indien gewenst de Outlook-toepassing en Outlook Mail Item declareren met Early Binding. Early Binding zorgt ervoor dat de code sneller wordt uitgevoerd, maar beperkt u omdat de gebruiker dezelfde versie van Microsoft Office op zijn pc zou moeten hebben.

Klik op het menu Tools en References om het referentiedialoogvenster weer te geven.

Voeg een verwijzing toe naar de Microsoft Outlook-objectbibliotheek voor de versie van Office die u gebruikt.

U kunt vervolgens uw code wijzigen om deze verwijzingen rechtstreeks te gebruiken.

Een groot voordeel van vroeg inbinden zijn de vervolgkeuzelijsten die u de objecten laten zien die beschikbaar zijn voor gebruik!

Een enkel blad verzenden vanuit de actieve werkmap

Als u een enkel blad wilt verzenden, moet u eerst een nieuwe werkmap maken van de bestaande werkmap met alleen dat blad erin en vervolgens dat blad verzenden.

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849 Functie SendActiveWerkblad (strTo As String, strSubject As String, Optioneel strCC As String, Optioneel strBody As String) As BooleanBij fout Ga naar eh'variabelen declareren om de vereiste objecten vast te houden'Dim wbDestination As WorkbookDim strDestName As StringDim wbSource As WorkbookDim wsSource als werkbladDim Out-app als objectDim OutMail als objectDim strTempNaam As StringDim strTempPath As String'eerst bestemmingswerkmap maken'Stel wbDestination = Werkmappen in.ToevoegenstrDestName = wbDestination.Name'stel de bronwerkmap en het blad in'Stel wbSource = ActiveWorkbook inStel wsSource = wbSource.ActiveSheet in'kopieer de activesheet naar de nieuwe werkmap'wsSource.Copy After:=Werkmappen (strDestName). Bladen(1)'opslaan met een tijdelijke naam'strTempPath = Omgeving$("temp") & "\"strTempName = "Lijst verkregen van " & wbSource.Name & ".xlsx"Met wbDestination.SaveAs strTempPath & strTempName'e-mail nu de bestemmingswerkmap'Stel OutApp = CreateObject ("Outlook.Application") inSet OutMail = OutApp.CreateItem (0)Met OutMail.To = strTo.Onderwerp = strOnderwerp.Body = strBody.Bijlagen.Voeg wbDestination.FullName toe'gebruik verzenden om onmiddellijk te verzenden of weergeven om op het scherm weer te geven'.Display 'of .Display'Eindigt met.Sluiten FalseEindigt met'verwijder tijdelijke werkmap die u aan uw e-mail hebt toegevoegd'Dood strTempPath & strTempName'ruim de objecten op om het geheugen vrij te maken'Stel wbDestination = Niets inStel wbSource = Niets inStel wsSource = Niets inSet OutMail = NietsSet OutApp = NietsFunctie verlateneh:MsgBox Err.BeschrijvingFunctie beëindigen

en om deze functie uit te voeren, kunnen we de volgende procedure maken:

12345678910111213 Sub SendSheetMail()Dim strTo As StringDim strOnderwerp als tekenreeksDim strBody As StringstrTo = "[email protected]"strSubject = "Gelieve het financiële bestand bijgevoegd te vinden"strBody = "hier komt wat tekst voor de hoofdtekst van de e-mail"Als SendActiveWorksheet (strTo, strSubject, , strBody) = True DanMsgBox "E-mail aanmaken gelukt"AndersMsgBox "Aanmaken van e-mail mislukt!"Stop alsEinde sub
wave wave wave wave wave