Excel handledning – Skicka e-post från Excel
Normalt använder vi e-postklienter som Outlook, Gmail, etc. för att skicka e-post. Men många människor lagrar data i Excel-arbetsböcker och behöver skicka vissa data till andra medan de arbetar med det. Därför måste de skicka e-postmeddelanden direkt från Excel-arbetsboken, vilket sparar tid på att driva en e-postklient. Denna steg-för-steg handledning visar dig hur du skickar e-post från Excel under olika förhållanden.
Anmärkningar: Innan du använder följande metoder måste du konfigurera en Outlook-e-postklient på din dator och ställa in den som din standardklient för e-post.
Innehåll: [ Dölj ]
1. Grunderna för att skicka e-post från Excel
Det här avsnittet introducerar grunderna för att skicka e-post från Excel.
1.1 Skicka e-postmeddelanden från Excel med Excel inbyggda funktioner
Om du bara vill skicka enkla e-postmeddelanden från Excel, inklusive endast fälten Till, Ämne, Kopia och brödtext. De inbyggda funktionerna i Excel kan hjälpa.
1.1.1 Skicka e-post från Excel med en formel
Som visas i tabellen nedan, för att skicka olika e-postmeddelanden från Excel baserat på de givna fälten, kan du använda cellreferenserna för de givna fälten för att skapa olika hyperlänksformler för att få det gjort. När du har skapat e-posthyperlänkarna kan du klicka på hyperlänken du behöver för att skicka ett e-postmeddelande automatiskt.
Notera: Om det finns mer än en mottagare i fälten Till eller Kopia, separera dem med semikolon.
Det här avsnittet är uppdelat i fyra delar för att visa dig stegen för att lägga till e-postadress, kopia-mottagare, ämnesrad och brödtext separat till hyperlänkformeln. Vänligen gör enligt följande.
Syntaxen och argumenten för HYPERLÄNK funktionerna är som följer.
syntax
HYPERLINK(link_location, [friendly_name])
Argument
1.1.1.1 Lägg till e-postadress till hyperlänkformel
Här använder vi "mailto:" som en del av formeln för att lägga till en e-postmottagare. I det här exemplet finns den första mottagarens e-postadress i cell B2, så vi måste lägga till "mailto:" och referera till cell B2.
"mailto:"&B2
1. Välj en cell för att visa hyperlänken. I det här fallet väljer jag cellen F2.
2. Skriv sedan in följande formel i den.
=HYPERLINK("mailto:"&B2)
Anmärkningar: Om du trycker på ange nyckel kommer en hyperlänk att skapas som visas i skärmdumpen nedan. När du klickar på länken skapas ett Outlook-e-postmeddelande och mottagarens e-postadress fylls automatiskt i fältet Till.
Mottagarens e-postadress läggs nu till hyperlänkformeln. Fortsätt med följande steg för att lägga till ämnesraden, kopia-mottagare och brödtext efter behov.
1.1.1.2 Lägg till kopia-mottagare till hyperlänkformeln
För att lägga till kopia-mottagare till hyperlänkfunktionen, lägg till "?cc=" som en del av formeln enligt följande.
Formeln i cell F2 ska vara följande:
=HYPERLINK("mailto:" & B2 & "?cc=" & C2)
1.1.1.3 Lägg till ämnesrad till hyperlänkformeln
För att lägga till ämnesraden till hyperlänkfunktionen, lägg till "&subject=" som en del av formeln enligt följande.
Formeln i cell F2 ska nu se ut så här:
=HYPERLINK("mailto:" & B2 & "?cc=" & C2 & "&subject="& D2)
1.1.1.4 Lägg till brödtext med radbrytningar i hyperlänkformeln
Det sista steget är att lägga till brödtexten i hyperlänkformeln. Som du kan se i exemplet är två rader text i E2 åtskilda av en radbrytning, och du vill behålla radbrytningen i e-postmeddelandet. Känner Outlook igen radbrytningen i denna omständighet? Låt oss kolla efter det.
För att lägga till brödtexten i hyperlänkformeln måste du lägga till “&body=” som en del av formeln enligt följande.
Formeln i cell F2 visas nu enligt följande:
=HYPERLINK("mailto:" & B2 & "?cc=" & C2 & "&subject="& D2 & "&body="& E2)
Notera: Om du trycker på ange nyckel och klicka på länken. Du kan se i det nya e-postmeddelandet att innehållet i e-postmeddelandet visas på samma rad.
För att visa e-postmeddelandet på separata rader måste du ändra cellinnehållet genom att lägga till vagnretur-teckenkoden %0A till texten där du behöver infoga en radbrytning. Se skärmdump:
1.1.1.5 Ange texten som ska visas för hyperlänken
I stegen ovan avslutade vi argumentet Link_location med e-postfält. Här i det här avsnittet ska vi avsluta nästa argument [vänligt_namn].
I det här fallet vill jag att hyperlänkscellen ska visa texten som "Mejla till xx”, där xx är mottagarens namn i A2. Så formeln i F2 bör ändras till:
=HYPERLINK("mailto:" & B2 & "?cc=" & C2 & "&subject="& D2 & "&body="& E2, "Email to "&A2)
Tryck ange för att få resultatet.
Välj den här formelcellen och dra dess Autofyllhandtag ner för att skapa andra e-posthyperlänkar. Se skärmdump:
1.1.2 Skicka e-post från Excel med hyperlänkfunktionen
Förutom att använda hyperlänkformeln ovan kan du manuellt skapa en e-posthyperlänk med Insert Hyperlänk funktion i Excel. Det här avsnittet kommer att visa dig stegen.
1. Högerklicka på ett e-postmeddelande där du vill infoga en hyperlänk, välj Länk från högerklickmenyn.
2. I pop-up Infoga hyperlänk i dialogrutan måste du konfigurera enligt följande.
När du klickar på hyperlänken skapas ett Outlook-e-postmeddelande med de angivna fälten Till, Ämne och Bröd som visas i skärmdumpen nedan.
Anmärkningar:
1.2 Skicka e-post till flera mottagare i celler med VBA-skript
I exemplet ovan kan du se att flera e-postadresser visas i en cell, separerade med semikolon. Om du har en lista med e-postadresser som visas i skärmdumpen nedan och vill skicka ett e-postmeddelande eller ett oberoende e-postmeddelande till dem alla, kan följande VBA-kod göra dig en tjänst.
1.2.1 Skicka ett e-postmeddelande till flera mottagare i celler med VBA-skript
1. I arbetsbladet som innehåller alla e-postadresser du vill skicka e-postmeddelandet till. tryck på andra + F11 nycklar för att öppna Microsoft Visual Basic för applikationer fönster.
2. I Microsoft Visual Basic för applikationer fönstret klickar Insert > Modul, och klistra sedan in följande kod i Modul (kod) fönster.
VBA-kod: Skicka e-post till en lista med e-postadresser
Sub sendmultiple()
'updateby Extendoffice 20220802
Dim xOTApp As Object
Dim xMItem As Object
Dim xCell As Range
Dim xRg As Range
Dim xEmailAddr As String
Dim xTxt As String
On Error Resume Next
xTxt = ActiveWindow.RangeSelection.Address
Set xRg = Application.InputBox("Please select the addresses list:", "Kutools for Excel", xTxt, , , , , 8)
If xRg Is Nothing Then Exit Sub
Set xOTApp = CreateObject("Outlook.Application")
For Each xCell In xRg
If xCell.Value Like "*@*" Then
If xEmailAddr = "" Then
xEmailAddr = xCell.Value
Else
xEmailAddr = xEmailAddr & ";" & xCell.Value
End If
End If
Next
Set xMItem = xOTApp.CreateItem(0)
With xMItem
.To = xEmailAddr
.Subject = "Test"
.Body = "Dear " _
& vbNewLine & vbNewLine & _
"This is a test email " & _
"sending in Excel"
.Display
End With
End Sub
3. tryck på F5 nyckel för att köra koden och en Kutools för Excel dialogrutan dyker upp. Välj listan med e-postadresser och klicka OK.
Anmärkningar:
.Body = "Dear " _
& vbNewLine & vbNewLine & _
"This is a test email " & _
"sending in Excel"
Efter att ha kört koden visas alla e-postadresser i det valda intervallet i fältet Till i meddelandefönstret. Se skärmdump:
1.2.2 Skicka e-postmeddelanden separat till varje mottagare listad i celler med VBA-skript
Ovanstående kod lägger till alla e-postadresser i det valda intervallet till fältet Till i meddelandefönstret. Om du vill skicka e-postmeddelanden till varje e-postadress som anges i celler separat utan att låta dem se varandras e-postadresser, kan du prova följande VBA-skript.
1. I kalkylbladet som innehåller alla e-postadresser du vill skicka mejlen till. tryck på andra + F11 nycklar till öppna fönstret Microsoft Visual Basic for Applications.
2. I Microsoft Visual Basic för applikationer fönstret klickar Insert > Modulerna, och klistra sedan in följande kod i fönstret Module (Code).
VBA-kod: Skicka e-postmeddelanden till varje e-postadress som anges i cellerna separat
Sub SendEmailToAddressInCells()
'Updated by Extendoffice 20220802
Dim xRg As Range
Dim xRgEach As Range
Dim xRgVal As String
Dim xAddress As String
Dim xOutApp As Outlook.Application
Dim xMailOut As Outlook.MailItem
On Error Resume Next
xAddress = ActiveWindow.RangeSelection.Address
Set xRg = Application.InputBox("Please select the addresses list", "KuTools For Excel", xAddress, , , , , 8)
If xRg Is Nothing Then Exit Sub
Application.ScreenUpdating = False
Set xOutApp = CreateObject("Outlook.Application")
Set xRg = xRg.SpecialCells(xlCellTypeConstants, xlTextValues)
For Each xRgEach In xRg
xRgVal = xRgEach.Value
If xRgVal Like "?*@?*.?*" Then
Set xMailOut = xOutApp.CreateItem(olMailItem)
With xMailOut
.To = xRgVal
.Subject = "Test"
.Body = "Dear " _
& vbNewLine & vbNewLine & _
"This is a test email " & _
"sending in Excel"
.Display
'.Send
End With
End If
Next
Set xMailOut = Nothing
Set xOutApp = Nothing
Application.ScreenUpdating = True
End Sub
3. Klicka sedan verktyg > Referenser. I Referenser - VBAProject dialogrutan, hitta och kontrollera Microsoft Outlook 16.0 Objektbibliotek rutan och klicka sedan på OK knappen för att spara ändringarna.
4. tryck på F5 nyckel för att köra koden och en Kutools för Excel dialogrutan dyker upp. Välj listan med e-postadresser och klicka OK.
Anmärkningar:
.Subject = "Test"
.Body = "Dear " _
& vbNewLine & vbNewLine & _
"This is a test email " & _
"sending in Excel"
I det här exemplet finns det sex e-postadresser i det valda intervallet, så sex Outlook-meddelandefönster skapas automatiskt med separata e-postadresser listade i fältet Till som visas i skärmdumpen nedan.
5. Klicka äntligen på Skicka knappen för att skicka e-postmeddelandet ett i taget.
2. Infoga bilagor eller Outlook-signatur i e-postmeddelanden som skickas från Excel (med VBA-skript)
Det här avsnittet kommer att visa dig hur du infogar bilagor eller Outlook-standardsignatur i e-postmeddelanden som skickas från Excel.
2.1 Infoga bilagor i e-postmeddelanden som skickas från Excel
Här beskriver vi de olika fallen av att sätta in bilagor, och du kan välja metod efter dina behov. I det här avsnittet kan du lära dig att (klicka på någon av följande länkar för att navigera till motsvarande metod):
2.1.1 E-posta en viss fil som en bilaga
Du kan använda följande VBA-kod för att e-posta en eller flera filer i en mapp som bilagor från Excel.
1. tryck på andra + F11 nycklar.
2. I öppningen Microsoft Visual Basic för applikationer fönstret klickar Insert > Modulerna. Klistra sedan in följande VBA-kod i fönstret Module (Code).
VBA-kod: E-postfiler i en mapp som bilagor från Excel
Sub EmailWithAttachments()
'Updated by Extendoffice 20220802
Dim xStrFile As String
Dim xFilePath As String
Dim xFileDlg As FileDialog
Dim xFileDlgItem As Variant
Dim xOutApp As Outlook.Application
Dim xMailOut As Outlook.MailItem
Application.ScreenUpdating = False
Set xOutApp = CreateObject("Outlook.Application")
Set xMailOut = xOutApp.CreateItem(olMailItem)
Set xFileDlg = Application.FileDialog(msoFileDialogFilePicker)
If xFileDlg.Show = -1 Then
With xMailOut
.BodyFormat = olFormatRichText
.To = ""
.Subject = "test"
.HTMLBody = "test"
For Each xFileDlgItem In xFileDlg.SelectedItems
.Attachments.Add xFileDlgItem
Next xFileDlgItem
.Display
End With
End If
Set xMailOut = Nothing
Set xOutApp = Nothing
Application.ScreenUpdating = True
End Sub
Anmärkningar:
3. Klicka sedan verktyg > Referenser. I Referenser - VBAProject dialogrutan, hitta och kontrollera Microsoft Outlook 16.0 Objektbibliotek rutan och klicka sedan på OK knappen för att spara ändringarna.
4. tryck på F5 nyckel för att köra koden, sedan a Bläddra fönstret dyker upp, välj de filer du behöver bifoga i e-postmeddelandet och klicka sedan OK.
Sedan dyker ett meddelandefönster upp. Du kan se de valda filerna visas som bilagor i fältet Bifogade.
2.1.2 E-posta det aktuella arbetsbladet som en bilaga
Om du vill e-posta det aktuella kalkylbladet som en bilaga från Excel, kan du använda VBA-skriptet i det här avsnittet.
1. tryck på andra + F11 nycklar.
2. I öppningen Microsoft Visual Basic för applikationer fönstret klickar infoga > Modulerna. Klistra sedan in följande VBA-kod i Modul (kod) fönster.
VBA-kod: E-posta det aktuella kalkylbladet som en bilaga
Sub SendWorkSheet()
'Update by Extendoffice 20220802
Dim xFile As String
Dim xFormat As Long
Dim Wb As Workbook
Dim Wb2 As Workbook
Dim FilePath As String
Dim FileName As String
Dim OutlookApp As Object
Dim OutlookMail As Object
On Error Resume Next
Application.ScreenUpdating = False
Set Wb = Application.ActiveWorkbook
ActiveSheet.Copy
Set Wb2 = Application.ActiveWorkbook
Select Case Wb.FileFormat
Case xlOpenXMLWorkbook:
xFile = ".xlsx"
xFormat = xlOpenXMLWorkbook
Case xlOpenXMLWorkbookMacroEnabled:
If Wb2.HasVBProject Then
xFile = ".xlsm"
xFormat = xlOpenXMLWorkbookMacroEnabled
Else
xFile = ".xlsx"
xFormat = xlOpenXMLWorkbook
End If
Case Excel8:
xFile = ".xls"
xFormat = Excel8
Case xlExcel12:
xFile = ".xlsb"
xFormat = xlExcel12
End Select
FilePath = Environ$("temp") & "\"
FileName = Wb.Name & Format(Now, "dd-mmm-yy h-mm-ss")
Set OutlookApp = CreateObject("Outlook.Application")
Set OutlookMail = OutlookApp.CreateItem(0)
Wb2.SaveAs FilePath & FileName & xFile, FileFormat:=xFormat
With OutlookMail
.To = ""
.CC = "Email Address"
.BCC = "Email Address"
.Subject = "kte features"
.Body = "Please check and read this document."
.Attachments.Add Wb2.FullName
.Display
'.Send
End With
Wb2.Close
Kill FilePath & FileName & xFile
Set OutlookMail = Nothing
Set OutlookApp = Nothing
Application.ScreenUpdating = True
End Sub
Anmärkningar:
3. tryck på F5 för att köra koden, sparas det aktuella kalkylbladet som en Excel-arbetsbok och infogas automatiskt i ett meddelandefönster som en bilaga. Se skärmdump:
Notera: Den bifogade arbetsboken som bara innehåller det aktuella kalkylbladet har samma namn som den ursprungliga arbetsboken. Och tiden du kör koden läggs till i arbetsbokens namn också.
2.1.3 E-posta den aktuella arbetsboken som en bilaga
Efter att ha lärt dig VBA-koden för att mejla det aktuella kalkylbladet som en bilaga från Excel, tillhandahåller vi här ett annat VBA-skript som hjälper dig att skicka hela arbetsboken som en bilaga. Vänligen gör enligt följande.
1. tryck på andra + F11 nycklar.
2. I öppningen Microsoft Visual Basic för applikationer fönstret klickar Insert > Modul. Klistra sedan in följande VBA-kod i fönstret Module (Code).
VBA-kod: E-posta den aktuella arbetsboken som en bilaga från Excel
Sub SendWorkBook()
'Update by Extendoffice 20220802
Dim OutlookApp As Object
Dim OutlookMail As Object
Set OutlookApp = CreateObject("Outlook.Application")
Set OutlookMail = OutlookApp.CreateItem(0)
On Error Resume Next
With OutlookMail
.To = ""
.CC = "Email Address"
.BCC = "Email Address"
.Subject = "kte feature"
.Body = "Hello, please check and read this document, thank you."
.Attachments.Add Application.ActiveWorkbook.FullName
.Display
'.Send
End With
Set OutlookMail = Nothing
Set OutlookApp = Nothing
End Sub
Anmärkningar:
3. tryck på F5 för att köra koden, infogas den aktuella arbetsboken automatiskt i ett meddelandefönster som en bilaga. Se skärmdump:
2.1.4 E-posta hela arbetsboken som en PDF-bilaga
För de flesta brukar de spara en Excel-arbetsbok som en PDF-fil och sedan skicka den som en bilaga till andra. I det här avsnittet kommer jag att visa dig ett sätt att skicka e-postmeddelanden direkt från Excel med den nuvarande öppna arbetsboken som en PDF-bilaga utan att manuellt behöva spara arbetsboken som en PDF-fil.
1. tryck på andra + F11 nycklar.
2. I öppningen Microsoft Visual Basic för applikationer fönstret klickar Insert > Modul. Klistra sedan in följande VBA-kod i fönstret Module (Code).
VBA-kod: E-posta hela arbetsboken som en PDF-bilaga
Sub SendWorkBookAsPDF()
'Update 20220803
Dim Wb As Workbook
Dim FilePath As String
Dim FileName As String
Dim xOutApp As Object
Dim xOutMail As Object
On Error Resume Next
Application.ScreenUpdating = False
Set Wb = Application.ActiveWorkbook
FileName = Left(Wb.Name, (InStrRev(Wb.Name, ".", -1, vbTextCompare) - 1)) & Format(Now, "dd-mmm-yy h-mm-ss") & ".pdf"
FilePath = Environ$("temp") & "\" & FileName
Wb.ExportAsFixedFormat Type:=xlTypePDF, FileName:= _
FilePath, Quality:=xlQualityStandard, _
IncludeDocProperties:=True, IgnorePrintAreas:=False, OpenAfterPublish:= _
False
Set xOutApp = CreateObject("Outlook.Application")
Set xOutMail = xOutApp.CreateItem(0)
With xOutMail
.To = ""
.CC = "Email Address"
.BCC = "Email Address"
.Subject = "test"
.Body = "test"
.Attachments.Add FilePath
.Display 'or use .Send
End With
Kill FilePath
Set xOutMail = Nothing
Set xOutApp = Nothing
Application.ScreenUpdating = True
End Sub
Anmärkningar:
3. tryck på F5 nyckel för att köra koden. Då infogas den aktuella arbetsboken automatiskt i ett nytt meddelandefönster som en PDF-fil. Se skärmdump:
2.1.5 E-posta det aktuella kalkylbladet som en PDF-bilaga
Det finns till exempel en arbetsbok som heter "Månatlig försäljning", och du har färdigställt en försäljningsrapporttabell i ett kalkylblad med namnet "försäljningsrapport" och vill skicka detta arbetsblad som en PDF-fil till dina kollegor. Följande VBA-kod kan göra dig en tjänst.
1. tryck på andra + F11 nycklar.
2. I öppningen Microsoft Visual Basic för applikationer fönstret klickar infoga > Modul. Klistra sedan in följande VBA-kod i fönstret Module (Code).
VBA-kod: E-posta det aktuella arbetsbladet som en PDF-bilaga
Sub SendWorkSheetToPDF()
'Update by Extendoffice 20220803
Dim Wb As Workbook
Dim FileName As String
Dim OutlookApp As Object
Dim OutlookMail As Object
On Error Resume Next
Set Wb = Application.ActiveWorkbook
FileName = Wb.FullName
xIndex = VBA.InStrRev(FileName, ".")
If xIndex > 1 Then FileName = VBA.Left(FileName, xIndex - 1)
FileName = FileName & "_" + ActiveSheet.Name & ".pdf"
ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, FileName:=FileName
Set OutlookApp = CreateObject("Outlook.Application")
Set OutlookMail = OutlookApp.CreateItem(0)
With OutlookMail
.To = ""
.CC = "Email Address"
.BCC = "Email Address"
.Subject = "test"
.Body = "test"
.Attachments.Add FileName
.Display
'.Send
End With
Kill FileName
Set OutlookMail = Nothing
Set OutlookApp = Nothing
End Sub
Anmärkningar:
3. tryck på F5 nyckel för att köra koden. Då infogas det aktuella arbetsbladet automatiskt i ett nytt meddelandefönster som en PDF-fil. Se skärmdump:
2.2 Infoga Outlook-signatur i e-postmeddelanden som skickas från Excel
Ta fallet ovan som ett exempel, du använder ovanstående VBA-kod för att skicka det aktuella kalkylbladet som en PDF-filbilaga från Excel, men Outlook-signaturen kan inte läggas till i meddelandefönstret. För att behålla Outlooks standardsignatur i e-postmeddelandet som skickas från Excel, kommer följande metod att hjälpa.
Två VBA-koder listas nedan.
VBA-kod 1: Koden hjälper till att behålla Outlook-signaturen.
VBA-kod 2: Koden hjälper till att e-posta det aktuella arbetsbladet som en PDF-bilaga.
VBA-kod 1: Behåll Outlook-signatur
.HTMLBody = "Email body" & "
" & .HTMLBody
VBA-kod 2: E-posta det aktuella kalkylbladet som en PDF-bilaga
Sub SendWorkSheetToPDF()
'Update by Extendoffice 20220803
Dim Wb As Workbook
Dim FileName As String
Dim OutlookApp As Object
Dim OutlookMail As Object
On Error Resume Next
Set Wb = Application.ActiveWorkbook
FileName = Wb.FullName
xIndex = VBA.InStrRev(FileName, ".")
If xIndex > 1 Then FileName = VBA.Left(FileName, xIndex - 1)
FileName = FileName & "_" + ActiveSheet.Name & ".pdf"
ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, FileName:=FileName
Set OutlookApp = CreateObject("Outlook.Application")
Set OutlookMail = OutlookApp.CreateItem(0)
With OutlookMail
.To = ""
.CC = "Email Address"
.BCC = "Email Address"
.Subject = "test"
.Body = "test"
.Attachments.Add FileName
.Display
'.Send
End With
Kill FileName
Set OutlookMail = Nothing
Set OutlookApp = Nothing
End Sub
1. Normalt måste du trycka på andra + F11 nycklar för att öppna Microsoft Visual Basic för applikationer fönster.
2. I Microsoft Visual Basic för applikationer fönstret klickar Insert > Modulerna. Klistra sedan in ovanstående VBA-kod 2 i fönstret Module (Code).
3. För att behålla Outlooks standardsignatur i e-postmeddelandet som skickas från Excel, måste du ändra VBA-koden 2 enligt följande:
Här är hela koden efter modifiering.
Sub SendWorkSheetToPDF()
'Update by Extendoffice 20220803
Dim Wb As Workbook
Dim FileName As String
Dim OutlookApp As Object
Dim OutlookMail As Object
On Error Resume Next
Set Wb = Application.ActiveWorkbook
FileName = Wb.FullName
xIndex = VBA.InStrRev(FileName, ".")
If xIndex > 1 Then FileName = VBA.Left(FileName, xIndex - 1)
FileName = FileName & "_" + ActiveSheet.Name & ".pdf"
ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, FileName:=FileName
Set OutlookApp = CreateObject("Outlook.Application")
Set OutlookMail = OutlookApp.CreateItem(0)
With OutlookMail
.Display
.To = ""
.CC = "Email Address"
.BCC = "Email Address"
.Subject = "test"
.HTMLBody = "Email body" & "
" & .HTMLBody
.Attachments.Add FileName
'.Send
End With
Kill FileName
Set OutlookMail = Nothing
Set OutlookApp = Nothing
End Sub
4. tryck på F5 nyckel för att köra koden. Då får du ett nytt meddelandefönster med det aktuella kalkylbladet bifogat som en PDF-fil, medan Outlooks standardsignatur kommer att infogas i slutet av e-postmeddelandet automatiskt.
3. Skicka automatiskt e-postmeddelanden från Excel när ett villkor är uppfyllt (med VBA-skript)
I exemplen ovan måste du köra koden manuellt för att uppnå e-postleveransen. Om du vill trigga koden automatiskt när ett visst villkor är uppfyllt, till exempel när en cell når ett visst värde, när en cells värde ändras, när ett datum nått, etc., skickas e-postmeddelandet automatiskt. Det här avsnittet listar de villkor som Excel-användare ofta sökte efter i Google för att hjälpa dig att automatiskt skicka e-postmeddelanden från Excel när ett visst villkor är uppfyllt.
3.1 Skicka automatiskt ett e-postmeddelande när en cell når ett visst värde
Som visas i skärmdumpen nedan, anta att du har en försäljningstabell med cell D6 som innehåller försäljningssumman. Du vill automatiskt skicka ett e-postmeddelande till din chef baserat på försäljningssumman, till exempel skapa eller skicka ett e-postmeddelande automatiskt när försäljningssumman överstiger 10000 10000 men om försäljningssumman är lika med eller mindre än XNUMX XNUMX vidtas ingen åtgärd.
1. I kalkylbladet innehåller försäljningstabellen, högerklicka på arkfliken och klicka Visa kod från högerklickmenyn.
2. I öppningen Microsoft Visual Basic för applikationer fönstret, klistra in följande VBA-kod i Blad (kod) fönster.
VBA-kod: Skicka automatiskt ett e-postmeddelande när en cell når ett visst värde i Excel
Dim xRg As Range
'Update by Extendoffice 20200803
Private Sub Worksheet_Change(ByVal Target As Range)
On Error Resume Next
If Target.Cells.Count > 1 Then Exit Sub
Set xRg = Intersect(Range("D6"), Target)
If xRg Is Nothing Then Exit Sub
If IsNumeric(Target.Value) And Target.Value > 10000 Then
Call Mail_small_Text_Outlook
End If
End Sub
Sub Mail_small_Text_Outlook()
Dim xOutApp As Object
Dim xOutMail As Object
Dim xMailBody As String
Set xOutApp = CreateObject("Outlook.Application")
Set xOutMail = xOutApp.CreateItem(0)
xMailBody = "Hi boss" & vbNewLine & vbNewLine & _
"Total sales of over $10,000 in January: " & Range("D6")
On Error Resume Next
With xOutMail
.To = ""
.CC = "Email address"
.BCC = "Email address"
.Subject = "test"
.Body = xMailBody
.Display 'or use .Send
End With
On Error GoTo 0
Set xOutMail = Nothing
Set xOutApp = Nothing
End Sub
Private Sub Worksheet_Calculate()
Dim xI As Integer
Dim xRg As Range
Set xRg = Range("D6")
On Error GoTo Err01
xI = Int(xRg.Value)
If xI > 10000 Then
Call Mail_small_Text_Outlook
End If
Err01:
End Sub
Anmärkningar:
xMailBody = "Hi boss" & vbNewLine & vbNewLine & _
"Total sales of over $10,000 in January: " & Range("D6")
Från och med nu, när värdet i cell D6 överstiger 10000 XNUMX, kommer ett e-postmeddelande att skapas som visas i skärmdumpen nedan.
3.2 Skicka ett e-postmeddelande automatiskt när ett cellvärde ändras
Som visas i skärmdumpen nedan, anta att du får en arbetsbok som innehåller månadsförsäljning i olika kalkylblad och försäljningssumman i ett kalkylblad. Du måste verifiera försäljningssumman och om försäljningssumman ändras, skicka tillbaka arbetsboken till avsändaren och informera avsändaren om att cellen har ändrats.
1. I kalkylbladet innehåller försäljningstabellen, högerklicka på arkfliken och klicka Visa kod från högerklickmenyn.
2. I öppningen Microsoft Visual Basic för applikationer fönstret, klistra in följande VBA-kod i fönstret Sheet (Code).
VBA-kod: Skicka automatiskt ett e-postmeddelande när ett specificerat cellvärde ändras
Private Sub Worksheet_Change(ByVal Target As Range)
'Updated by Extendoffice 20220803
Dim xRgSel As Range
Dim xOutApp As Object
Dim xMailItem As Object
Dim xMailBody As String
Dim xBoolean As Boolean
Dim xItsRG As Range
Dim xDDs As Range
Dim xDs As Range
On Error Resume Next
Application.ScreenUpdating = False
Application.DisplayAlerts = False
xBoolean = False
Set xRg = Range("B14")
Set xItsRG = Intersect(Target, xRg)
Set xDDs = Intersect(Target.DirectDependents, xRg)
Set xDs = Intersect(Target.Dependents, xRg)
If Not (xItsRG Is Nothing) Then
Set xRgSel = xItsRG
xBoolean = True
ElseIf Not (xDDs Is Nothing) Then
Set xRgSel = xDDs
xBoolean = True
ElseIf Not (xDs Is Nothing) Then
Set xRgSel = xDs
xBoolean = True
End If
ActiveWorkbook.Save
If xBoolean Then
Debug.Print xRgSel.Address
Set xOutApp = CreateObject("Outlook.Application")
Set xMailItem = xOutApp.CreateItem(0)
xMailBody = "The cell " & xRgSel.Address(False, False) & _
" in the worksheet '" & Me.Name & "' were modified on " & _
Format$(Now, "mm/dd/yyyy") & " at " & Format$(Now, "hh:mm:ss") & _
" by " & Environ$("username") & "."
With xMailItem
.To = ""
.CC = "Email address"
.BCC = "Email address"
.Subject = "Worksheet modified"
.Body = xMailBody
.Attachments.Add (ThisWorkbook.FullName)
.Display
End With
Set xRgSel = Nothing
Set xOutApp = Nothing
Set xMailItem = Nothing
End If
Application.DisplayAlerts = True
Application.ScreenUpdating = True
End Sub
Anmärkningar: I koden,
Från och med nu, när värdet i cell B14 ändras, skapas ett Outlook-meddelande automatiskt enligt skärmdumpen nedan.
3.3 Skicka ett e-postmeddelande automatiskt när en arbetsbok har sparats
Om du har en arbetsbok som behöver delas med andra efter ändring, behöver du normalt spara arbetsboken, starta e-postklienten, skapa ett nytt e-postmeddelande med denna arbetsbok bifogad, skapa motsvarande fält och sedan skicka e-postmeddelandet. Det här avsnittet visar dig en metod för att skapa ett e-postmeddelande automatiskt varje gång du sparar arbetsboken. Vänligen gör enligt följande.
1. tryck på andra + F11 nycklar för att öppna Microsoft Visual Basic för applikationer fönster.
2. Dubbelklicka i det här fönstret Denna arbetsbok i Projekt rutan, klistra sedan in följande VBA-kod i Denna arbetsbok (kod) fönster.
VBA-kod: Skicka automatiskt ett e-postmeddelande när en arbetsbok sparas
Private Sub Workbook_AfterSave(ByVal Success As Boolean)
'Updated by Extendoffice 20220804
Dim xOutApp As Object
Dim xMailItem As Object
Dim xName As String
On Error Resume Next
Set xOutApp = CreateObject("Outlook.Application")
Set xMailItem = xOutApp.CreateItem(0)
xName = ActiveWorkbook.FullName
With xMailItem
.To = ""
.CC = "Email address"
.BCC = "Email address"
.Subject = "The workbook has been updated"
.Body = "Hi," & Chr(13) & Chr(13) & "File is now updated."
.Attachments.Add xName
.Display
'.send
End With
Set xMailItem = Nothing
Set xOutApp = Nothing
End Sub
Anmärkningar: I koden,
3. Från och med nu, när du sparar arbetsboken genom att trycka på ctrl + S eller klicka på Save knappen skapas ett Outlook-e-postmeddelande automatiskt. Du kan se att den aktuella arbetsboken är bifogad som en bilaga och fälten är ifyllda med det angivna innehållet. Se skärmdump:
tips: Om du ofta använder den här arbetsboken rekommenderar vi här att du sparar arbetsboken som en Excel Macro-Enabled Workbook för att spara VBA-skriptet för framtida användning. Stegen är som följer.
3.4 Skicka ett e-postmeddelande automatiskt vid en viss tidpunkt
Låt oss säga att du behöver skicka ett e-postmeddelande med en arbetsbok för uppgiftstilldelning till någon varje fredag morgon kl 9, och vill göra detta automatiskt i Excel utan att behöva hantera e-postklienten manuellt. Det här avsnittet visar dig metoden för att få det gjort.
1. tryck på andra + F11 nycklar för att öppna Microsoft Visual Basic för applikationer fönster.
2. I Microsoft Visual Basic för applikationer fönstret klickar Insert > Modul. Klistra sedan in följande VBA-kod i modulfönstret.
VBA-kod1 : E-posta den aktuella arbetsboken som en bilaga från Excel
Sub Timer()
If Weekday(Date) = vbFriday Then
SendWorkBook
Application.OnTime TimeValue("09:00:00"), "Timer"
Else
Application.OnTime TimeValue("09:00:00"), "Timer"
End If
End Sub
Sub SendWorkBook()
'Update by Extendoffice 20220802
Dim OutlookApp As Object
Dim OutlookMail As Object
Set OutlookApp = CreateObject("Outlook.Application")
Set OutlookMail = OutlookApp.CreateItem(0)
On Error Resume Next
With OutlookMail
.To = ""
.CC = "Email Address"
.BCC = "Email Address"
.Subject = "kte feature"
.Body = "Hello, please check and read this document, thank you."
.Attachments.Add Application.ActiveWorkbook.FullName
.Display
'.Send
End With
Set OutlookMail = Nothing
Set OutlookApp = Nothing
End Sub
3. Dubbelklicka i det här fönstret Denna arbetsbok i Projekt rutan, klistra sedan in följande VBA-kod i Denna arbetsbok (kod) fönster.
VBA-kod 2: Skicka ett e-postmeddelande automatiskt vid en viss tidpunkt
Private Sub Workbook_Open()
Application.OnTime TimeValue("09:00:00"), "Timer"
End Sub
Anmärkningar:
4. Spara koderna och spara sedan arbetsboken som en Excel-makroaktiverad arbetsbok enligt följande.
5. Öppna din sparade makroaktiverade arbetsbok, så skapas eller skickas ett e-postmeddelande automatiskt när dagen och tiden kommer.
4. Ytterligare ämnen
Det här avsnittet samlar andra ämnen som du kan stöta på när du skickar e-post från Excel.
4.1 E-posta ett cellintervall från Excel (med VBA-skript)
Anta att det finns en månatlig försäljningstabell i ett Excel-kalkylblad som visas i skärmdumpen nedan, och du måste skicka denna månatliga försäljningstabell till andra som huvudinnehållet i ett e-postmeddelande eller som en bilaga direkt. Här ger vi dig två metoder för att få det gjort.
4.1.1 E-posta ett intervall som en del av brödtexten från Excel
Du kan köra följande VBA-kod för att skicka ett antal celler som en del av e-postinnehållet från Excel
1. tryck på andra + F11 nycklar för att öppna Microsoft Visual Basic för applikationer fönster.
2. I Microsoft Visual Basic för applikationer fönstret klickar verktyg > Referensprojekt. Och kolla sedan Microsoft Outlook 16.0 Objektbibliotek lådan och klicka OK i Referenser - VBAProject dialog ruta.
3. klick Insert > Modulerna, klistra sedan in följande VBA-kod i Modul (kod) fönster.
VBA-kod: Skicka ett cellintervall som en del av e-postmeddelandets innehåll från Excel
Sub SendARangeofCells()
'Updated by Extendoffice 20220809
Dim xRg As Range
Dim I, J As Long
Dim xAddress As String
Dim xMailOut As Object
Dim xOutApp As Object
On Error Resume Next
Set xOutApp = CreateObject("Outlook.Application")
Set xMailOut = xOutApp.CreateItem(olMailItem)
xAddress = ActiveWindow.RangeSelection.Address
Set xRg = Application.InputBox("Please select range you need to paste into email body", "KuTools For Excel", xAddress, , , , , 8)
If xRg Is Nothing Then Exit Sub
Application.ScreenUpdating = False
Set xOutApp = CreateObject("Outlook.Application")
Set xMailOut = xOutApp.CreateItem(olMailItem)
With xMailOut
.Subject = "test"
.To = ""
.CC = "Email address"
.BCC = "Email address"
.HTMLBody = RangetoHTML(xRg)
.Display
'.Send
End With
Set xMailOut = Nothing
Set xOutApp = Nothing
Application.ScreenUpdating = True
End Sub
' The following VBA script is cited from this page:
' https://stackoverflow.com/questions/18663127/paste-excel-range-in-outlook
Function RangetoHTML(rng As Range)
' By Ron de Bruin.
Dim fso As Object
Dim ts As Object
Dim TempFile As String
Dim TempWB As Workbook
TempFile = Environ$("temp") & "/" & Format(Now, "dd-mm-yy h-mm-ss") & ".htm"
'Copy the range and create a new workbook to past the data in
rng.Copy
Set TempWB = Workbooks.Add(1)
With TempWB.Sheets(1)
.Cells(1).PasteSpecial Paste:=8
.Cells(1).PasteSpecial xlPasteValues, , False, False
.Cells(1).PasteSpecial xlPasteFormats, , False, False
.Cells(1).Select
Application.CutCopyMode = False
On Error Resume Next
.DrawingObjects.Visible = True
.DrawingObjects.Delete
On Error GoTo 0
End With
'Publish the sheet to a htm file
With TempWB.PublishObjects.Add( _
SourceType:=xlSourceRange, _
Filename:=TempFile, _
Sheet:=TempWB.Sheets(1).Name, _
Source:=TempWB.Sheets(1).UsedRange.Address, _
HtmlType:=xlHtmlStatic)
.Publish (True)
End With
'Read all data from the htm file into RangetoHTML
Set fso = CreateObject("Scripting.FileSystemObject")
Set ts = fso.GetFile(TempFile).OpenAsTextStream(1, -2)
RangetoHTML = ts.ReadAll
ts.Close
RangetoHTML = Replace(RangetoHTML, "align=center x:publishsource=", _
"align=left x:publishsource=")
'Close TempWB
TempWB.Close savechanges:=False
'Delete the htm file we used in this function
Kill TempFile
Set ts = Nothing
Set fso = Nothing
Set TempWB = Nothing
End Function
Anmärkningar: I koden,
4. tryck på F5 nyckel för att köra koden. I dök upp Kutools för Excel i dialogrutan väljer du det cellintervall du behöver skicka som en del av ett e-postmeddelande och klickar sedan OK. Se skärmdump:
Då skapas ett Outlook-e-postmeddelande automatiskt. Du kan se att intervallet du valde i kalkylbladet är infogat i e-postmeddelandet. Se skärmdump:
4.1.2 E-posta ett intervall som en bilaga från Excel
Om du behöver e-posta ett antal celler i ett kalkylblad som en bilaga från Excel. Du kan prova följande VBA-kod.
1. tryck på andra + F11 nycklar.
2. I öppningen Microsoft Visual Basic för applikationer fönstret klickar Insert > Modulerna. Klistra sedan in följande VBA-kod i Modul (kod) fönster.
VBA-kod: E-posta ett intervall som en bilaga från Excel
Sub SendRange()
'Update 20220809
Dim xFile As String
Dim xFormat As Long
Dim Wb As Workbook
Dim Wb2 As Workbook
Dim Ws As Worksheet
Dim FilePath As String
Dim FileName As String
Dim OutlookApp As Object
Dim OutlookMail As Object
Dim WorkRng As Range
xTitleId = "KutoolsforExcel"
Set WorkRng = Application.Selection
Set WorkRng = Application.InputBox("Range", xTitleId, WorkRng.Address, Type:=8)
Application.ScreenUpdating = False
Application.DisplayAlerts = False
Set Wb = Application.ActiveWorkbook
Wb.Worksheets.Add
Set Ws = Application.ActiveSheet
WorkRng.Copy Ws.Cells(1, 1)
Ws.Copy
Set Wb2 = Application.ActiveWorkbook
Select Case Wb.FileFormat
Case xlOpenXMLWorkbook:
xFile = ".xlsx"
xFormat = xlOpenXMLWorkbook
Case xlOpenXMLWorkbookMacroEnabled:
If Wb2.HasVBProject Then
xFile = ".xlsm"
xFormat = xlOpenXMLWorkbookMacroEnabled
Else
xFile = ".xlsx"
xFormat = xlOpenXMLWorkbook
End If
Case Excel8:
xFile = ".xls"
xFormat = Excel8
Case xlExcel12:
xFile = ".xlsb"
xFormat = xlExcel12
End Select
FilePath = Environ$("temp") & "\"
FileName = Wb.Name & Format(Now, "dd-mmm-yy h-mm-ss")
Set OutlookApp = CreateObject("Outlook.Application")
Set OutlookMail = OutlookApp.CreateItem(0)
Wb2.SaveAs FilePath & FileName & xFile, FileFormat:=xFormat
With OutlookMail
.To = ""
.CC = "Email address"
.BCC = "Email address"
.Subject = "Monthly sales for 2021"
.Body = "Hello, please check and read this document. "
.Attachments.Add Wb2.FullName
.Display
'.Send
End With
Wb2.Close
Kill FilePath & FileName & xFile
Set OutlookMail = Nothing
Set OutlookApp = Nothing
Ws.Delete
Application.DisplayAlerts = True
Application.ScreenUpdating = True
End Sub
Anmärkningar:
3. tryck på F5 nyckel för att köra koden. I dök upp Kutools för Excel i dialogrutan väljer du det cellintervall du behöver skicka som en bilaga i ett e-postmeddelande och klickar sedan OK. Se skärmdump:
Då skapas ett Outlook-e-postmeddelande automatiskt. Och cellintervallet du valde i kalkylbladet sparas som en Excel-arbetsbok och bifogas i meddelandefönstret. Se skärmdump:
4.2 Skicka e-post när en knapp klickas i Excel
Om du behöver klicka på en kommandoknapp för att utlösa ett makro för att skicka ett e-postmeddelande från Excel, till exempel, skicka den aktuella arbetsboken som en bilaga till andra genom att klicka på en kommandoknapp i kalkylbladet. Du kan följa stegen som följer för att få det gjort.
1. klick Utvecklare > Insert > Kommandoknapp (ActiveX-kontroll). Rita sedan en kommandoknapp i kalkylbladet.
tips: Om du redan har en kommandoknapp, hoppa över det här steget.
2. tryck på andra + F11 nycklar för att öppna Microsoft Visual Basic för applikationer fönster. Klicka på i fönstret Insert > Modue, klistra sedan in VBA-koden (koden som används för att e-posta den aktuella arbetsboken som en bilaga från Excel) i fönstret Modul (Kod).
Anmärkningar: Här är namnet på makrot du skapade i steg 2 Skicka arbetsbok.
3. tryck på andra + Q för att stänga Microsoft Visual Basic för applikationer fönster.
4. Nu måste du tilldela makrot till kommandoknappen. Högerklicka på kommandoknappen, välj Visa kod från högerklick-menyn.
5. Sedan Microsoft Visual Basic för applikationer fönstret dyker upp kan du se följande två rader listade i Blad (kod) fönster.
Private Sub CommandButton1_Click()
End Sub
6. Ange namnet på det befintliga makrot i underproceduren för kommandoknappen.
7. tryck på andra + Q för att stänga Visual Basic Editor, och klicka Utvecklare > Designläge för att stänga av designläget.
Nu kan du klicka på kommandoknappen för att skicka ett e-postmeddelande med den aktuella arbetsboken som en bilaga i e-postmeddelandet.
4.3 Skicka e-post från ett angivet e-postkonto
Normalt när du startar ett e-postmeddelande från Excel med VBA-kod är avsändarens e-postkonto standardkontot i Outlook. Anta att du har konfigurerat flera e-postkonton i din Outlook och vill använda ett visst konto för att skicka e-postmeddelanden från Excel istället för att använda standardkontot. Följande VBA-kod kan hjälpa.
Följande koder är nödvändiga i detta fall.
VBA-kod 1:
Dim OutlookMail As Outlook.MailItem
VBA-kod 2:
For Each xAccount In OutlookApp.Session.Accounts
If VBA.LCase(xAccount.SmtpAddress) = VBA.LCase("") Then 'Specify your email account here
OutlookMail.SendUsingAccount = xAccount
End If
Next
Hur använder man ovanstående VBA-kod?
I det här exemplet kommer vi att ange ett visst e-postkonto för att skicka den aktuella arbetsboken som en bilaga från Excel. Vänligen gör enligt följande.
1. tryck på andra + F11 nycklar. I den Microsoft Visual Basic för applikationer fönstret klickar verktyg > Referensprojekt. Och kolla sedan Microsoft Outlook 16.0 Objektbibliotek lådan och klicka OK i Referenser - VBAProject dialog ruta.
2. klick Insert > Modulerna. Klistra sedan in följande VBA-kod i Modul (kod) fönster.
VBA-kod: Skicka den aktuella arbetsboken som en e-postbilaga från Excel via ett angivet Outlook-konto
Sub SendWorkBook()
'Update by Extendoffice 20220809
Dim OutlookApp As Object
Dim OutlookMail As Outlook.MailItem 'important! Here can’t be declared as Object
Dim xAccount As Account
Set OutlookApp = CreateObject("Outlook.Application")
Set OutlookMail = OutlookApp.CreateItem(olMailItem)
On Error Resume Next
'The following lines helps to specify a certian email account
For Each xAccount In OutlookApp.Session.Accounts
If VBA.LCase(xAccount.SmtpAddress) = VBA.LCase("") Then 'Specify your email account here
OutlookMail.SendUsingAccount = xAccount
End If
Next
'End
With OutlookMail
.To = ""
.CC = "Email Address"
.BCC = "Email Address"
.Subject = "kte feature"
.Body = "Hello, please check and read this document, thank you."
.Attachments.Add Application.ActiveWorkbook.FullName
.Display
'.Send
End With
Set OutlookMail = Nothing
Set OutlookApp = Nothing
End Sub
3. tryck på F5 nyckel för att köra koden. Sedan dyker ett Outlook-e-postmeddelande upp, du kan se att Från fältet fylls i med det e-postkonto du angav i koden.
4.4 Skicka ett e-postmeddelande när ett datum har nåtts
Om du behöver skicka ett e-postmeddelande baserat på ett specifikt förfallodatum, till exempel, som visas i skärmdumpen nedan, finns det en projekttabell, när förfallodatumet i intervallet E2:E7 är lika med eller mindre än 7 dagar från idag (förutsatt att det aktuella datumet är 2022/8/4), kommer ett e-postmeddelande att skickas automatiskt till motsvarande projektledare och meddela dem att projektet är på väg att löpa ut.
1. I kalkylbladet innehåller projekttabellen, högerklicka på arkfliken och klicka Visa kod från högerklickmenyn.
2. I öppningen Microsoft Visual Basic för applikationer fönstret, klistra in följande VBA-kod i Blad (kod) fönster.
VBA-kod: Skicka automatiskt ett e-postmeddelande när ett förfallodatum är uppnått
Public Sub SendMailDueDate()
'Updated by Extendoffice 20220804
Dim xRgDate As Range
Dim xRgSend As Range
Dim xRgText As Range
Dim xRgDone As Range
Dim xOutApp As Object
Dim xMailItem As Object
Dim xLastRow As Long
Dim vbCrLf As String
Dim xMailBody As String
Dim xRgDateVal As String
Dim xRgSendVal As String
Dim xMailSubject As String
Dim i As Long
On Error Resume Next
Set xRgDate = Range("E2:E7") 'Please reference the due date column range
If xRgDate Is Nothing Then Exit Sub
Set xRgSend = Range("C2:C7") 'Please reference the email addresses column range
If xRgSend Is Nothing Then Exit Sub
Set xRgText = Range("D2:D7") 'Please reference the remark column range (the remark used to notify project leaders of the expiration of the project)
If xRgText Is Nothing Then Exit Sub
xLastRow = xRgDate.Rows.Count
Set xRgDate = xRgDate(1)
Set xRgSend = xRgSend(1)
Set xRgText = xRgText(1)
Set xOutApp = CreateObject("Outlook.Application")
For i = 1 To xLastRow
xRgDateVal = ""
xRgDateVal = xRgDate.Offset(i - 1).Value
If xRgDateVal <> "" Then
If CDate(xRgDateVal) - Date <= 7 And CDate(xRgDateVal) - Date > 0 Then
xRgSendVal = xRgSend.Offset(i - 1).Value
xMailSubject = xRgText.Offset(i - 1).Value & " on " & xRgDateVal
vbCrLf = "
"
xMailBody = ""
xMailBody = xMailBody & "Dear " & xRgSendVal & vbCrLf
xMailBody = xMailBody & "Remark : " & xRgText.Offset(i - 1).Value & vbCrLf
xMailBody = xMailBody & ""
Set xMailItem = xOutApp.CreateItem(0)
With xMailItem
.Subject = xMailSubject
.To = xRgSendVal
.CC = "Email address"
.BCC = "Email address"
.HTMLBody = xMailBody
.Display
'.Send
End With
Set xMailItem = Nothing
End If
End If
Next
Set xOutApp = Nothing
End Sub
Anmärkningar: I koden,
3. tryck på F5 nyckel för att köra koden. Sedan, om utgångsdatumet matchar villkoren, kommer motsvarande e-post att skapas. I det här fallet kommer två e-postmeddelanden att skapas som visas i skärmdumpen nedan.
5. Ett praktiskt verktyg som hjälper dig att enkelt skicka e-post från Excel
Om du är en VBA-nybörjare kanske ovanstående metoder inte är lätta för dig att hantera. Här rekommenderar vi Kutools för ExcelÄr Skicka e-mail funktion, med den här funktionen kan du enkelt skicka e-postmeddelanden från Excel med bara flera klick. Vänligen gör enligt följande.
Innan du ansöker Kutools för ExcelBer ladda ner och installera det först.
5.1 Skapa enkelt en e-postlista som innehåller de e-postfält du behöver
Innan du använder funktionen Skicka e-post måste du skapa en e-postlista som innehåller de e-postfält du behöver. Här kan funktionen Skapa e-postlista hjälpa till.
1. klick Kutools Plus > Skapa e-postlista.
2. I öppningen Skapa e-postlista fönstret måste du konfigurera enligt följande.
Sedan skapas ett exempel på en e-postlista enligt skärmdumpen nedan.
3. Nu måste du ersätta originaldata i provet med dina egna fältdata.
Nu har du skapat en e-postlistatabell. Vänligen fortsätt att tillämpa Skicka e-mail funktion för att skicka e-postmeddelanden från Excel baserat på de fält du skapat.
Om du vill ha en gratis provperiod (30 dagar) av det här verktyget, klicka för att ladda ner den, och gå sedan till för att tillämpa operationen enligt ovanstående steg.
5.2 Skicka enkelt e-postmeddelanden inklusive fälten du skapade i e-postlistan
Efter att ha skapat e-postlistan (klicka för att veta hur) som innehåller de fält du kan behöva i dina e-postmeddelanden, kan du nu skicka e-postmeddelanden från Excel med dessa fält.
1. Välj hela e-postlistan, klicka Kutools Plus > Skicka e-mail.
2. I Skicka e-mail dialogrutan, gör följande konfiguration.
3. Sedan a Kutools för Excel dialogrutan dyker upp för att berätta hur många e-postmeddelanden som skickas, klicka på OK för att stänga denna dialogruta.
tips: Du kan gå till Skickade föremål mapp i din Outlook för att kontrollera e-postmeddelandena du skickade.
5.3 Skicka enkelt e-postmeddelanden med HTML-text (inklusive hyperlänk, bild, etc.)
Den här funktionen Skicka e-post låter dig bygga ett html-e-postmeddelande, som inkluderar hyperlänk, bild, olika teckenstorlekar och teckensnittsfärger, etc.
Efter skapa en e-postlista som innehåller de e-postfält du behöver,
När du konfigurera dialogrutan Skicka e-post, kan du göra kroppsinnehållet rikt genom att använda alternativen i verktygsfältet.
Se skärmdumpen nedan:
5.4 Infoga enkelt Outlook standardsignatur när du skickar e-post
I metoden ovan visade vi en VBA-kod som hjälper dig att skicka e-postmeddelanden med Outlooks standardsignatur. Här med funktionen Skicka e-post behöver du bara markera ett alternativ, sedan kommer Outlooks standardsignatur att infogas i e-postmeddelanden du skickat från Excel.
Efter skapa en e-postlista som innehåller de e-postfält du behöver,
När konfigurera dialogrutan Skicka e-postmåste du klicka Tillbehör > Använd Outlooks signaturinställningar.
Anmärkningar: Se till att det visas en bock före alternativet Använd Outlooks signaturinställningar.
När mottagarna tar emot e-postmeddelandet kan de se Outlooks standardsignatur i slutet av e-postmeddelandet.
5.5 Skicka enkelt e-post från ett angivet e-postkonto
För att använda ett visst e-postkonto för att skicka e-postmeddelanden från Excel istället för att använda standardkontot, kan funktionen Skicka e-post också hjälpa till att enkelt få det gjort.
Efter skapa en e-postlista som innehåller de e-postfält du behöver,
När konfigurera dialogrutan Skicka e-postmåste du klicka Tillbehör > Skickat från, klicka sedan på det e-postkonto du behöver skicka e-post från.
Anmärkningar: När du har valt e-postkontot visas en bock före det.
Klicka här. för att veta mer om den här funktionen Skicka e-post.
Om du vill ha en gratis provperiod (30 dagar) av det här verktyget, klicka för att ladda ner den, och gå sedan till för att tillämpa operationen enligt ovanstående steg.
Sammanfattningsvis, att skicka e-postmeddelanden från Excel är ganska användbart i vårt dagliga arbete. Den här artikeln täcker mer omfattande ämnen om e-postmeddelanden som skickas från Excel, om det finns andra ämnen eller enklare lösningar, vänligen lämna en kommentar för att meddela mig.
Bästa kontorsproduktivitetsverktyg
Uppgradera dina Excel-färdigheter med Kutools för Excel och upplev effektivitet som aldrig förr. Kutools för Excel erbjuder över 300 avancerade funktioner för att öka produktiviteten och spara tid. Klicka här för att få den funktion du behöver mest...
Fliken Office ger ett flikgränssnitt till Office och gör ditt arbete mycket enklare
- Aktivera flikredigering och läsning i Word, Excel, PowerPoint, Publisher, Access, Visio och Project.
- Öppna och skapa flera dokument i nya flikar i samma fönster, snarare än i nya fönster.
- Ökar din produktivitet med 50 % och minskar hundratals musklick för dig varje dag!