Excel-makro för att skicka e-post automatiskt (3 lämpliga exempel)

  • Dela Detta
Hugh West

Den här handledningen visar hur du använder Excel-makro för att skicka ett e-postmeddelande automatiskt. Vi kan konfigurera vår e-postfunktion med hjälp av VBA makron. Om du använder VBA makro kan vi skicka ett e-postmeddelande till flera användare samtidigt. Vi måste ha Outlook installerat på vår enhet för att skicka e-post automatiskt med ett makro. Eftersom den kod som vi kommer att infoga kommer att använda Outlook för att skicka e-post till mottagarna.

Ladda ner övningsboken

Du kan ladda ner arbetsboken här.

Skicka e-post automatiskt.xlsm

3 lämpliga exempel på Excel-makro för att skicka e-post automatiskt

I den här artikeln kommer vi att visa följande 3 lämpliga exempel på hur man använder ett Excel-makro för att skicka ett e-postmeddelande automatiskt till mottagarna. Innan vi börjar illustrera exemplet måste vi rätta till en sak i vårt Excel-ark. Utför nedanstående steg innan du tillämpar ett makro för att skicka e-post automatiskt.

STEG:

  • Först går du från ditt dataset till fliken Utvecklare . Välj alternativet Visual Basic .

  • Gå sedan till Verktyg och välj alternativet Referenser .

  • En ny dialogruta med namnet ' Referenser - VBAProject öppnas.
  • Kontrollera slutligen alternativet ' Microsoft Office 16.0 Objektbibliotek ' och klicka på OK .

1. Tillämpa Excel VBA-makro för att skicka e-post automatiskt baserat på cellvärde

Först och främst kommer vi att tillämpa excel VBA för att skicka ett e-postmeddelande automatiskt baserat på ett visst cellvärde i vårt dataset. För att illustrera detta exempel använder vi följande dataset. Vi skriver en kod som skickar ett e-postmeddelande automatiskt om cellvärdet i cell D6 är större än 400 .

Låt oss se stegen för att utföra den här åtgärden.

STEG:

  • Till att börja med, höger - Klicka på på bladet ' Baserat på cell '.
  • Välj dessutom alternativet ' Visa kod '.

  • Ovanstående åtgärd kommer att öppna en tom VBA kodfönstret för det arbetsbladet. Ett annat sätt att öppna kodfönstret är att trycka på Alt + F11 .
  • Skriv dessutom följande kod i kodfönstret:
 Dim rg As Range Private Sub Worksheet_Change(ByVal Target As Range) On Error Resume Next If Target.Cells.Count> 1 Then Exit Sub Set rg = Intersect(Range("D6"), Target) If rg Is Nothing Then Exit Sub If IsNumeric(Target.Value) And Target.Value> 400 Then Call send_mail_outlook End If End Sub Sub Sub send_mail_outlook() Dim z As Object Dim y As Object Dim b As String Set z =CreateObject("Outlook.Application") Set y = z.CreateItem(0) b = "Hello!" & vbNewLine & vbNewLine & _ "Hoppas du mår bra" & vbNewLine & _ "Besök vår webbplats Exceldemy" On Error Resume Next With y .To = "Address" .cc = "" .BCC = "" .Subject = "send mail based on cell value" .Body = b .Display End With On Error GoTo 0 Set y = Nothing Set z = Nothing End Sub 
  • Klicka sedan på Kör eller tryck på knappen F5 för att köra koden.

  • En ny dialogruta med namnet Makroer kommer att visas.
  • Därefter, i den Makronamn fältet väljer du makrot ' send_mail_outlook '.
  • Klicka nu på Kör knapp.

  • Slutligen, från och med nu när cellvärdet i cell D6> 400 ett e-postmeddelande i Outlook kommer att genereras automatiskt med specifika mottagare. Vi behöver bara klicka på Skicka för att skicka e-postmeddelandet.

Läs mer: Skicka e-post automatiskt från Excel baserat på cellinnehåll (2 metoder)

2. Automatiskt skicka e-post baserat på förfallodatum med VBA-makro

I den andra metoden kommer vi att använda Excel VBA makro för att skicka ett e-postmeddelande automatiskt om förfallodatumet för ett projekt är nära. Detta är något som liknar en påminnelse. Vi använder följande dataset för att illustrera exemplet. Datasetetet innehåller e-postmeddelanden från olika säljare, meddelanden och förfallodatumet för deras projekt.

Följ nedanstående steg för att utföra den här metoden.

STEG:

  • Först högerklickar du på bladet Datum .
  • Därefter väljer du alternativet ' Visa kod '.

  • Den öppnar en tom VBA kodfönstret för det aktiva arbetsbladet. Vi kan också trycka på Alt + F11 för att få fram kodfönstret.
  • Lägg sedan in följande kod i kodfönstret:
 Public Sub Based_on_Date() Dim aRgDate As Range Dim aRgSend As Range Dim aRgText As Range Dim aRgDone As Range Dim aOutApp As Object Dim aMailItem As Object Dim aLastRow As Long Dim CrLf As String Dim aMailBody As String Dim zRgDateVal As String Dim zRgSendVal As String Dim aMailSubject As String Dim j As Long On Error Resume Next Set aRgDate = Application.InputBox("välj kolumnen för förfallodagdate:", _ "Send Mail Base on Date", , , , , , , , 8) If aRgDate Is Nothing Then Exit Sub Set aRgSend = Application.InputBox("välj kolumnen för e-postmottagare:", _ "Send Mail Base on Date", , , , , , , 8) If aRgSend Is Nothing Then Exit Sub Set aRgText = Application.InputBox("välj kolumnen för e-postinnehåll:", _ "Send Mail Base on Date", , , , , , , , 8) If aRgText Is Nothing Then Exit Sub aLastRow =aRgDate.Rows.Count Set aRgDate = aRgDate(1) Set aRgSend = aRgSend(1) Set aRgText = aRgText(1) Set aOutApp = CreateObject("Outlook.Application") For j = 1 To aLastRow zRgDateVal = "" zRgDateVal = aRgDate.Offset(j - 1).Value If zRgDateVal "" Then If CDate(zRgDateVal) - Date 0 Then zRgSendVal = aRgSend.Offset(j - 1).Value aMailSubject = aRgText.Offset(j - 1).Value & " on " & zRgDateVal CrLf= " 

" aMailBody = "" aMailBody = aMailBody & "Hello " & zRgSendVal & CrLf aMailBody = aMailBody & "Message: " & aRgText.Offset(j - 1).Value & CrLf aMailBody = aMailBody & "" Set aMailItem = aOutApp.CreateItem(0) With aMailItem .Subject = aMailSubject .To = zRgSendVal .HTMLBody = aMailBody .Display End With Set aMailItem = Nothing End If End If Next Set aOutApp = Nothing EndUnder

  • Använd nu Kör eller på knappen F5 för att köra koden.

  • En ny dialogruta öppnas.
  • Därefter väljer du kolumnintervallet för förfallodatum i inmatningsfältet i dialogrutan. D$5:$D$9 Klicka sedan på OK .

  • Ytterligare en dialogruta öppnas.
  • I inmatningsfältet väljer du dessutom kolumnområdet. B$5:$B$9 som innehåller e-postadresserna och klicka på OK .

  • Dessutom öppnas ytterligare ett fönster. Välj meddelandeområde. $C$5:$C$9 i inmatningsfältet i popfönstret.

  • I slutändan kan vi se resultat som följande bild: Vi får 3 e-postmeddelanden som skapas automatiskt i 3 olika fönster av Outlook Detta kommer inte att skapa e-post till de två första e-postadresserna, eftersom förfallodagen för dessa två projekt är över.

Läs mer: Hur man automatiskt skickar e-post från Excel baserat på datum

Liknande läsningar

  • [Lösta]: Dela arbetsbok visas inte i Excel (med enkla steg)
  • Hur man skickar e-post från Excel-listan (2 effektiva sätt)
  • Hur du skickar ett redigerbart Excel-kalkylblad via e-post (3 snabba metoder)
  • Makro för att skicka e-post från Excel (5 lämpliga exempel)
  • Makro för att skicka e-post från Excel med en textkropp (3 användbara fall)

3. Använd Excel-makro för att skicka e-post automatiskt med bilagor

I det sista exemplet ska vi se hur vi kan utveckla ett Excel-makro för att skicka ett e-postmeddelande automatiskt med bilagor. Anta att vi har en bilaga i följande bild. Vi vill skicka denna bilaga via ett e-postmeddelande med hjälp av Excel. VBA För att göra detta behöver vi sökvägen till denna Excel-fil. Här är stegen för detta:

  • Välj filen ' Bilaga.xlsx ' '.
  • Klicka på alternativet ' Kopiera sökvägen '.

  • Så, sökvägen till filen som vi får:
E:\Exceldemy\Attachment.xlsx

Vi kommer att infoga denna sökväg i vår makrokod för att skicka filen via e-post. Följ nedanstående steg för att göra detta.

STEG:

  • Först går du till Utvecklare och välj alternativet Visual Basic .

  • Ett nytt fönster med namnet ' Projekt - VBAProject öppnas '.
  • För det andra, högerklicka på på arkets namn.
  • Välj sedan Infoga > Modul .

  • Ovanstående kommando öppnar en tom VBA
  • För det tredje skriver du följande kod i den modulen:
 Sub send_Email_complete() Dim MyOutlook As Object Set MyOutlook = CreateObject("Outlook.Application") Dim MyMail As Object Set MyMail = MyOutlook.CreateItem(olMailItem) MyMail.To = "[email protected]" MyMail.cc = "[email protected]" MyMail.BCC = "[email protected]" MyMail.Subject = "Skicka e-post med VBA" MyMail.Body = "Det här är ett exempel på e-post" Attached_File = "E:\Exceldemy\Attachment.xlsx"MyMail.Attachments.Add Attached_File MyMail.send End Sub 
  • Tryck sedan på F5 eller klicka på knappen Kör för att köra koden.

  • Slutligen kommer koden att skicka bilagan till de e-postmeddelanden som anges i koden. Koden skickar e-postmeddelanden genom att Outlook Klicka alltså på Tillåt knappen för att låta Outlook skickar bilagan till de angivna e-postmeddelandena.

Läs mer: Hur du använder makro för att skicka e-post från Excel med bilaga

Slutsats

Sammanfattningsvis visar denna artikel följande 3 exempel på användning av Excel VBA makro för att skicka e-post automatiskt. Ladda ner arbetsbladet i den här artikeln för att testa dina färdigheter. Om du har några frågor kan du lämna en kommentar i rutan nedan. Vårt team kommer att försöka svara på ditt meddelande så snart som möjligt. Håll utkik efter fler uppfinningsrika Microsoft Excel lösningar i framtiden.

Hugh West är en mycket erfaren Excel-tränare och analytiker med över 10 års erfarenhet i branschen. Han har en kandidatexamen i redovisning och ekonomi och en magisterexamen i företagsekonomi. Hugh har en passion för undervisning och har utvecklat ett unikt undervisningssätt som är lätt att följa och förstå. Hans expertkunskap om Excel har hjälpt tusentals studenter och yrkesverksamma över hela världen att förbättra sina färdigheter och utmärka sig i sina karriärer. Genom sin blogg delar Hugh med sig av sin kunskap med världen, och erbjuder gratis Excel-handledning och onlineutbildning för att hjälpa individer och företag att nå sin fulla potential.