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 |