Slik sender du e-post fra et Excel-regneark ved hjelp av VBA-skript

Vi viser deg hvordan du konfigurerer automatiserte e-poster fra Excel ved hjelp av Collaboration Data Objects, (CDO) og VBA-skript. Våre kodemaler gjør dette mye enklere enn det høres ut!

Vi viser deg hvordan du konfigurerer automatiserte e-poster fra Excel ved hjelp av Collaboration Data Objects, (CDO) og VBA-skript.  Våre kodemaler gjør dette mye enklere enn det høres ut!
Annonse

Oppdatert av Brad Jones 4. juli 2017.

Bruke e-post som en del av et program er en fin måte å automatisere viktige oppgaver på, og det forbedrer også verdien og funksjonaliteten til et hvilket som helst program eller skript.

Tidligere har jeg brukt e-post mye i mine batchjobber og andre automatiserte skript, som har blitt beskrevet i tidligere artikler om bruk av verktøy som Sendmail Send Automated Emails ved hjelp av SendEmail og Windows Oppgaveplanlegger Send automatiserte e-poster ved hjelp av SendEmail og Windows Task Planlegger Uansett hva jobben din er, må vanligvis noen til enhver tid sende e-post til en sjef eller veileder med daglige, ukentlige eller månedlige statusrapporter. Les mer eller Blat for å utstede e-postmeldinger rett fra kommandolinjen Send enkelt kommandolinjepost med Blat Send enkelt kommandolinjepost med Blat Blat. Ikke akkurat ordet du forestiller, ville være navnet på et verktøy som du kan bruke til å sende ut e-post til noen i verden, fra hvilket som helst program eller programvareverktøy som du ... Les mer, eller fra et kommandolinjeskript.

Disse er flotte for de gangene du har et skript som overvåker helsen til en datamaskin eller statusen til en bestemt prosess, men hva hvis du vil automatisere sende e-post fra Microsoft Office-produkter som Word eller Excel?

Det er mange grunner til at du kanskje vil gjøre det. Kanskje du har ansatte som oppdaterer dokumenter eller regneark på ukentlig basis, og du vil motta en e-postvarsling når disse oppdateringene finner sted, og til og med en rapport av dataene fra de aktuelle arkene. Det er noen teknikker du kan bruke til å programmere automatiserte e-poster fra Excel, men Collaboration Data Objects (CDO) er fortsatt min favoritt.

Sende e-poster fra Innenfor Microsoft Excel

Du tenker nok at skripting utgående e-post til et Excel VBA-skript kommer til å være smertefullt komplisert. Vel, det er ikke tilfelle i det hele tatt.

CDO er en meldingskomponent som brukes i Windows for noen generasjoner av operativsystemet. Det pleide å bli kalt CDONTS, og deretter med tilkomsten av Windows 2000 og XP, ble det erstattet med "CDO for Windows 2000". Denne komponenten er allerede inkludert i VBA-installasjonen din i Microsoft Word eller Excel, og den er klar til bruk.

Ved hjelp av komponenten gjør det å sende e-post fra Windows-produkter med VBA ekstremt enkelt. I dette eksemplet skal jeg bruke CDO-komponenten i Microsoft Excel for å sende ut en e-post som vil levere resultatene fra en bestemt Excel-celle.

Lag en VBA-makro

Det første trinnet er å gå til Excel Developer- fanen.

På fanen Utvikler klikker du på Sett inn i kontrollpanelet, og velger deretter en kommandoknapp.

Slik sender du e-poster fra et Excel-regneark ved hjelp av VBA-skript uten navn

Tegn det inn i arket og opprett en ny makro for den.

Slik sender du e-poster fra et Excel-regneark Ved hjelp av VBA-skript, opprettes makro

Når Microsoft Excel åpner VBA-editoren, må du legge til referansen til CDO-biblioteket. Naviger til Verktøy > Referanser i redigeringsprogrammet.

Slik sender du e-post fra et Excel-regneark ved hjelp av VBA Scripts-referanser

Rull nedover listen til du finner Microsoft CDO for Windows 2000-biblioteket . Merk av i avmerkingsboksen og klikk OK .

Slik sender du e-post fra et Excel-regneark ved hjelp av VBA-skript microsoft cdo

Sett opp CDO fra og til felt

Nå er du klar til å bruke CDO til å utstede e-post fra Microsoft Excel. For å gjøre dette må du først opprette e-postobjektene og sette opp alle feltene som er nødvendige for å sende e-posten. Husk at mens mange av feltene er valgfrie, er feltene From og To kreves.

 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 Som String strSubject = "Resultater fra Excel Spreadsheet" strFrom = "ryxxxxxx @ xxxxxcast .net "strTo =" [email protected] "strCc =" "strBcc =" "strBody =" De totale resultatene for dette kvartalet er: "& Str (Sheet1.Cells (2, 1)) 

Den kule tingen om dette er at du kan bygge opp en hvilken som helst streng du vil tilpasse en full e-postmelding og tilordne den til strBody- variabelen. Del sammen komponentene i meldingen ved å bruke & strengen for å sette inn data fra noen av Microsoft Excel-arkene rett inn i e-postmeldingen, akkurat som jeg har vist ovenfor.

Konfigurer CDO til å bruke en ekstern SMTP

Den neste delen av koden er hvor du vil konfigurere CDO for å bruke en hvilken som helst ekstern SMTP-server du vil bruke. I dette tilfellet trenger jeg ikke bruke SSL fordi min SMTP-server ikke krever det. CDO er i stand til SSL, men det er utenfor rammen av denne artikkelen. Hvis du trenger å bruke SSL, anbefaler jeg på det sterkeste Paul Sadowski's awesome writeup på bruk av CDO.

 Angi CDO_Mail = CreateObject ("CDO.Message") På Feil GoTo Error_Handling Angi CDO_Config = CreateObject ("CDO.Configuration") CDO_Config.Load -1 Sett 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: // skjemaer .microsoft.com / cdo / configuration / smtpauthenticate ") = 1 .Item (" http://schemas.microsoft.com/cdo/configuration/sendusername ") =" [email protected] ".Item (" http: / /schemas.microsoft.com/cdo/configuration/sendpassword ") =" passord ".Item (" http://schemas.microsoft.com/cdo/configuration/smtpserverport ") = 25 .Item (" http: // skjemaer .microsoft.com / cdo / configuration / smtpusessl ") = True. Oppdatere med CDO_Mail Set .Configuration = CDO_Config Slutt med 

Fullfør CDO Setup

Nå som du har konfigurert tilkoblingen til SMTP-serveren for å sende e-posten, er alt du trenger å gjøre å fylle ut de aktuelle feltene for CDO_Mail-objektet, og utsted Send kommandoen. Slik gjør du det:

 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 "" Da MsgBox Err.Description 

Så der har du det. Det vil ikke være noen popup-bokser eller sikkerhetsvarslingsmeldinger, noe som kan skje når du ty til bruk av Outlook-postobjektet. CDO setter bare sammen e-posten og bruker SMTP-serverforbindelsesdetaljer for å avbrå meldingen. Det er sannsynligvis den enkleste måten jeg vet å inkorporere e-post i Microsoft Word eller Excel VBA-skript.

Slik ser meldingen ut som jeg mottok i innboksen min:

Slik sender du e-post fra et Excel-regneark ved hjelp av VBA Scripts arbeids-e-post

Feilsøking

Hvis du mottar en feil som leser Transporten klarte ikke å koble til serveren, må du passe på riktig brukernavn, passord, SMTP-server og portnummer i linjene med kode som er oppført under Med SMTP_Config .

Automatiserer prosessen

Det er alt bra og godt å kunne sende informasjon fra Microsoft Excel som en e-post ved å trykke på en knapp. Du vil imidlertid kanskje bruke denne funksjonaliteten regelmessig, og i så fall vil det være fornuftig å automatisere prosessen. 5 Ressurser for Excel-makroer for å automatisere regnearkene. 5 Ressurser for Excel-makroer for å automatisere regnearkene dine. Søker etter Excel-makroer? Her er fem nettsteder som har det du leter etter. Les mer .

For å gjøre det, må vi gjøre en endring i makroen vi opprettet. Gå til Visual Basic Editor og kopier og forbi hele koden vi legger sammen. Deretter velger du ThisWorkbook fra prosjekthierarkiet .

Slik sender du e-post fra et Excel-regneark ved hjelp av VBA-skript thisworkbook

Kopier og lim inn koden din i ThisWorkbook . Deretter erstatter du den første linjen med Sub Workbook_Open () . Dette vil kjøre makroen når du åpner filen.

Slik sender du e-poster fra et Excel-regneark ved hjelp av VBA Scripts-arbeidsboken

Deretter åpner du oppgaveplanleggeren . Vi skal bruke dette verktøyet for å be Windows om å åpne regnearket automatisk med jevne mellomrom, da vil makroen vår bli startet, og sende e-posten.

Slik sender du e-post fra et Excel-regneark Ved hjelp av VBA-skript, opprettes grunnleggende oppgave

Velg Opprett grunnleggende oppgave ... fra Handlinger- menyen og arbeid deg gjennom veiviseren til du kommer til Handling- skjermbildet. Velg Start et program og klikk på Neste .

Slik sender du e-poster fra et Excel-regneark ved hjelp av VBA-skript legger til argumenter

Bruk Browse- knappen til å finne Microsoft Excels plassering på datamaskinen din, eller kopier og lim inn banen i Program / skriptfeltet . Deretter skriver du banen til Microsoft Excel-dokumentet i feltet Legg til argument . Fullfør veiviseren, og vår planlegging skal være på plass. Det er verdt å kjøre en test ved å planlegge handlingen. Slik fjerner du papirkurven automatisk på et tidsplan og frigjør bortkastet plass. Slik tøm papirkurven automatisk på et tidsplan og frigjør bortkastet plass Hvis du ikke tømmer resirkuleringen regelmessig Bin, det kan kaste bort gigabyte mellomrom på datadriften din. Men nå kan Windows 10 tømme det automatisk på en tidsplan. Les mer i et par minutter i fremtiden, og endrer oppgaven når du kan bekrefte at den fungerer.

Du må kanskje justere Trust Center-innstillingene for å sikre at makroen kjører riktig. For å gjøre dette, åpne regnearket og naviger til Fil > Valg > Tillat senter . Herfra klikker du Trust Center Settings, og i neste skjermbilde viser radiotasten til Aldri viser informasjon om blokkert innhold .

Gjør Microsoft Excel for deg

Microsoft Excel er et utrolig kraftig verktøy, men å lære å få mest mulig ut av det kan være litt skremmende. Hvis du vil virkelig mestre programvaren, må du være komfortabel med VBA Excel VBA Programmering Tutorial for Beginners Excel VBA Programmering Tutorial for Beginners VBA er et Microsoft Office-verktøy. Du kan bruke den til å automatisere oppgaver med makroer, angi utløsere og mye mer. Vi vil introdusere deg til Excel visuell grunnleggende programmering med et enkelt prosjekt. Les mer, og det er ingen liten oppgave.

Resultatene snakker imidlertid for seg selv. Med en liten VBA-opplevelse under beltet ditt, vil du snart kunne gjøre Microsoft Excel utføre grunnleggende oppgaver uten ditt tilsyn, noe som gir deg mer tid til å konsentrere deg om mer presserende saker. Det tar tid å ta tak i VBA, men du vil snart se fruktene av ditt arbeid hvis du kan holde fast ved det.

Kan du tenke på noen kule bruksområder for CDO i dine egne Microsoft Excel, Access eller Word-prosjekter? Del dine tanker og ideer i kommentarfeltet nedenfor.

In this article