Sådan sender du e-mails fra et Excel-regneark ved hjælp af VBA-scripts

Vi viser dig hvordan du konfigurerer automatiserede e-mails fra Excel ved hjælp af Collaboration Data Objects, (CDO) og VBA scripts. Vores kode skabeloner gør dette meget lettere end det lyder!

Vi viser dig hvordan du konfigurerer automatiserede e-mails fra Excel ved hjælp af Collaboration Data Objects, (CDO) og VBA scripts.  Vores kode skabeloner gør dette meget lettere end det lyder!
Reklame

Opdateret af Brad Jones den 4. juli 2017.

Brug af e-mails som led i ethvert program er en god måde at automatisere vigtige opgaver på, og det forbedrer også værdien og funktionaliteten af ​​ethvert program eller script væsentligt.

Tidligere har jeg brugt email meget i mine batchjob og andre automatiserede scripts, som er beskrevet i tidligere artikler om brugen af ​​værktøjer som Sendmail Send Automated Emails ved hjælp af SendEmail og Windows Task Scheduler Send automatiserede e-mails ved hjælp af SendEmail og Windows Task Planlægger Ligegyldigt hvad dit job er, skal som regel alle på et tidspunkt sende en chef eller en tilsynsførende en daglig, ugentlig eller månedlig statusrapport. Læs mere eller Blat for at udstede e-mails direkte fra kommandolinjen Send let kommandolinjepost med Blat Send enkelt kommandolinjemails med Blat Blat. Ikke netop det ord, du forestiller dig, ville være navnet på et værktøj, som du kan bruge til at sende e-mails til nogen i verden, fra enhver applikation eller softwareværktøj, som du ... Læs mere, eller fra et kommandolinjeskript.

Disse er gode til de tidspunkter, hvor du har et script, der overvåger computerens helbred eller status for en bestemt proces, men hvad hvis du vil automatisere sende e-mails fra Microsoft Office-produkter som Word eller Excel?

Der er mange grunde til, hvorfor du måske vil gøre det. Måske har du personale, som opdaterer dokumenter eller regneark hver uge, og du vil gerne modtage en e-mail-meddelelse om, hvornår disse opdateringer finder sted, og endda en rapport af dataene fra de pågældende ark. Der er et par teknikker, du kan bruge til at programmere automatiserede emails fra Excel, men Collaboration Data Objects (CDO) forbliver min favorit.

Sende emails fra inden for Microsoft Excel

Du tror sandsynligvis, at scripting udgående email til et Excel VBA script vil blive smerteligt kompliceret. Nå, det er slet ikke tilfældet.

CDO er en meddelelseskomponent, der bruges i Windows i nogle få generationer af operativsystemet. Det blev tidligere kaldt CDONTS, og derefter med fremkomsten af ​​Windows 2000 og XP blev det erstattet med "CDO for Windows 2000". Denne komponent er allerede inkluderet i din VBA-installation i Microsoft Word eller Excel, og den er klar til brug.

Brug af komponenten gør det meget nemt at sende e-mails fra Windows-produkter med VBA. I dette eksempel vil jeg bruge CDO-komponenten i Microsoft Excel til at sende en e-mail, der vil levere resultaterne fra en bestemt Excel-celle.

Opret en VBA-makro

Det første skridt er at gå til fanen Excel Developer .

På fanen Udvikler skal du klikke på Indsæt i kontrolpanelet og derefter vælge en kommandoknap.

Sådan sender du e-mails fra et Excel-regneark ved hjælp af VBA-scripts Untitled

Tegn det i arket og lav derefter en ny makro til den.

Sådan sender du e-mails fra et Excel-regneark Ved hjælp af VBA-script oprettes makro

Når Microsoft Excel åbner VBA-editoren, skal du tilføje referencen til CDO-biblioteket. Naviger til Værktøjer > Referencer i editoren.

Sådan sender du e-mails fra et Excel-regneark ved hjælp af VBA Scripts-referencer

Rul ned på listen, indtil du finder Microsoft CDO til Windows 2000-biblioteket . Marker afkrydsningsfeltet og klik på OK .

Sådan sender du e-mails fra et Excel-regneark ved hjælp af VBA Scripts microsoft cdo

Opsætning af cd'en fra og til felter

Nu er du klar til at bruge CDO til at udstede e-mails indefra Microsoft Excel. For at gøre dette skal du først oprette postobjekter og oprette alle de felter, der er nødvendige for at sende e-mailen. Husk, at mens mange af felterne er valgfrie, kræves feltet Fra og Til .

 Dim CDO_Mail Som Objekt Dim CDO_Config Som Objekt Dim SMTP_Config Som Variant Dim StrSubject Som String Dim StrFrom som String Dim StrTo som String Dim StrCc som String Dim StrBcc som String Dim StrBody As String strSubject = "Resultater fra Excel Regneark" strFrom = "ryxxxxxx @ xxxxxcast .net "strTo =" [email protected] "strCc =" "strBcc =" "strBody =" De samlede resultater for dette kvartal er: "& Str (Sheet1.Cells (2, 1)) 

Den kolde ting ved dette er, at du kan opbygge en hvilken som helst streng, du vil tilpasse en fuld e-mail-meddelelse og tildele den til strBody- variablen. Del sammen komponenter i meddelelsen ved hjælp af & streng for at indsætte data fra et hvilket som helst Microsoft Excel-ark lige ind i e-mail-meddelelsen, ligesom jeg har vist ovenfor.

Konfigurer CDO til Brug en ekstern SMTP

Den næste sektion af kode er, hvor du vil konfigurere CDO til at bruge en ekstern SMTP-server, som du vil bruge. I dette tilfælde behøver jeg ikke bruge SSL, fordi min SMTP-server ikke kræver det. CDO er i stand til SSL, men det er ikke omfattet af denne artikel. Hvis du har brug for at bruge SSL, anbefaler jeg stærkt Paul Sadowski's awesome writeup på at bruge CDO.

 Indstil CDO_Mail = CreateObject ("CDO.Message") På Fejl GoTo Error_Handling Indstil CDO_Config = CreateObject ("CDO.Configuration") CDO_Config.Load -1 Indstil SMTP_Config = CDO_Config.Fields med SMTP_Config .Item ("http://schemas.microsoft .com / cdo / configuration / sendusing ") = 2 .Item (" http://schemas.microsoft.com/cdo/configuration/smtpserver ") =" smtp.gmail.com ".Item (" http: // skemaer .microsoft.com / cdo / configuration / smtpauthenticate ") = 1 .Item (" http://schemas.microsoft.com/cdo/configuration/sendusername ") =" [email protected] ".Item (" http: / /schemas.microsoft.com/cdo/configuration/sendpassword ") =" password ".Item (" http://schemas.microsoft.com/cdo/configuration/smtpserverport ") = 25 .Item (" http: // skemaer .microsoft.com / cdo / configuration / smtpusessl ") = True .Update slut med med CDO_Mail Set .Configuration = CDO_Config slut med 

Afslut CDO Setup

Nu hvor du har konfigureret forbindelsen til SMTP-serveren til afsendelse af e-mailen, er du alene nødt til at udfylde de relevante felter for CDO_Mail-objektet og udstede kommandoen Send . Sådan gør du det her:

 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: Hvis Err.Description "" Then MsgBox Err.Description 

Så der har du det. Der vil ikke være nogen pop op-bokse eller sikkerhedsalarmmeddelelser, hvilket kan ske, når du tyver på at bruge Outlook-mailobjektet. CDO sætter simpelthen sammen e-mailen og bruger dine SMTP-serverforbindelsesdetaljer til at slukke for meddelelsen. Det er nok den nemmeste måde jeg ved at inkorporere email i Microsoft Word eller Excel VBA scripts.

Her er, hvad meddelelsen så ud som jeg modtog i min indbakke:

Sådan sender du e-mails fra et Excel-regneark ved hjælp af VBA Scripts-arbejds-e-mail

Fejlfinding

Hvis du modtager en fejl, der lyder Transporten mislykkedes at oprette forbindelse til serveren, skal du sørge for at indtaste det rigtige brugernavn, adgangskode, SMTP-server og portnummer i linjerne med kode anført under Med SMTP_Config .

Automatisering af processen

Det er godt og godt at kunne sende information fra Microsoft Excel som en e-mail med et tryk på en knap. Du kan dog regelmæssigt bruge denne funktionalitet, i hvilket tilfælde det ville være fornuftigt at automatisere processen 5 Ressourcer til Excel-makroer til at automatisere dit regneark 5 Ressourcer til Excel-makroer til at automatisere dit regneark Søgning efter Excel-makroer? Her er fem websteder, der har fået det, du leder efter. Læs mere .

For at gøre det skal vi ændre på den makro, vi oprettede. Gå til Visual Basic Editor og kopier og forbi hele koden vi sætter sammen. Vælg derefter ThisWorkbook fra projekthierarkiet .

Sådan sender du e-mails fra et Excel-regneark ved hjælp af VBA Scripts thisworkbook

Kopier og indsæt din kode i ThisWorkbook . Udskift derefter den første linje med Sub Workbook_Open () . Dette vil køre makroen, når du åbner filen.

Sådan sender du e-mails fra et Excel-regneark ved hjælp af VBA Scripts-projektmappen

Derefter åbner du Opgaveplanlægning . Vi skal bruge dette værktøj til at bede Windows om at åbne regnearket automatisk med jævne mellemrum, hvorefter vores makro vil blive startet og sende e-mailen.

Sådan sender du e-mails fra et Excel-regneark Ved hjælp af VBA-scripts oprettes grundlæggende opgave

Vælg Opret grundlæggende opgave ... fra menuen Handlinger, og arbejd dig vej gennem guiden, indtil du kommer til skærmbilledet Handling . Vælg Start et program, og klik på Næste .

Sådan sender du e-mails fra et Excel-regneark ved hjælp af VBA Scripts tilføjer argumenter

Brug knappen Gennemse til at finde Microsoft Excels placering på din computer, eller kopier og indsæt stien i feltet Program / script . Indtast derefter stien til dit Microsoft Excel-dokument i feltet Tilføj argumenter . Udfør guiden, og vores planlægning skal være på plads. Det er værd at køre en test ved at planlægge handlingen Sådan tømmes papirkurven automatisk på et tidsplan og frigøres affaldsområdet Sådan tømmes papirkurven automatisk op i et tidsplan og frigøres affaldsområde Hvis du ikke tømmer genanvendelsen regelmæssigt regelmæssigt Bin, det kan spilde gigabyte af plads på dit datastation. Men nu kan Windows 10 tømme det automatisk på en tidsplan. Læs mere i et par minutter i fremtiden, og rediger derefter opgaven, når du kan bekræfte, at den fungerer.

Du skal muligvis justere dine Trust Center-indstillinger for at sikre, at makroen kører korrekt. For at gøre det skal du åbne regnearket og navigere til Filer > Valg > Tillidcenter . Herfra klikker du på Trust Center Settings, og i det næste skærmsæt vises radioproppen til Aldrig viser oplysninger om blokeret indhold .

Gør Microsoft Excel arbejde for dig

Microsoft Excel er et utroligt kraftfuldt værktøj, men at lære at få mest muligt ud af det kan være lidt skræmmende. Hvis du virkelig vil mestre softwaren, skal du være sikker på VBA Excel VBA Programmering Tutorial for Beginners Excel VBA Programmering Tutorial for Beginners VBA er et Microsoft Office power tool. Du kan bruge den til at automatisere opgaver med makroer, sæt triggere og meget mere. Vi introducerer dig til Excel Visual Basic Programmering med et simpelt projekt. Læs mere, og det er ikke en lille opgave.

Resultaterne taler dog for sig selv. Med en lille VBA-oplevelse under dit bælte, vil du snart kunne gøre Microsoft Excel til at udføre grundlæggende opgaver uden dit tilsyn, hvilket giver dig mere tid til at koncentrere dig om mere presserende forhold. Det tager tid at tage fat på VBA, men du vil snart se frugterne af dit arbejde, hvis du kan holde fast ved det.

Kan du tænke på nogle cool anvendelser til CDO i dine egne Microsoft Excel, Access eller Word-projekter? Del dine tanker og ideer i kommentarfeltet nedenfor.

In this article