Hoe e-mails verzenden vanuit een Excel-spreadsheet met VBA-scripts

We laten u zien hoe u geautomatiseerde e-mails vanuit Excel kunt instellen met behulp van Collaboration Data Objects, (CDO) en VBA-scripts. Onze codesjablonen maken dit een stuk eenvoudiger dan het klinkt!

We laten u zien hoe u geautomatiseerde e-mails vanuit Excel kunt instellen met behulp van Collaboration Data Objects, (CDO) en VBA-scripts.  Onze codesjablonen maken dit een stuk eenvoudiger dan het klinkt!
Advertentie

Bijgewerkt door Brad Jones op 4 juli 2017.

Het gebruik van e-mails als onderdeel van een programma is een leuke manier om belangrijke taken te automatiseren en het verbetert ook de waarde en functionaliteit van elk programma of script aanzienlijk.

In het verleden heb ik veel e-mail gebruikt in mijn batchtaken en andere geautomatiseerde scripts, wat in vorige artikelen is beschreven over het gebruik van hulpmiddelen zoals Sendmail Stuur geautomatiseerde e-mails met behulp van SendEmail & Windows Taakplanner Stuur geautomatiseerde e-mails met behulp van SendEmail en Windows-taak Planner Wat uw taak ook is, meestal moet iedereen op een bepaald moment een baas of supervisor mailen met dagelijkse, wekelijkse of maandelijkse statusrapporten. Meer lezen of Blat om e-mails rechtstreeks vanaf de opdrachtregel te versturen Eenvoudig opdrachtregel-e-mails verzenden met Blat Verzend eenvoudig opdrachtregel-e-mails met Blat Blat. Niet precies het woord dat u voor ogen hebt, zou de naam zijn van een tool die u kunt gebruiken om e-mails naar iedereen in de wereld te sturen, vanuit elke toepassing of softwaretool die u ... Lees meer, of vanuit een opdrachtregelscript.

Deze zijn geweldig voor die momenten waarop u een script hebt dat de gezondheid van een computer of de status van een specifiek proces bewaakt, maar wat als u het verzenden van e-mails vanuit Microsoft Office-producten zoals Word of Excel wilt automatiseren?

Er zijn veel redenen waarom u dit zou willen doen. Misschien hebt u medewerkers die wekelijks documenten of spreadsheets bijwerken en u een e-mailbericht wilt ontvangen over wanneer die updates plaatsvinden en zelfs een rapport van de gegevens uit die bladen. Er zijn een paar technieken die u kunt gebruiken om geautomatiseerde e-mails vanuit Excel te programmeren, maar Collaboration Data Objects (CDO) blijft mijn favoriet.

E-mailberichten verzenden vanuit Microsoft Excel

Je denkt waarschijnlijk dat het scripten van uitgaande e-mail in een Excel VBA-script pijnlijk ingewikkeld gaat worden. Nou, dat is helemaal niet het geval.

CDO is een berichtcomponent die in Windows wordt gebruikt voor een paar generaties van het besturingssysteem. Het heette vroeger CDONTS en toen met de komst van Windows 2000 en XP werd het vervangen door "CDO voor Windows 2000". Dit onderdeel is al opgenomen in uw VBA-installatie binnen Microsoft Word of Excel en het is klaar voor gebruik.

Door het onderdeel te gebruiken, is het zeer eenvoudig om e-mails vanuit Windows-producten met VBA te verzenden. In dit voorbeeld ga ik het CDO-onderdeel in Microsoft Excel gebruiken om een ​​e-mail te verzenden die de resultaten van een specifieke Excel-cel oplevert.

Maak een VBA-macro

De eerste stap is om naar het tabblad Excel- ontwikkelaar te gaan.

Klik op het tabblad Ontwikkelaar op Invoegen in het vak Besturingselementen en selecteer vervolgens een opdrachtknop.

Hoe e-mails verzenden vanuit een Excel-spreadsheet met behulp van VBA-scripts zonder titel

Teken het in het blad en maak er vervolgens een nieuwe macro voor.

Hoe e-mails verzenden vanuit een Excel-spreadsheet Met behulp van VBA-scripts macro maken

Wanneer Microsoft Excel de VBA-editor opent, moet u de verwijzing naar de CDO-bibliotheek toevoegen. Navigeer naar Extra > Verwijzingen in de editor.

Hoe e-mails verzenden vanuit een Excel-spreadsheet met behulp van VBA-scripts referenties

Blader door de lijst totdat u Microsoft CDO voor Windows 2000 Library vindt . Schakel het selectievakje in en klik op OK .

Hoe e-mails verzenden vanuit een Excel-spreadsheet met behulp van VBA-scripts microsoft cdo

Stel de CDO van en naar velden in

Nu bent u klaar om CDO te gebruiken voor het uitgeven van e-mails vanuit Microsoft Excel. Hiervoor moet u eerst de e-mailobjecten maken en alle velden instellen die nodig zijn om de e-mail te verzenden. Houd er rekening mee dat hoewel veel velden optioneel zijn, de velden Van en Naar verplicht zijn.

 Dim CDO_Mail als object Dim CDO_Config als object Dim SMTP_Config As Variant Dim strSubject als String Dim strFrom als String Dim strTo als String Dim strCc als String Dim strBcc als String Dim strBody als string strSubject = "Resultaten uit Excel Spreadsheet" strFrom = "ryxxxxxx @ xxxxxcast .net "strTo =" [email protected] "strCc =" "strBcc =" "strBody =" De totale resultaten voor dit kwartaal zijn: "& Str (Sheet1.Cells (2, 1)) 

Het leuke hieraan is dat je elke string kunt opbouwen waaraan je een volledig e-mailbericht wilt aanpassen en deze aan de strBody- variabele wilt toewijzen. Combineer componenten van het bericht met behulp van de tekenreeks & om gegevens van een van de Microsoft Excel-bladen direct in het e-mailbericht in te voegen, net zoals ik hierboven heb weergegeven.

CDO configureren om een ​​externe SMTP te gebruiken

In het volgende gedeelte van de code configureert u CDO om elke externe SMTP-server te gebruiken die u wilt gebruiken. In dit geval hoef ik SSL niet te gebruiken omdat mijn SMTP-server dit niet vereist. CDO is in staat om SSL te gebruiken, maar dat valt buiten het bestek van dit artikel. Als je SSL wilt gebruiken, raad ik je ten zeerste aan Paul Sadowski's geweldige beschrijving van het gebruik van CDO te gebruiken.

 Set CDO_Mail = CreateObject ("CDO.Message") On Error GoTo Error_Handling Set CDO_Config = CreateObject ("CDO.Configuration") CDO_Config.Load -1 Set SMTP_Config = CDO_Config.Fields With SMTP_Config .Item ("http://schemas.microsoft .com / cdo / configuration / sendusing ") = 2 .Item (" http://schemas.microsoft.com/cdo/configuration/smtpserver ") =" smtp.gmail.com ". Item (" http: // schemas .microsoft.com / cdo / configuration / smtpauthenticate ") = 1. Item (" http://schemas.microsoft.com/cdo/configuration/sendusername ") =" [email protected] ". Item (" http: / /schemas.microsoft.com/cdo/configuration/sendpassword ") =" wachtwoord ". Item (" http://schemas.microsoft.com/cdo/configuration/smtpserverport ") = 25. Item (" http: // schemas .microsoft.com / cdo / configuration / smtpusessl ") = True .Update End With With CDO_Mail Set .Configuration = CDO_Config End With 

Finaliseer de CDO-instellingen

Nu u de verbinding met de SMTP-server hebt geconfigureerd voor het verzenden van de e-mail, hoeft u alleen maar de juiste velden voor het CDO_Mail-object in te vullen en de opdracht Verzenden uit te voeren. Hier is hoe je dat doet:

 CDO_Mail.Subject = strSubject CDO_Mail.From = strFrom CDO_Mail.To = strTo CDO_Mail.TextBody = strBody CDO_Mail.CC = strCc CDO_Mail.BCC = strBcc CDO_Mail.Send Error_Handling: If Err.Description "" Then MsgBox Err.Description 

Dus daar heb je het. Er zullen geen pop-upvensters of beveiligingswaarschuwingen zijn, wat kan gebeuren wanneer u uw toevlucht neemt tot het Outlook-e-mailobject. CDO stelt simpelweg de e-mail samen en gebruikt uw SMTP-serververbindingsgegevens om het bericht af te vuren. Het is waarschijnlijk de gemakkelijkste manier om e-mail op te nemen in Microsoft Word- of Excel VBA-scripts.

Hier is hoe het bericht eruitzag dat ik in mijn inbox ontving:

Hoe e-mails verzenden vanuit een Excel-werkblad met behulp van VBA-scripts werkende e-mail

Probleemoplossen

Als u een foutmelding ontvangt die aangeeft dat het transport geen verbinding kon maken met de server, controleert u of u de juiste gebruikersnaam, het juiste wachtwoord, de SMTP-server en het poortnummer hebt ingevoerd in de onderstaande coderegels onder Met SMTP_Config .

Het proces automatiseren

Het is allemaal goed en wel om met een druk op de knop informatie vanuit Microsoft Excel als e-mail te kunnen verzenden. Het kan echter handig zijn om deze functionaliteit regelmatig te gebruiken, in welk geval het zinvol zou zijn om het proces te automatiseren 5 Bronnen voor Excel-macro's om uw spreadsheets te automatiseren 5 Bronnen voor Excel-macro's om uw spreadsheets te automatiseren Zoeken naar Excel-macro's? Hier zijn vijf sites die hebben wat je zoekt. Lees verder .

Om dit te doen, moeten we de macro die we hebben gemaakt, wijzigen. Ga naar de Visual Basic-editor en kopieer en doorloop de volledige code die we samen hebben opgesteld. Selecteer vervolgens ThisWorkbook uit de projecthiërarchie.

Hoe e-mails verzenden vanuit een Excel-spreadsheet met behulp van VBA-scripts thisworkbook

Kopieer en plak uw code in ThisWorkbook . Vervang vervolgens de eerste regel door Subwerkboek_Open () . Hiermee wordt de macro uitgevoerd wanneer u het bestand opent.

Hoe e-mails verzenden vanuit een Excel-werkblad Open VBA-scripts werkmap

Open vervolgens Taakplanner . We gaan deze tool gebruiken om Windows te vragen de spreadsheet automatisch met regelmatige tussenpozen te openen, waarna onze macro wordt gestart en de e-mail wordt verzonden.

Hoe e-mails verzenden vanuit een Excel-spreadsheet Met behulp van VBA-scripts basistaak maken

Selecteer Basistaak maken ... in het menu Acties en werk door de wizard totdat u bij het actiemenu bent . Selecteer Start een programma en klik op Volgende .

Hoe e-mails verzenden vanuit een Excel-spreadsheet Gebruik VBA-scripts om argumenten toe te voegen

Gebruik de knop Bladeren om de locatie van Microsoft Excel op uw computer te vinden of kopieer en plak het pad naar het veld Programma / script . Voer vervolgens het pad naar uw Microsoft Excel-document in in het veld Add arguments . Voltooi de wizard en onze planning moet op zijn plaats zijn. Het loont de moeite om een ​​test uit te voeren door de actie te plannen Hoe de Prullenbak automatisch te legen in een schema en de verspilde ruimte vrij te maken Hoe de Prullenbak automatisch te legen in een schema en de verspilling van ruimte vrij te maken Als u de Prullenbak niet regelmatig leegt Bin, het kan gigabytes aan ruimte op uw datadrive verspillen. Maar nu kan Windows 10 het automatisch volgens een schema leegmaken. Lees meer voor een paar minuten in de toekomst en wijzig de taak vervolgens zodra u kunt bevestigen dat deze werkt.

Mogelijk moet u de instellingen van uw Vertrouwenscentrum aanpassen om ervoor te zorgen dat de macro correct werkt. Open hiervoor de spreadsheet en ga naar Bestand > Opties > Vertrouwenscentrum . Klik vanaf hier op Vertrouwenscentrum-instellingen en stel in het volgende scherm de radio in op Nooit informatie over geblokkeerde inhoud weergeven .

Laat Microsoft Excel voor u werken

Microsoft Excel is een ongelooflijk krachtige tool, maar leren hoe je er het beste uit kunt halen, kan een beetje intimiderend zijn. Als je de software echt onder de knie wilt krijgen, moet je vertrouwd zijn met VBA De Excel VBA-programmeerhandleiding voor beginners De Excel VBA-programmeerhandleiding voor beginners VBA is een Microsoft Office-gereedschap. U kunt het gebruiken om taken met macro's te automatiseren, triggers in te stellen en nog veel meer. We zullen u kennis laten maken met Excel visuele basisprogrammering met een eenvoudig project. Lees meer, en dat is geen kleine taak.

De resultaten spreken echter voor zichzelf. Met een kleine VBA-ervaring achter je, kun je Microsoft Excel snel basistaken laten uitvoeren zonder je supervisie, waardoor je meer tijd hebt om je te concentreren op dringender zaken. Het kost tijd om VBA onder de knie te krijgen, maar je zult al snel de vruchten zien van je inspanningen als je het volhoudt.

Kun je coole functies voor CDO bedenken in je eigen Microsoft Excel-, Access- of Word-projecten? Deel uw gedachten en ideeën in de opmerkingen hieronder.

In this article