Hoppa till huvudinnehåll

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 ]

(Klicka på valfri rubrik i innehållsförteckningen nedan eller till höger för att navigera till motsvarande kapitel.)

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

Länklokalisering (obligatoriskt): Sökvägen och filnamnet till dokumentet som ska öppnas;
Tips: I den här handledningen ska alla fält vi behöver för ett e-postmeddelande, såsom mottagarens e-postadress, kopia-mottagare, ämnesraden och brödtexten, läggas i det första argumentet "länkplats".
Vänligt namn (valfritt): Det hoppvärde som visas i cellen.

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.

"?cc=" & C2
där C2 innehåller cc-mottagarens e-postadress.

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.

"&subject="& D2
där C2 innehåller e-postämnet.

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.

"&body="& E2
där E2 innehåller brödtexten i e-postmeddelandet.

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.

2.1) Välj E-postadress i den vänstra rutan.
2.2) I Text som ska visas textbox, skriv in texten du vill visa i cellen;
tips: Du kan inte använda cellreferenser i den här dialogrutan, så du bör skriva in e-postfälten manuellt enligt följande.
2.3) I E-postadress textrutan måste du skriva in följande e-postadresser.
mailto:e-postadress
Vänligen ersätt texten "e-postadress” med din riktiga e-postadress. Om du har mer än en e-postadress, separera dem med semikolon.
2.4) I Ämne textrutan kan du ange ditt e-postämne och din e-posttext här. Vänligen konfigurera enligt följande:
Email subject&body=E-posttext
I det här fallet skriver jag in Månadsrea&body=Hej,%0AEmail mottagen.
> där ämnet är Månadsrea;
och
> e-posttexten är:
Hej,
E-post mottaget. (%0A är vagnretur-teckenkoden som kan kännas igen av Outlook)
2.5) Klicka på OK knappen för att spara hyperlänken. Se skärmdump:

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) Med den här metoden var du tvungen att skapa e-posthyperlänkarna manuellt.
2) Du kan inte lägga till Cc-fältet i e-postmeddelanden med den här metoden. Så om du behöver Cc-fältet, lägg till det från det nya öppningsfönstret för e-post.

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:

1) Om du inte vill att ovanstående dialogruta dyker upp och vill ange intervallet av e-postadresser i koden direkt, vänligen ersätt denna rad:
Set xRg = Application.InputBox("Välj adresslistan:", "Kutools for Excel", xTxt, , , , , 8)
med
Ställ in xRg = Range("A2:A7")
2) Du kan ange ditt eget e-postämne och brödtext på följande rader:
.Subject = "Test"
.Body = "Dear " _
        & vbNewLine & vbNewLine & _
        "This is a test email " & _
        "sending in Excel"
3) För att skicka e-postmeddelandet direkt utan att öppna följande nya meddelandefönster, måste du ersätta denna rad:
.Visa
med
.Skicka

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:

1) Om du inte vill att ovanstående dialogruta dyker upp och vill ange intervallet av e-postadresser i koden direkt, vänligen ersätt denna rad:
Set xRg = Application.InputBox("Välj adresslistan:", "Kutools for Excel", xTxt, , , , , 8)
med
Ställ in xRg = Range("A2:A7")
2) Du kan ange ditt eget e-postämne och brödtext på följande rader:
.Subject = "Test"
.Body = "Dear " _
        & vbNewLine & vbNewLine & _
        "This is a test email " & _
        "sending in Excel"
3) För att skicka e-postmeddelandet direkt utan att öppna följande meddelandefönster, måste du byta ut den här raden:
.Visa
med
.Skicka

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:

1) I raden .Till = , vänligen byt ut med din egen mottagares e-postadress;
2) Ändra e-postämnet och e-posttexten separat i raden .Subject = "test" och .HTMLBody = "test";
3) Du kan lägga till kopia och hemlig kopia efter behov. Lägg bara till följande två rader under raden.Till = .
.CC = "e-postadress"
.BCC = "e-postadress"

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:

1) I raden .Till = , vänligen byt ut med den riktiga mottagarens e-postadress. Om du behöver mer än en e-postadress, separera dem med semikolon.
2) Ändra e-postämnet och e-posttexten separat i raden .Subject = "kte-funktioner" och .Body = " Kontrollera och läs detta dokument.";
3) På följande två rader:
.CC = "e-postadress"
.BCC = "e-postadress"
Om du vill lägga till kopia och hemlig kopia, byt ut texten "e-postadress” i raderna med de e-postadresser du behöver.
Om du inte behöver cc- och bcc-mottagare, lägg bara till en apostrof ' före varje rad.

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:

1) I raden .Till = , vänligen byt ut med den riktiga mottagarens e-postadress. Om du behöver mer än en e-postadress, separera dem med semikolon.
2) Ändra e-postämnet och e-posttexten separat i raden .Subject = "kte-funktioner" och .Body = " Kontrollera och läs detta dokument.";
3) På följande två rader:
.CC = "e-postadress"
.BCC = "e-postadress"
Om du vill lägga till kopia och hemlig kopia, byt ut texten "e-postadress” i raderna med de e-postadresser du behöver.
Om du inte behöver cc- och bcc-mottagare, lägg bara till en apostrof ' före varje rad.

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:

1) I raden .Till = , vänligen byt ut med den riktiga mottagarens e-postadress. Om du behöver mer än en e-postadress, separera dem med semikolon.
2) Ändra e-postämnet och e-posttexten separat i raden .Subject = "test" och .Body = "test";
3) På följande två rader:
.CC = "E-postadress"
.BCC = "E-postadress"
Om du vill lägga till kopia och hemlig kopia, byt ut texten "E-postadress” i raderna med de e-postadresser du behöver.
Om du inte behöver cc- och bcc-mottagare, lägg bara till en apostrof ' före varje rad.
4) Namnet på PDF-filen kommer att vara detsamma som namnet på den ursprungliga arbetsboken. Och tiden du kör koden kommer också att läggas till i arbetsbokens namn. Om du inte behöver lägga till tidsstämpeln i filnamnet, vänligen ta bort & Format(Nu, "dd-mmm-åå h-mm-ss") från följande rad.
Filnamn = Left(Wb.Name, (InStrRev(Wb.Name, ".", -1, vbTextCompare) - 1)) & Format(Nu, "dd-mmm-yy h-mm-ss") & ".pdf "

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:

1) I raden .Till = , vänligen byt ut med den riktiga mottagarens e-postadress. Om du behöver mer än en e-postadress, separera dem med semikolon.
2) Ändra e-postämnet och e-posttexten separat i raden .Subject = "test" och .Body = "test";
3) På följande två rader:
.CC = "E-postadress"
.BCC = "E-postadress"
Om du vill lägga till kopia och hemlig kopia, byt ut texten "E-postadress” i raderna med de e-postadresser du behöver.
Om du inte behöver cc- och bcc-mottagare, lägg bara till en apostrof ' före varje rad.
4) Namnet på PDF-filen kommer att vara: namnet på den ursprungliga arbetsboken_namnet på det ursprungliga arbetsbladet. I det här fallet kommer namnet på PDF:en att vara Monthly sales_sales report.

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:

1) Byt ut .Kropp linje med VBA-kod 1;
2) Flytta linjen .Visa under linjen Med OutlookMail (eller med xMailOut i andra koder). Se skärmdump:

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:

1) D6 är cellen vars värde du kommer att skicka ett e-postmeddelande baserat på.
2) > 10000 är villkoret, vilket innebär att ett e-postmeddelande kommer att skickas när värdet i D6 är större än 10000 XNUMX.
3) Range(“D6”) på följande rad betyder det att e-postmeddelandet kommer att referera till värdet i D6.
xMailBody = "Hi boss" & vbNewLine & vbNewLine & _
"Total sales of over $10,000 in January: " & Range("D6")
4) I raden .Till = , vänligen byt ut med den riktiga mottagarens e-postadress. Om du behöver mer än en e-postadress, separera dem med semikolon.
5) Ändra e-postämnet i raden .Subject = "test".
6) På följande två rader:
.CC = "E-postadress"
.BCC = "E-postadress"
Om du vill lägga till kopia och hemlig kopia, byt ut texten "E-postadress” i raderna med de e-postadresser du behöver.
Om du inte behöver cc- och bcc-mottagare, lägg bara till en apostrof ' före varje rad.

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,

1) B14 i koden betyder att när värdet på cell B14 ändras kommer du att skicka ett e-postmeddelande.
2) I raden .Till = , vänligen byt ut med den riktiga mottagarens e-postadress. Om du behöver mer än en e-postadress, separera dem med semikolon.
3) Ändra e-postämnet i raden .Subject = "Arbetsblad ändrat".
4) På följande två rader:
.CC = "E-postadress"
.BCC = "E-postadress"
Om du vill lägga till kopia och hemlig kopia, byt ut texten "E-postadress” i raderna med de e-postadresser du behöver.
Om du inte behöver cc- och bcc-mottagare, lägg bara till en apostrof ' före varje rad.

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,

1) I raden .Till = , vänligen byt ut med den riktiga mottagarens e-postadress. Om du behöver mer än en e-postadress, separera dem med semikolon.
2) Ändra e-postämne och brödtext separat i raderna .Subject = "Arbetsboken har uppdaterats" och .Body = "Hej," & Chr(13) & Chr(13) & "Filen är nu uppdaterad.".
3) På följande två rader:
.CC = "E-postadress"
.BCC = "E-postadress"
Om du vill lägga till kopia och hemlig kopia, byt ut texten "E-postadress” i raderna med de e-postadresser du behöver.
Om du inte behöver cc- och bcc-mottagare, lägg bara till en apostrof ' före varje rad.

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.

1) Klicka Fil > Spara som, och välj sedan en mapp för att spara filen.
2) I Spara som dialogrutan, byt namn på filen som du behöver i Filnamn textruta, välj Excel Macro-Enabled Workbook i Spara som rullgardinsmenyn och slutligen klicka på Save knapp. Se skärmdump:


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:

1) I VBA-kod 1, Fredag på följande rad betyder att e-postmeddelandet kommer att skickas automatiskt varje fredag;
Om Weekday(Datum) = vbFriday Då
2) I VBA-kod 1 och VBA-kod 2, tiden 09:00:00 innebär att e-postmeddelandet kommer att skickas klockan 9 en viss dag.
Du kan ändra dag och tid efter behov.
3) När koden körs skapas ett e-postmeddelande. Om du inte vill öppna meddelandefönstret och behöver skicka det direkt, ta bort raden .Visa från VBA-koden 1 och ta bort apostrof före linjen '.Skicka.

4. Spara koderna och spara sedan arbetsboken som en Excel-makroaktiverad arbetsbok enligt följande.

4.1) Klicka Fil > Spara som, och välj sedan en mapp för att spara filen.
4.2) I Spara som dialogrutan, byt namn på filen som du behöver i Filnamn textruta, välj Excel Macro-Enabled Workbook i Spara som rullgardinsmenyn och slutligen klicka på Save knapp. Se skärmdump:

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,

1) I raden .Till = , vänligen byt ut med den riktiga mottagarens e-postadress. Om du behöver mer än en e-postadress, separera dem med semikolon.
2) På följande två rader:
.CC = "E-postadress"
.BCC = "E-postadress"
Om du vill lägga till kopia och hemlig kopia, byt ut texten "E-postadress” i raderna med de e-postadresser du behöver.
Om du inte behöver cc- och bcc-mottagare, lägg bara till en apostrof ' före varje rad.

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:

1) I raden .Till = , vänligen byt ut med den riktiga mottagarens e-postadress. Om du behöver mer än en e-postadress, separera dem med semikolon.
2) Ändra e-postämnet och e-posttexten separat i raden .Subject = "Månadsförsäljning för 2021" och .Body = "Hej, kolla och läs detta dokument.";
3) På följande två rader:
.CC = "e-postadress"
.BCC = "e-postadress"
Om du vill lägga till kopia och hemlig kopia, byt ut texten "e-postadress” i raderna med de e-postadresser du behöver.
Om du inte behöver cc- och bcc-mottagare, lägg bara till en apostrof ' före varje rad.

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).

Klicka här för att få koden.

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?

1) I din egen kod måste du ersätta raden som "Dimma OutlookMail som objekt” med VBA-kod 1;
2) Lägg till VBA-koden 2 under raden "On Error Resume Next" i din kod. Ange sedan den e-postadress du ska använda för att skicka e-postmeddelandet i VBA-kod 2.

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,

1) I följande rader, E2: E7 innehåller förfallodatum som du kommer att skicka e-postmeddelanden baserat på. C2: C7 innehåller de e-postadresser du kommer att skicka e-post till. Och D2: D7 innehåller de anmärkningar du kommer att lägga till i e-posttexten för att meddela mottagarna att projektet är på väg att löpa ut. Du kan ändra intervallen efter behov.
Ställ in xRgDate = Range("E2:E7")
Ställ in xRgSend = Range("C2:C7")
Ställ in xRgText = Range("D2:D7")
2) Följande rad betyder att förfallodagen måste vara större än 1 dag och lika med eller mindre än 7 dagar från idag. Du kan ändra det efter behov.
Om CDate(xRgDateVal) - Datum <= 7 Och CDate(xRgDateVal) - Datum > 0 Då
3) I raden .Till = , vänligen byt ut med den riktiga mottagarens e-postadress. Om du behöver mer än en e-postadress, separera dem med semikolon.
4) Ändra e-postämnet i raden .Subject = "Arbetsblad ändrat".
5) På följande två rader:
.CC = "E-postadress"
.BCC = "E-postadress"
Om du vill lägga till kopia och hemlig kopia, byt ut texten "E-postadress” i raderna med de e-postadresser du behöver.
Om du inte behöver cc- och bcc-mottagare, lägg bara till en apostrof ' före varje rad.

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.

2.1) I Kolumner för e-postlista sektionen, kontrollera fälten du behöver i din e-post;
2.2) I Bifoga filer avsnitt, kontrollera en eller flera bilagor du kan behöva;
2.3) Ange en plats för att placera e-postlistan;
2.4) Klicka på Skapa knapp. Se skärmdump:

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.

2.1) Fält fylls i i dialogrutan för varje fält automatiskt av de fält du angav i e-postlistan;
tips: Om du inte behöver ett visst fält just nu, välj ett tomt alternativ i rullgardinsmenyn.
2.2) Sätt in platshållare (valfritt): Om du behöver infoga variabel information i en e-posttext.
Till exempel kan du behöva skicka ut ett e-postmeddelande till flera mottagare med ett personligt namn för var och en, du måste placera markören i e-posttexten där du behöver infoga platshållaren, välj fältet "E: Förnamn” (eller annat namnfält i din e-postlista) och klicka sedan på Infoga platshållare knapp;
När mottagarna får e-postmeddelandet förblir e-posttexten densamma men namnen är unika för var och en.
2.3) Skriv e-posttexten som du behöver;
2.4) Se till att Skicka e-post via Outlook rutan är markerad;
2.5) Klicka på Skicka knapp. Se skärmdump:

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

🤖 Kutools AI Aide: Revolutionera dataanalys baserat på: Intelligent utförande   |  Generera kod  |  Skapa anpassade formler  |  Analysera data och generera diagram  |  Anropa Kutools funktioner.
Populära funktioner: Hitta, markera eller identifiera dubbletter   |  Ta bort tomma rader   |  Kombinera kolumner eller celler utan att förlora data   |   Rund utan formel ...
Superuppslag: Flera kriterier VLookup    VLookup med flera värden  |   VSök över flera ark   |   Fuzzy Lookup ....
Avancerad rullgardinslista: Skapa snabbt en rullgardinslista   |  Beroende rullgardinslista   |  Flervals-rullgardinslista ....
Kolumnhanterare: Lägg till ett specifikt antal kolumner  |  Flytta kolumner  |  Växla synlighetsstatus för dolda kolumner  |  Jämför intervall och kolumner ...
Utvalda funktioner: Rutnätsfokus   |  Designvy   |   Stor formelbar    Arbetsbok & Bladhanterare   |  Resursbibliotek (Automatisk text)   |  Datumväljare   |  Kombinera arbetsblad   |  Kryptera/Dekryptera celler    Skicka e-postmeddelanden efter lista   |  Superfilter   |   Specialfilter (filtrera fet/kursiv/genomstruken...) ...
Topp 15 verktygssatser12 text verktyg (lägga till text, Ta bort tecken, ...)   |   50+ Diagram Typer (Gantt Chart, ...)   |   40+ Praktiskt Formler (Beräkna ålder baserat på födelsedag, ...)   |   19 Införande verktyg (Infoga QR-kod, Infoga bild från sökväg, ...)   |   12 Konvertering verktyg (Siffror till ord, Valutaväxling, ...)   |   7 Slå ihop och dela verktyg (Avancerade kombinera rader, Dela celler, ...)   |   ... och mer

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...

Beskrivning


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!
Comments (0)
No ratings yet. Be the first to rate!
There are no comments posted here yet
Please leave your comments in English
Posting as Guest
×
Rate this post:
0   Characters
Suggested Locations