Så här skickar du e-postmeddelanden från ett Excel-kalkylblad med VBA-skript

Vi visar hur du konfigurerar automatiserade e-postmeddelanden från Excel med hjälp av samarbetsdataobjekt, (CDO) och VBA-skript. Våra kodmallar gör det mycket enklare än det låter!

Vi visar hur du konfigurerar automatiserade e-postmeddelanden från Excel med hjälp av samarbetsdataobjekt, (CDO) och VBA-skript.  Våra kodmallar gör det mycket enklare än det låter!
Annons

Uppdaterad av Brad Jones den 4 juli 2017.

Att använda e-post som en del av ett program är ett bra sätt att automatisera viktiga uppgifter, och det förbättrar också värdet och funktionaliteten för något program eller skript avsevärt.

Tidigare har jag använt e-post mycket i mina batchjobb och andra automatiska skript som har beskrivits i tidigare artiklar om att använda verktyg som Sendmail Skicka automatiserade e-postmeddelanden med hjälp av SendEmail och Windows Task Scheduler Skicka automatiserade e-postmeddelanden med hjälp av SendEmail och Windows-uppgift Scheduler Oavsett vad ditt jobb är, brukar alla på något sätt skicka e-post till en chef eller handledare med dagliga, veckovisa eller månatliga statusrapporter. Läs mer eller Blat för att utfärda e-postmeddelanden direkt från kommandoraden Skicka E-post med kommandoraden med Blat enkelt Skicka kommandoraden med Blat Blat. Inte precis det ord du tänker skulle vara namnet på ett verktyg som du kan använda för att skicka ut e-postmeddelanden till någon i världen, från alla program eller programverktyg som du ... Läs mer, eller från ett kommandoradsskript.

Dessa är bra för de tiderna när du har ett skript som övervakar datorns hälsa eller statusen för en viss process, men vad händer om du vill automatisera att skicka e-post från Microsoft Office-produkter som Word eller Excel?

Det finns många anledningar till varför du kanske vill göra det. Kanske har du personal som uppdaterar dokument eller kalkylblad varje vecka, och du vill få en e-postmeddelande om när uppdateringarna äger rum, och till och med en rapport av data från dessa ark. Det finns några tekniker som du kan använda för att programmera automatiska e-postmeddelanden från Excel, men Samarbete Dataobjekt (CDO) är fortfarande min favorit.

Skickar e-post från inom Microsoft Excel

Du tänker antagligen att skript utgående e-post till ett Excel VBA-skript kommer att bli smärtsamt komplicerat. Jo det är inte alls.

CDO är en meddelandekomponent som används i Windows för några generationer av operativsystemet. Det brukade kallas CDONTS, och sedan med tillkomsten av Windows 2000 och XP, ersattes det med "CDO för Windows 2000". Den här komponenten ingår redan i din VBA-installation i Microsoft Word eller Excel och är klar att användas.

Med hjälp av komponenten gör det enkelt att skicka e-post från Windows-produkter med VBA. I det här exemplet kommer jag att använda CDO-komponenten i Microsoft Excel för att skicka ut ett e-postmeddelande som kommer att leverera resultaten från en specifik Excel-cell.

Skapa en VBA-makro

Det första steget är att gå till fliken Excel Developer .

På fliken Utvecklare klickar du på Infoga i rutan Kontroller och väljer sedan en kommandoknapp.

Så här skickar du e-postmeddelanden från ett Excel-kalkylblad med VBA-skript utan namn

Rita in det i arket och skapa sedan ett nytt makro för det.

Så här skickar du e-postmeddelanden från ett Excel-kalkylblad Använda VBA-skript skapar makro

När Microsoft Excel öppnar VBA-redigeraren måste du lägga till referensen till CDO-biblioteket. Navigera till Verktyg > Referenser i redigeraren.

Så här skickar du e-postmeddelanden från ett Excel-kalkylblad med hjälp av VBA Scripts-referenser

Bläddra ner listan tills du hittar Microsoft CDO för Windows 2000-biblioteket . Markera kryssrutan och klicka på OK .

Så här skickar du e-postmeddelanden från ett Excel-kalkylblad med VBA-skript microsoft cdo

Ställ in CDO-filen från och till fält

Nu är du redo att använda CDO för att utfärda e-post från Microsoft Excel. För att göra detta måste du först skapa postobjekt och ställa in alla fält som krävs för att skicka e-postmeddelandet. Tänk på att medan många av fälten är frivilliga krävs fälten Från och Till .

 Dim CDO_Mail Som Objekt Dim CDO_Config Som Objekt Dim SMTP_Config Som Variant Dim StrSubject Som String Dim StrFrom String Dim StrTo som String Dim StrCc som String Dim StrBcc som String Dim StrBody Som String strSubject = "Resultat från Excel Spreadsheet" strFrom = "ryxxxxxx @ xxxxxcast .net "strTo =" [email protected] "strCc =" "strBcc =" "strBody =" De totala resultaten för kvartalet är: "& Str (Sheet1.Cells (2, 1)) 

Den snygga saken om detta är att du kan bygga upp en sträng som du vill anpassa ett fullständigt e-postmeddelande och tilldela det till strBody- variabeln. Styck komponenter i meddelandet genom att använda & strängen för att infoga data från någon av Microsoft Excel-arken direkt i e-postmeddelandet, precis som jag har visat ovan.

Konfigurera CDO för att använda en extern SMTP

Nästa sektion av kod är där du kommer att konfigurera CDO för att använda en extern SMTP-server som du vill använda. I det här fallet behöver jag inte använda SSL eftersom min SMTP-server inte behöver det. CDO kan SSL, men det ligger utanför ramen för denna artikel. Om du behöver använda SSL rekommenderar jag starkt Paul Sadowskis fantastiska skrivning på att använda CDO.

 Ange CDO_Mail = CreateObject ("CDO.Message") På Error GoTo Error_Handling Ange CDO_Config = CreateObject ("CDO.Configuration") CDO_Config.Load -1 Ställ in 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: // scheman .microsoft.com / cdo / configuration / smtpauthenticate ") = 1 .Item (" http://schemas.microsoft.com/cdo/configuration/sendusername ") =" [email protected] ".Item (" http: / /schemas.microsoft.com/cdo/configuration/sendpassword ") =" lösenord ".Item (" http://schemas.microsoft.com/cdo/configuration/smtpserverport ") = 25 .Item (" http: // scheman .microsoft.com / cdo / configuration / smtpusessl ") = True. Uppdatera slut med CDO_Mail Set .Configuration = CDO_Config avsluta med 

Slutför CDO Setup

Nu när du har konfigurerat anslutningen till SMTP-servern för att skicka e-posten behöver du bara fylla i lämpliga fält för CDO_Mail-objektet och utfärda kommandot Skicka . Så här gö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: Om Err.Description "" Då MsgBox Err.Description 

Så där har du det. Det kommer inte finnas några popup-lådor eller säkerhetsvarningsmeddelanden, vilket kan hända när du använder sig av Outlook-postobjektet. CDO sammanställer enkelt e-postmeddelandet och använder dina SMTP-serveranslutningsdetaljer för att avaktivera meddelandet. Det är förmodligen det enklaste sättet jag vet att införliva e-post i Microsoft Word eller Excel VBA-skript.

Här är vad meddelandet såg ut som jag fick i min inkorg:

Så här skickar du e-postmeddelanden från ett Excel-kalkylblad med hjälp av VBA-skript som arbetar med e-post

Felsökning

Om du får ett fel som läser Transporten misslyckades med att ansluta till servern, kontrollera att du har angett rätt användarnamn, lösenord, SMTP-server och portnummer i raden av kod som anges under Med SMTP_Config .

Automatiserar processen

Det är bra och bra att kunna skicka information från Microsoft Excel som ett e-postmeddelande med en knapptryckning. Men du kanske vill använda den här funktionen regelbundet, i vilket fall det vore bra att automatisera processen. 5 Resurser för Excel-makron för att automatisera dina kalkylblad 5 Resurser för Excel-makron för att automatisera dina kalkylblad Sökning efter Excel-makron? Här är fem webbplatser som har det du letar efter. Läs mer .

För att göra det måste vi göra en ändring i det makro som vi skapade. Gå till Visual Basic Editor och kopiera och gå över hela koden vi sätter ihop. Välj sedan ThisWorkbook från projekthierarkin .

Så här skickar du e-postmeddelanden från ett Excel-kalkylblad med hjälp av VBA-skript thisworkbook

Kopiera och klistra in koden i ThisWorkbook . Ersätt sedan den första raden med Sub Workbook_Open () . Detta kommer att köra makro närhelst du öppnar filen.

Så här skickar du e-postmeddelanden från ett Excel-kalkylblad Använda VBA Scripts-arbetsboken öppen

Öppna sedan uppgiftsschemaläggaren . Vi ska använda det här verktyget för att be Windows att öppna kalkylbladet automatiskt med jämna mellanrum, då kommer vårt makro att initieras och skickar e-postmeddelandet.

Så här skickar du e-postmeddelanden från ett Excel-kalkylblad Använda VBA-skript skapar grundläggande uppgift

Välj Skapa grundläggande uppgift ... från menyn Åtgärder och arbeta dig igenom guiden tills du når skärmen Åtgärd . Välj Starta ett program och klicka på Nästa .

Så här skickar du e-postmeddelanden från ett Excel-kalkylblad Använda VBA-skript lägger till argument

Använd knappen Bläddra för att hitta Microsoft Excel: s plats på din dator, eller kopiera och klistra in sökvägen till Program / skriptfältet . Ange sedan sökvägen till ditt Microsoft Excel-dokument i fältet Lägg till argument . Slutför trollkarlen, och vår schemaläggning ska vara på plats. Det är värt att köra ett test genom att schemalägga åtgärden Hur man automatiskt tömmer papperskorgen på ett schema och frigör bortkastat utrymme Hur man tömmer papperskorgen automatiskt i ett schema och frigörs bortkastat utrymme Om du inte tömmer återvinningen regelbundet Bin, det kan slösa bort gigabyte av utrymme på din dators enhet. Men nu kan Windows 10 tömma det automatiskt på ett schema. Läs mer för ett par minuter i framtiden, och ändra sedan uppgiften när du kan bekräfta att den fungerar.

Det kan hända att du måste justera inställningarna för Trust Center för att säkerställa att makroen körs ordentligt. För att göra det, öppna kalkylbladet och navigera till Arkiv > Alternativ > Trust Center . Härifrån klickar du på Trust Center Settings, och i nästa skärmuppsättning visar radioläge till Aldrig visa information om blockerat innehåll .

Gör Microsoft Excel för dig

Microsoft Excel är ett otroligt kraftfullt verktyg, men att lära sig att få ut det mesta kan vara lite skrämmande. Om du verkligen vill behärska programvaran måste du vara bekväm med VBA Excel VBA Programmering Handledning för nybörjare Excel VBA Programmering Handledning för nybörjare VBA är ett Microsoft Office-verktyg. Du kan använda den för att automatisera uppgifter med makron, inställningsfunktioner och mycket mer. Vi introducerar dig till Excel visuell grundläggande programmering med ett enkelt projekt. Läs mer, och det är ingen liten uppgift.

Resultaten talar dock för sig själva. Med en liten VBA-upplevelse under ditt bälte kommer du snart att kunna göra Microsoft Excel att utföra grundläggande uppgifter utan din tillsyn, vilket ger dig mer tid att koncentrera dig på mer pressande frågor. Det tar tid att ta tag i VBA, men du kommer snart att se frukterna av ditt arbete om du kan hålla fast vid det.

Kan du tänka på några coola användningsområden för CDO i dina egna Microsoft Excel, Access eller Word-projekt? Dela dina tankar och idéer i kommentarfältet nedan.

In this article