Gå til hovedindhold

Excel tutorial – Send e-mails fra Excel

Normalt bruger vi e-mail-klienter som Outlook, Gmail osv. til at sende e-mails. Men mange mennesker gemmer data i Excel-projektmapper og har brug for at sende nogle data med til andre, mens de arbejder med dem. Derfor skal de sende e-mails direkte fra Excel-projektmappe, hvilket sparer tid til at betjene en e-mail-klient. Denne trin-for-trin vejledning viser dig, hvordan du sender e-mails fra Excel under forskellige forhold.

Bemærk: Før du anvender følgende metoder, skal du konfigurere en Outlook-e-mail-klient på din computer og indstille den som din standard-e-mail-klient.

Indholdsfortegnelse: [ Skjule ]

(Klik på en hvilken som helst overskrift i indholdsfortegnelsen nedenfor eller til højre for at navigere til det tilsvarende kapitel.)

1. Det grundlæggende i at sende e-mails fra Excel

Dette afsnit introducerer det grundlæggende i at sende e-mails fra Excel.

1.1 Send e-mails fra Excel med Excel indbyggede funktioner

Hvis du kun vil sende simple e-mails fra Excel, inklusive kun felterne Til, Emne, Cc og brødtekst. De indbyggede funktioner i Excel kan hjælpe.


1.1.1 Send e-mail fra Excel med en formel

Som vist i tabellen nedenfor, for at sende forskellige e-mails fra Excel baseret på de givne felter, kan du bruge cellereferencerne for de givne felter til at oprette forskellige hyperlinkformler for at få det gjort. Efter oprettelse af e-mail-hyperlinks kan du klikke på det hyperlink, du skal bruge for at sende en e-mail automatisk.

Bemærk: Hvis der er mere end én modtager i felterne Til eller Cc, skal du adskille dem med semikolon.

Dette afsnit er opdelt i fire dele for at vise dig trinene til at tilføje e-mailadresse, Cc-modtager(e), emnelinje og brødtekst separat til hyperlinkformlen. Gør venligst som følger.

Syntaksen og argumenterne for HYPERLINK funktion er som følger.

Syntaks

HYPERLINK(link_location, [friendly_name])

argumenter

Link_placering (påkrævet): Stien og filnavnet til det dokument, der skal åbnes;
Tips: I denne vejledning skal alle de felter, vi skal bruge til en e-mail, såsom modtagerens e-mailadresse, Cc-modtageren(e), emnelinjen og brødteksten, sættes i det første argument "link_location".
Venligt_navn (valgfrit): Den springværdi, der vises i cellen.

1.1.1.1 Tilføj e-mailadresse til hyperlinkformlen

Her bruger vi "mailto:" som en del af formlen for at tilføje en e-mail-modtager. I dette eksempel er den første modtagers e-mailadresse i celle B2, så vi skal tilføje "mailto:" og henvise til celle B2.

"mailto:"&B2

1. Vælg en celle for at vise hyperlinket. I dette tilfælde vælger jeg cellen F2.

2. Indtast derefter følgende formel i den.

=HYPERLINK("mailto:"&B2)

Bemærk: Hvis du trykker på Indtast tasten, oprettes et hyperlink som vist på skærmbilledet nedenfor. Når du klikker på linket, oprettes en Outlook-e-mail, og modtagerens e-mailadresse vil automatisk blive udfyldt i Til-feltet.

Modtagerens e-mailadresse er nu tilføjet til hyperlinkformlen. Fortsæt venligst med følgende trin for at tilføje emnelinjen, Cc-modtager(e) og brødtekst efter behov.


1.1.1.2 Tilføj Cc-modtager(e) til Hyperlink-formlen

For at tilføje Cc-modtageren(e) til Hyperlink-funktionen, skal du tilføje "?cc=" som en del af formlen som følger.

"?cc=" & C2
hvor C2 indeholder cc-modtagerens e-mailadresse.

Formlen i celle F2 skal være som følger:

=HYPERLINK("mailto:" & B2 & "?cc=" & C2)


1.1.1.3 Tilføj emnelinje til hyperlinkformlen

For at tilføje emnelinjen til Hyperlink-funktionen skal du tilføje "&emne=" som en del af formlen som følger.

"&subject="& D2
hvor C2 indeholder e-mailens emne.

Formlen i celle F2 skulle nu se sådan ud:

=HYPERLINK("mailto:" & B2 & "?cc=" & C2 & "&subject="& D2)


1.1.1.4 Tilføj brødtekst med linjeskift til hyperlinkformlen

Det sidste trin er at tilføje brødteksten til hyperlinkformlen. Som du kan se i eksemplet, er to linjer tekst i E2 adskilt af et linjeskift, og du ønsker at beholde linjeskiftet i e-mailens brødtekst. Genkender Outlook linjeskiftet i denne situation? Lad os se efter det.

For at tilføje brødteksten til hyperlinkformlen skal du tilføje “&body=” som en del af formlen som følger.

"&body="& E2
hvor E2 indeholder brødteksten i e-mailen.

Formlen i celle F2 vises nu som følger:

=HYPERLINK("mailto:" & B2 & "?cc=" & C2 & "&subject="& D2 & "&body="& E2)

Bemærk: Hvis du trykker på Indtast tast og klik på linket. Du kan se i den nye e-mail, at indholdet i e-mail-brødteksten vises i samme linje.

For at vise e-mail-brødteksten i separate linjer skal du ændre celleindholdet ved at tilføje vognretur-tegnkoden %0A til teksten, hvor du skal indsætte et linjeskift. Se skærmbillede:


1.1.1.5 Angiv den tekst, der skal vises for hyperlinket

I ovenstående trin afsluttede vi Link_location-argumentet med e-mail-felter. Her i dette afsnit skal vi afslutte det næste argument [venligt_navn].

I dette tilfælde vil jeg have hyperlinkcellen til at vise teksten som "E-mail til xx”, hvor xx er modtagerens navn i A2. Så formlen i F2 skal ændres til:

=HYPERLINK("mailto:" & B2 & "?cc=" & C2 & "&subject="& D2 & "&body="& E2, "Email to "&A2)

Tryk Indtast nøgle for at få resultatet.

Vælg denne formelcelle og træk dens Håndtag til automatisk udfyldning ned for at oprette andre e-mail-hyperlinks. Se skærmbillede:


1.1.2 Send e-mail fra Excel med Hyperlink-funktionen

Bortset fra at bruge ovenstående hyperlinkformel, kan du manuelt oprette et e-mail-hyperlink med indsatte Hyperlink funktion i Excel. Dette afsnit vil vise dig trinene.

1. Højreklik på en e-mail, hvor du vil indsætte et hyperlink, vælg Link fra højreklikmenuen.

2. I popping up Indsæt hyperlink dialogboks, skal du konfigurere som følger.

2.1) Vælg Email adresse i venstre rude.
2.2) I Tekst, der skal vises tekstboks, indtast den tekst, du vil have vist i cellen;
Tips: Du kan ikke bruge cellereferencer i denne dialogboks, så du skal indtaste e-mail-felterne manuelt som følger.
2.3) I E-mail-adresse tekstboks, skal du indtaste følgende e-mailadresser.
mailto:e-mailadresse
Erstat venligst teksten "e-mail adresse” med din rigtige e-mailadresse. Hvis du har mere end én e-mailadresse, skal du adskille dem med semikolon.
2.4) I Emne tekstboks, kan du angive dit e-mailemne og din e-mailtekst lige her. Konfigurer venligst som følger:
E-mail emne&body=E-mail brødtekst
I dette tilfælde skriver jeg ind Månedligt udsalg&body=Hej,%0AEmail modtaget.
> hvor emnet er Månedligt salg;
,
> e-mailens brødtekst er:
Hej,
E-mail modtaget. (%0A er vognretur-tegnkoden, der kan genkendes af Outlook)
2.5) Klik på OK knappen for at gemme hyperlinket. Se skærmbillede:

Når du klikker på hyperlinket, oprettes en Outlook-e-mail med de angivne felter Til, Emne og Brød som vist på skærmbilledet nedenfor.

Noter:

1) Med denne metode skulle du oprette e-mail-hyperlinks hver enkelt manuelt.
2) Du kan ikke tilføje Cc-feltet til e-mails med denne metode. Så hvis du har brug for Cc-feltet, bedes du tilføje det fra det nye åbningsvindue for e-mail.

1.2 Send e-mail til flere modtagere i celler med VBA-script

I eksemplet ovenfor kan du se flere e-mail-adresser vises i en celle, adskilt af semikolon. Hvis du har en liste over e-mailadresser som vist på skærmbilledet nedenfor og ønsker at sende en e-mail eller uafhængig e-mail til dem alle, kan følgende VBA-kode gøre dig en tjeneste.


1.2.1 Send en e-mail til flere modtagere i celler med VBA-script

1. I arbejdsarket, der indeholder alle de e-mailadresser, du vil sende e-mailen til. Tryk på andre + F11 nøgler til at åbne Microsoft Visual Basic til applikationer vindue.

2. i Microsoft Visual Basic til applikationer vindue, skal du klikke på indsatte > Modul, og indsæt derefter følgende kode i Modul (kode) vindue.

VBA-kode: Send e-mail til en liste over e-mailadresser

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. Tryk på F5 nøgle til at køre koden og en Kutools til Excel dialogboksen dukker op. Vælg listen over e-mailadresser, og klik OK.

Bemærkninger:

1) Hvis du ikke ønsker, at ovenstående dialogboks dukker op og ønsker at angive rækken af ​​e-mailadresser i koden direkte, skal du erstatte denne linje:
Indstil xRg = Application.InputBox("Vælg venligst adresselisten:", "Kutools for Excel", xTxt, , , , , 8)
med
Indstil xRg = Range("A2:A7")
2) Du kan angive dit eget e-mailemne og din egen tekst i følgende linjer:
.Subject = "Test"
.Body = "Dear " _
        & vbNewLine & vbNewLine & _
        "This is a test email " & _
        "sending in Excel"
3) For at sende e-mailen direkte uden at åbne følgende nye beskedvindue, skal du erstatte denne linje:
.Skærm
med
.Sende

Efter at have kørt koden, vises alle e-mailadresser i det valgte område i feltet Til i meddelelsesvinduet. Se skærmbillede:


1.2.2 Send separat e-mails til hver modtager angivet i celler med VBA-script

Ovenstående kode tilføjer alle e-mailadresser i det valgte område til feltet Til i meddelelsesvinduet. Hvis du vil sende e-mails til hver e-mailadresse, der er angivet i cellerne separat uden at lade dem se hinandens e-mail-adresser, kan du prøve følgende VBA-script.

1. I arbejdsarket, der indeholder alle de e-mailadresser, du vil sende e-mails til. Tryk på andre + F11 nøgler til Åbn vinduet Microsoft Visual Basic for Applications.

2. i Microsoft Visual Basic til applikationer vindue, skal du klikke på indsatte > Moduler, og indsæt derefter følgende kode i vinduet Modul (Kode).

VBA-kode: Send e-mails til hver e-mailadresse, der er angivet i cellerne 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. Klik derefter på Værktøjer > Referencer. I Referencer - VBAProject dialogboksen, find og tjek Microsoft Outlook 16.0 Objektbibliotek boks og klik derefter på OK knappen for at gemme ændringerne.

4. Tryk på F5 nøgle til at køre koden og en Kutools til Excel dialogboksen dukker op. Vælg listen over e-mailadresser, og klik OK.

Bemærkninger:

1) Hvis du ikke ønsker, at ovenstående dialogboks dukker op og ønsker at angive rækken af ​​e-mailadresser i koden direkte, skal du erstatte denne linje:
Indstil xRg = Application.InputBox("Vælg venligst adresselisten:", "Kutools for Excel", xTxt, , , , , 8)
med
Indstil xRg = Range("A2:A7")
2) Du kan angive dit eget e-mailemne og din egen tekst i følgende linjer:
.Subject = "Test"
.Body = "Dear " _
        & vbNewLine & vbNewLine & _
        "This is a test email " & _
        "sending in Excel"
3) For at sende e-mailen direkte uden at åbne følgende beskedvinduer, skal du erstatte denne linje:
.Skærm
med
.Sende

I dette eksempel er der seks e-mailadresser i det valgte område, så seks Outlook-meddelelsesvinduer oprettes automatisk med en separat e-mailadresse angivet i feltet Til som vist på skærmbilledet nedenfor.

5. Til sidst skal du klikke på Send knappen for at sende e-mailen én efter én.


2. Indsæt vedhæftede filer eller Outlook-signatur i e-mails sendt fra Excel (med VBA-scripts)

Dette afsnit vil vise dig, hvordan du indsætter vedhæftede filer eller Outlook-standardsignatur i e-mails sendt fra Excel.

2.1 Indsæt vedhæftede filer i e-mails sendt fra Excel

Her beskriver vi de forskellige tilfælde af isætning af bilag, og du kan vælge metode efter dine behov. I dette afsnit kan du lære at (klik på et af følgende link for at navigere til den tilsvarende metode):


2.1.1 E-mail en bestemt fil som en vedhæftet fil

Du kan anvende følgende VBA-kode til at e-maile en eller flere filer i en mappe som vedhæftede filer fra Excel.

1. Tryk på andre + F11 nøgler.

2. I åbningen Microsoft Visual Basic til applikationer vindue, skal du klikke på indsatte > Moduler. Indsæt derefter følgende VBA-kode i vinduet Modul (Kode).

VBA-kode: E-mail filer i en mappe som vedhæftede filer fra 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

Noter:

1) I rækken .Til = , udskift venligst med din egen modtagers e-mailadresse;
2) Skift e-mailens emne og e-mail-teksten separat i linjen .Subject = "test" , .HTMLBody = "test";
3) Du kan tilføje Cc- og Bcc-modtagere efter behov. Du skal blot tilføje følgende to linjer under linjen.Til = .
.CC = "e-mailadresse"
.BCC = "e-mailadresse"

3. Klik derefter på Værktøjer > Referencer. I Referencer - VBAProject dialogboksen, find og tjek Microsoft Outlook 16.0 Objektbibliotek boks og klik derefter på OK knappen for at gemme ændringerne.

4. Tryk på F5 nøgle for at køre koden, derefter a Gennemse vinduet dukker op, vælg venligst de filer, du skal vedhæfte i e-mailen, og klik derefter OK.

Derefter dukker et beskedvindue op. Du kan se de valgte filer vises som vedhæftede filer i feltet Vedhæftet.


2.1.2 E-mail det aktuelle regneark som en vedhæftet fil

Hvis du vil e-maile det aktuelle regneark som en vedhæftet fil fra Excel, kan du anvende VBA-scriptet i dette afsnit.

1. Tryk på andre + F11 nøgler.

2. I åbningen Microsoft Visual Basic til applikationer vindue, skal du klikke på INSERT > Moduler. Indsæt derefter følgende VBA-kode i Modul (kode) vindue.

VBA-kode: E-mail det aktuelle regneark som en vedhæftet fil

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

Bemærkninger:

1) I rækken .Til = , udskift venligst med den rigtige modtagers e-mailadresse. Hvis du har brug for mere end én e-mailadresse, bedes du adskille dem med semikolon.
2) Skift e-mailens emne og e-mail-teksten separat i linjen .Subject = "kte-funktioner" , .Body = " Tjek venligst og læs dette dokument.";
3) I følgende to linjer:
.CC = "e-mailadresse"
.BCC = "e-mailadresse"
Hvis du vil tilføje cc- og bcc-modtagere, skal du erstatte teksten "e-mail adresse” i linjerne med de e-mailadresser, du har brug for.
Hvis du ikke har brug for cc- og bcc-modtagere, skal du blot tilføje en apostrof ' før hver linje.

3. Tryk på F5 tasten for at køre koden, så gemmes det aktuelle regneark som en Excel-projektmappe og indsættes automatisk i et meddelelsesvindue som en vedhæftet fil. Se skærmbillede:

Bemærk: Den vedhæftede projektmappe, der kun indeholder det aktuelle regneark, har samme navn som den originale projektmappe. Og den tid, du kører koden, føjes også til projektmappens navn.


2.1.3 E-mail den aktuelle projektmappe som en vedhæftet fil

Efter at have lært VBA-koden til at e-maile det aktuelle regneark som en vedhæftet fil fra Excel, giver vi her et andet VBA-script til at hjælpe dig med at e-maile hele projektmappen som en vedhæftet fil. Gør venligst som følger.

1. Tryk på andre + F11 nøgler.

2. I åbningen Microsoft Visual Basic til applikationer vindue, skal du klikke på indsatte > Modul. Indsæt derefter følgende VBA-kode i vinduet Modul (Kode).

VBA-kode: E-mail den aktuelle projektmappe som en vedhæftet fil fra 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

Bemærkninger:

1) I rækken .Til = , udskift venligst med den rigtige modtagers e-mailadresse. Hvis du har brug for mere end én e-mailadresse, bedes du adskille dem med semikolon.
2) Skift e-mailens emne og e-mail-teksten separat i linjen .Subject = "kte-funktioner" , .Body = " Tjek venligst og læs dette dokument.";
3) I følgende to linjer:
.CC = "e-mailadresse"
.BCC = "e-mailadresse"
Hvis du vil tilføje cc- og bcc-modtagere, skal du erstatte teksten "e-mail adresse” i linjerne med de e-mailadresser, du har brug for.
Hvis du ikke har brug for cc- og bcc-modtagere, skal du blot tilføje en apostrof ' før hver linje.

3. Tryk på F5 tasten for at køre koden, så indsættes den aktuelle projektmappe automatisk i et meddelelsesvindue som en vedhæftet fil. Se skærmbillede:


2.1.4 E-mail hele projektmappen som en PDF-vedhæftet fil

For de fleste mennesker har de en tendens til at gemme en Excel-projektmappe som en PDF-fil og derefter sende den som en vedhæftet fil til andre. I dette afsnit vil jeg vise dig en måde at sende e-mails direkte fra Excel med den aktuelle åbne projektmappe som en PDF-vedhæftet fil uden manuelt at skulle gemme projektmappen som en PDF-fil.

1. Tryk på andre + F11 nøgler.

2. I åbningen Microsoft Visual Basic til applikationer vindue, skal du klikke på indsatte > Modul. Indsæt derefter følgende VBA-kode i vinduet Modul (Kode).

VBA-kode: E-mail hele projektmappen som en PDF-vedhæftet fil

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

Bemærkninger:

1) I rækken .Til = , udskift venligst med den rigtige modtagers e-mailadresse. Hvis du har brug for mere end én e-mailadresse, bedes du adskille dem med semikolon.
2) Skift e-mailens emne og e-mail-teksten separat i linjen .Subject = "test" , .Body = "test";
3) I følgende to linjer:
.CC = "E-mail-adresse"
.BCC = "E-mail-adresse"
Hvis du vil tilføje cc- og bcc-modtagere, skal du erstatte teksten "Email adresse” i linjerne med de e-mailadresser, du har brug for.
Hvis du ikke har brug for cc- og bcc-modtagere, skal du blot tilføje en apostrof ' før hver linje.
4) Navnet på PDF-filen vil være det samme som navnet på den originale projektmappe. Og den tid, du kører koden, vil også blive tilføjet til projektmappens navn. Hvis du ikke behøver at tilføje tidsstemplet til filnavnet, skal du fjerne det & Format(Nu, "dd-mmm-åå h-mm-ss") fra følgende linje.
Filnavn = Left(Wb.Name, (InStrRev(Wb.Name, ".", -1, vbTextCompare) - 1)) & Format(Nu, "dd-mmm-yy h-mm-ss") & ".pdf "

3. Tryk på F5 nøglen til at køre koden. Derefter indsættes den aktuelle projektmappe automatisk i et nyt beskedvindue som en vedhæftet PDF-fil. Se skærmbillede:


2.1.5 E-mail det aktuelle regneark som en PDF-vedhæftet fil

For eksempel er der en projektmappe med navnet "Månedligt salg", og du har færdiggjort en salgsrapporttabel i et arbejdsark med navnet "salgsrapport" og ønsker at sende dette arbejdsark som en PDF-fil til dine kolleger. Følgende VBA-kode kan gøre dig en tjeneste.

1. Tryk på andre + F11 nøgler.

2. I åbningen Microsoft Visual Basic til applikationer vindue, skal du klikke på INSERT > Modul. Indsæt derefter følgende VBA-kode i vinduet Modul (Kode).

VBA-kode: E-mail det aktuelle regneark som en PDF-vedhæftet fil

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

Bemærkninger:

1) I rækken .Til = , udskift venligst med den rigtige modtagers e-mailadresse. Hvis du har brug for mere end én e-mailadresse, bedes du adskille dem med semikolon.
2) Skift e-mailens emne og e-mail-teksten separat i linjen .Subject = "test" , .Body = "test";
3) I følgende to linjer:
.CC = "E-mail-adresse"
.BCC = "E-mail-adresse"
Hvis du vil tilføje cc- og bcc-modtagere, skal du erstatte teksten "Email adresse” i linjerne med de e-mailadresser, du har brug for.
Hvis du ikke har brug for cc- og bcc-modtagere, skal du blot tilføje en apostrof ' før hver linje.
4) Navnet på PDF-filen vil være: navnet på den originale projektmappe_navnet på det originale regneark. I dette tilfælde vil navnet på PDF'en være Månedlig salgs_salgsrapport.

3. Tryk på F5 nøglen til at køre koden. Derefter indsættes det aktuelle regneark automatisk i et nyt meddelelsesvindue som en PDF-fil. Se skærmbillede:


2.2 Indsæt Outlook-signatur i e-mails sendt fra Excel

Tag ovenstående tilfælde som et eksempel, du anvender ovenstående VBA-kode til at sende det aktuelle regneark som en PDF-fil vedhæftet fil fra Excel, men Outlook-signatur kan ikke tilføjes til beskedvinduet. For at bevare Outlooks standardsignatur i e-mailen sendt fra Excel, vil følgende metode hjælpe.

To VBA-koder er angivet nedenfor.

VBA-kode 1: Koden hjælper med at bevare Outlook-signaturen.

VBA-kode 2: Koden hjælper med at e-maile det aktuelle regneark som en PDF-vedhæftet fil.

VBA-kode 1: Behold Outlook-signatur

.HTMLBody = "Email body" & "
" & .HTMLBody

VBA-kode 2: E-mail det aktuelle regneark som en PDF-vedhæftet fil

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 skal du trykke på andre + F11 nøgler til at åbne Microsoft Visual Basic til applikationer vindue.

2. i Microsoft Visual Basic til applikationer vindue, skal du klikke på indsatte > Moduler. Indsæt derefter ovenstående VBA-kode 2 i vinduet Modul (Kode).

3. For at bevare Outlooks standardsignatur i e-mailen sendt fra Excel, skal du ændre VBA-koden 2 som følger:

1) Udskift .Legeme linje med VBA-kode 1;
2) Flyt linjen .Skærm under stregen Med OutlookMail (eller med xMailOut i andre koder). Se skærmbillede:

Her er den komplette kode efter ændring.

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. Tryk på F5 nøglen til at køre koden. Så får du et nyt beskedvindue med det aktuelle arbejdsark vedhæftet som en PDF-fil, mens Outlook-standardsignaturen automatisk indsættes i slutningen af ​​e-mailens brødtekst.


3. Send automatisk e-mails fra Excel, når en betingelse er opfyldt (med VBA-scripts)

I ovenstående eksempler skal du køre koden manuelt for at opnå e-mail-leveringen. Hvis du vil udløse koden automatisk, når en bestemt betingelse er opfyldt, såsom når en celle når en bestemt værdi, når en celles værdi ændres, når en dato nås osv., vil e-mailen blive sendt automatisk. Dette afsnit viser de betingelser, som Excel-brugere ofte søgte efter i Google for at hjælpe dig med automatisk at sende e-mails fra Excel, når en bestemt betingelse er opfyldt.

3.1 Send automatisk en e-mail, når en celle når en bestemt værdi

Som vist på skærmbilledet nedenfor, antag, at du har en salgstabel med celle D6, der indeholder salgstotalen. Du vil automatisk sende en e-mail til din chef baseret på salgstotalen, for eksempel oprette eller sende en e-mail automatisk, når salgstotalen overstiger 10000, men hvis salgstotalen er lig med eller mindre end 10000, foretages der ingen handling.

1. I arbejdsarket indeholder salgstabellen, højreklik på arkfanen og klik Se kode fra højreklikmenuen.

2. I åbningen Microsoft Visual Basic til applikationer vinduet, indsæt følgende VBA-kode i Ark (kode) vindue.

VBA-kode: Send automatisk en e-mail, når en celle når en bestemt værdi 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

Noter:

1) D6 er den celle, hvis værdi du vil sende en e-mail baseret på.
2) > 10000 er betingelsen, hvilket betyder, at der sendes en e-mail, når værdien i D6 er større end 10000.
3) Range ("D6") i den følgende linje betyder, at e-mail-teksten vil referere til værdien i D6.
xMailBody = "Hi boss" & vbNewLine & vbNewLine & _
"Total sales of over $10,000 in January: " & Range("D6")
4) I rækken .Til = , udskift venligst med den rigtige modtagers e-mailadresse. Hvis du har brug for mere end én e-mailadresse, bedes du adskille dem med semikolon.
5) Skift e-mailens emne i linjen .Subject = "test".
6) I følgende to linjer:
.CC = "E-mail-adresse"
.BCC = "E-mail-adresse"
Hvis du vil tilføje cc- og bcc-modtagere, skal du erstatte teksten "Email adresse” i linjerne med de e-mailadresser, du har brug for.
Hvis du ikke har brug for cc- og bcc-modtagere, skal du blot tilføje en apostrof ' før hver linje.

Fra nu af, når værdien i celle D6 overstiger 10000, vil der blive oprettet en e-mail som vist på skærmbilledet nedenfor.


3.2 Send automatisk en e-mail, når en celleværdi ændres

Som vist på skærmbilledet nedenfor, antag, at du modtager en projektmappe, der indeholder månedlige salg i forskellige regneark og salgssummen i et regneark. Du skal bekræfte salgstotalen, og hvis salgstotalen er ændret, skal du sende projektmappen tilbage til afsenderen og informere afsenderen om, at cellen er blevet ændret.

1. I arbejdsarket indeholder salgstabellen, højreklik på arkfanen og klik Se kode fra højreklikmenuen.

2. I åbningen Microsoft Visual Basic til applikationer vinduet skal du indsætte følgende VBA-kode i vinduet Ark (kode).

VBA-kode: Send automatisk en e-mail, når en specificeret celleværdi ændres

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

Noter: I koden,

1) B14 i koden betyder, at når værdien af ​​celle B14 ændres, vil du sende en e-mail.
2) I rækken .Til = , udskift venligst med den rigtige modtagers e-mailadresse. Hvis du har brug for mere end én e-mailadresse, bedes du adskille dem med semikolon.
3) Skift e-mailens emne i linjen .Subject = "Arbejdsark ændret".
4) I følgende to linjer:
.CC = "E-mail-adresse"
.BCC = "E-mail-adresse"
Hvis du vil tilføje cc- og bcc-modtagere, skal du erstatte teksten "Email adresse” i linjerne med de e-mailadresser, du har brug for.
Hvis du ikke har brug for cc- og bcc-modtagere, skal du blot tilføje en apostrof ' før hver linje.

Fra nu af, når værdien i celle B14 ændres, oprettes der automatisk en Outlook-meddelelse som vist på skærmbilledet nedenfor.


3.3 Send automatisk en e-mail, når en projektmappe er gemt

Hvis du har en projektmappe, der skal deles med andre efter ændring, skal du normalt gemme projektmappen, starte e-mail-klienten, oprette en ny e-mail med denne projektmappe vedhæftet, sammensætte de tilsvarende felter og derefter sende e-mailen. Dette afsnit viser dig en metode til automatisk at oprette en e-mail, hver gang du gemmer projektmappen. Gør venligst som følger.

1. Tryk på andre + F11 nøgler til at åbne Microsoft Visual Basic til applikationer vindue.

2. Dobbeltklik i dette vindue ThisWorkbook i Projekt ruden, indsæt derefter følgende VBA-kode i Denne arbejdsbog (kode) vindue.

VBA-kode: Send automatisk en e-mail, når en projektmappe er gemt

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

Noter: I koden,

1) I rækken .Til = , udskift venligst med den rigtige modtagers e-mailadresse. Hvis du har brug for mere end én e-mailadresse, bedes du adskille dem med semikolon.
2) Skift e-mailens emne og brødtekst separat i linjerne .Subject = "Projektmappen er blevet opdateret" , .Body = "Hej," & Chr(13) & Chr(13) & "Filen er nu opdateret.".
3) I følgende to linjer:
.CC = "E-mail-adresse"
.BCC = "E-mail-adresse"
Hvis du vil tilføje cc- og bcc-modtagere, skal du erstatte teksten "Email adresse” i linjerne med de e-mailadresser, du har brug for.
Hvis du ikke har brug for cc- og bcc-modtagere, skal du blot tilføje en apostrof ' før hver linje.

3. Fra nu af, når du gemmer projektmappen ved at trykke på Ctrl + S tasterne eller ved at klikke på Gem knappen, oprettes der automatisk en Outlook-e-mail. Du kan se, at den aktuelle projektmappe er vedhæftet som en vedhæftet fil, og felterne er udfyldt med det angivne indhold. Se skærmbillede:

Tips: Hvis du ofte bruger denne projektmappe, anbefaler vi her, at du gemmer projektmappen som en Excel-makroaktiveret projektmappe for at gemme VBA-scriptet til fremtidig brug. Trinene er som følger.

1) Klik File (Felt) > Gem som, og vælg derefter en mappe til at gemme filen.
2) I Gem som dialogboksen, omdøb filen som du har brug for i Filnavn tekstboks, vælg Excel-makroaktiveret projektmappe i Filtype rullelisten, og klik til sidst på Gem knap. Se skærmbillede:


3.4 Send automatisk en e-mail på et bestemt tidspunkt

Lad os sige, at du skal sende en e-mail med en projektmappe til opgavetildeling til nogen hver fredag ​​morgen kl 9, og ønsker at gøre dette automatisk i Excel uden at skulle betjene e-mail-klienten manuelt. Dette afsnit viser dig metoden til at få det gjort.

1. Tryk på andre + F11 nøgler til at åbne Microsoft Visual Basic til applikationer vindue.

2. i Microsoft Visual Basic til applikationer vindue, skal du klikke på indsatte > Modul. Indsæt derefter følgende VBA-kode i modulvinduet.

VBA-kode1 : E-mail den aktuelle projektmappe som en vedhæftet fil fra 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. Dobbeltklik i dette vindue ThisWorkbook i Projekt ruden, indsæt derefter følgende VBA-kode i Denne arbejdsbog (kode) vindue.

VBA-kode 2: Send automatisk en e-mail på et bestemt tidspunkt

Private Sub Workbook_Open()
    Application.OnTime TimeValue("09:00:00"), "Timer"
End Sub

Noter:

1) I VBA-kode 1, Fredag i den følgende linje betyder, at e-mailen vil blive sendt automatisk hver fredag;
Hvis Ugedag(Dato) = vbFredag ​​Så
2) I VBA-kode 1 og VBA-kode 2 angives tiden 09:00:00 betyder, at e-mailen bliver sendt kl. 9 på en bestemt dag.
Du kan ændre dag og tid efter behov.
3) Når koden kører, oprettes en e-mail. Hvis du ikke ønsker at åbne beskedvinduet og har brug for at sende det direkte, skal du fjerne linjen .Skærm fra VBA-koden 1, og fjern apostrof før stregen '.Sende.

4. Gem koderne, og gem derefter projektmappen som en Excel-makroaktiveret projektmappe som følger.

4.1) Klik File (Felt) > Gem som, og vælg derefter en mappe til at gemme filen.
4.2) I Gem som dialogboksen, omdøb filen som du har brug for i Filnavn tekstboks, vælg Excel-makroaktiveret projektmappe i Filtype rullelisten, og klik til sidst på Gem knap. Se skærmbillede:

5. Åbn din gemte makroaktiverede projektmappe, så oprettes eller sendes en e-mail automatisk, når dagen og tidspunktet ankommer.


4. Yderligere emner

Dette afsnit samler andre emner, du kan støde på, når du sender e-mails fra Excel.

4.1 Send en e-mail til en række celler fra Excel (med VBA-script)

Antag, at der er en månedlig salgstabel i et Excel-regneark som vist på skærmbilledet nedenfor, og du skal sende denne månedlige salgstabel til andre som hovedindholdet i en e-mail eller som en vedhæftet fil direkte. Her giver vi dig to metoder til at få det gjort.

4.1.1 Send en e-mail til en række som en del af hovedindholdet fra Excel

Du kan køre følgende VBA-kode for at sende en række celler som en del af e-mail-tekstindholdet fra Excel

1. Tryk på andre + F11 nøgler til at åbne Microsoft Visual Basic til applikationer vindue.

2. i Microsoft Visual Basic til applikationer vindue, skal du klikke på Værktøjer > Referencer. Og tjek derefter Microsoft Outlook 16.0 Objektbibliotek boks og klik OK i Referencer - VBAProject dialog boks.

3. klik indsatte > Moduler, indsæt derefter følgende VBA-kode i Modul (kode) vindue.

VBA-kode: Send en række celler som en del af e-mailens brødtekstindhold fra 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

Noter: I koden,

1) I rækken .Til = , udskift venligst med den rigtige modtagers e-mailadresse. Hvis du har brug for mere end én e-mailadresse, bedes du adskille dem med semikolon.
2) I følgende to linjer:
.CC = "E-mail-adresse"
.BCC = "E-mail-adresse"
Hvis du vil tilføje cc- og bcc-modtagere, skal du erstatte teksten "Email adresse” i linjerne med de e-mailadresser, du har brug for.
Hvis du ikke har brug for cc- og bcc-modtagere, skal du blot tilføje en apostrof ' før hver linje.

4. Tryk på F5 nøglen til at køre koden. I den dukkede op Kutools til Excel dialogboksen, vælg det celleområde, du skal sende som en del af en e-mails brødtekst, og klik derefter OK. Se skærmbillede:

Derefter oprettes en Outlook-e-mail automatisk. Du kan se, at det område, du valgte i regnearket, er indsat i e-mailens brødtekst. Se skærmbillede:


4.1.2 E-mail et område som en vedhæftet fil fra Excel

Hvis du har brug for at e-maile en række celler i et regneark som en vedhæftet fil fra Excel. Du kan prøve følgende VBA-kode.

1. Tryk på andre + F11 nøgler.

2. I åbningen Microsoft Visual Basic til applikationer vindue, skal du klikke på indsatte > Moduler. Indsæt derefter følgende VBA-kode i Modul (kode) vindue.

VBA-kode: E-mail et område som en vedhæftet fil fra 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

Noter:

1) I rækken .Til = , udskift venligst med den rigtige modtagers e-mailadresse. Hvis du har brug for mere end én e-mailadresse, bedes du adskille dem med semikolon.
2) Skift e-mailens emne og e-mail-teksten separat i linjen .Subject = "Månedligt salg for 2021" , .Body = "Hej, tjek venligst og læs dette dokument.";
3) I følgende to linjer:
.CC = "e-mailadresse"
.BCC = "e-mailadresse"
Hvis du vil tilføje cc- og bcc-modtagere, skal du erstatte teksten "e-mail adresse” i linjerne med de e-mailadresser, du har brug for.
Hvis du ikke har brug for cc- og bcc-modtagere, skal du blot tilføje en apostrof ' før hver linje.

3. Tryk på F5 nøglen til at køre koden. I den dukkede op Kutools til Excel dialogboksen, vælg det celleområde, du skal sende som en vedhæftet fil i en e-mail, og klik derefter OK. Se skærmbillede:

Derefter oprettes en Outlook-e-mail automatisk. Og det celleområde, du valgte i regnearket, gemmes som en Excel-projektmappe og vedhæftes i meddelelsesvinduet. Se skærmbillede:


4.2 Send e-mails, når der klikkes på en knap i Excel

Hvis du har brug for at klikke på en kommandoknap for at udløse en makro til at sende en e-mail fra Excel, for eksempel, send den aktuelle projektmappe som en vedhæftet fil til andre ved at klikke på en kommandoknap i regnearket. Du kan følge trinene som følger for at få det gjort.

1. klik Udvikler > indsatte > Kommando-knap (ActiveX-kontrol). Tegn derefter en kommandoknap i regnearket.

Tips: Hvis du allerede har en kommandoknap, skal du springe dette trin over.

2. Tryk på andre + F11 nøgler til at åbne Microsoft Visual Basic til applikationer vindue. Klik på i vinduet indsatte > Modue, indsæt derefter VBA-koden (den kode, der bruges til at e-maile den aktuelle projektmappe som en vedhæftet fil fra Excel) i vinduet Modul (kode).

Klik her for at få koden.

Bemærk: Her er navnet på den makro, du oprettede i trin 2 Send arbejdsbog.

3. Tryk på andre + Q taster for at lukke Microsoft Visual Basic til applikationer vindue.

4. Nu skal du tildele makroen til kommandoknappen. Højreklik på kommandoknappen, vælg Vis kode fra højreklikmenuen.

5. Derefter Microsoft Visual Basic til applikationer vinduet dukker op, kan du se følgende to linjer er opført i Ark (kode) vindue.

Private Sub CommandButton1_Click()
End Sub

6. Indtast navnet på den eksisterende makro i underproceduren for kommandoknappen.

7. Tryk på andre + Q taster for at lukke Visual Basic Editor, og klik Udvikler > Design Mode for at slå designtilstanden fra.

Nu kan du klikke på kommandoknappen for at sende en e-mail med den aktuelle projektmappe som en vedhæftet fil i e-mailen.


4.3 Send e-mails fra en specificeret e-mail-konto

Normalt, når du starter en e-mail fra Excel med VBA-kode, er afsenderens e-mail-konto standardkontoen i Outlook. Antag, at du har konfigureret flere e-mail-konti i din Outlook og vil bruge en bestemt konto til at sende e-mails fra Excel i stedet for at bruge standardkontoen. Følgende VBA-kode kan hjælpe.

Følgende koder er nødvendige i dette tilfælde.

VBA kode 1:

Dim OutlookMail As Outlook.MailItem

VBA kode 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

Hvordan bruger man ovenstående VBA-kode?

1) I din egen kode skal du erstatte linjen som "Dæmp OutlookMail som objekt” med VBA-kode 1;
2) Tilføj VBA-koden 2 under linjen "On Error Resume Next” i din kode. Angiv derefter den e-mailadresse, du vil bruge til at sende e-mailen i VBA-kode 2.

I dette eksempel skal vi angive en bestemt e-mail-konto for at sende den aktuelle projektmappe som en vedhæftet fil fra Excel. Gør venligst som følger.

1. Tryk på andre + F11 nøgler. I den Microsoft Visual Basic til applikationer vindue, skal du klikke på Værktøjer > Referencer. Og tjek derefter Microsoft Outlook 16.0 Objektbibliotek boks og klik OK i Referencer - VBAProject dialog boks.

2. klik indsatte > Moduler. Indsæt derefter følgende VBA-kode i Modul (kode) vindue.

VBA-kode: Send den aktuelle projektmappe som en e-mail-vedhæftet fil fra Excel via en specificeret 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. Tryk på F5 nøglen til at køre koden. Så dukker en Outlook-e-mail-besked op, du kan se, at Fra feltet er udfyldt med den e-mail-konto, du har angivet i koden.


4.4 Send en e-mail, når en dato er nået

Hvis du skal sende en e-mail baseret på en bestemt forfaldsdato, for eksempel, som vist på skærmbilledet nedenfor, er der en projekttabel, når forfaldsdatoen i intervallet E2:E7 er lig med eller mindre end 7 dage fra i dag (forudsat at den aktuelle dato er 2022/8/4), vil der automatisk blive sendt en e-mail til de tilsvarende projektledere og meddele dem, at projektet er ved at udløbe.

1. I arbejdsarket indeholder projekttabellen, højreklik på arkfanen og klik Se kode fra højreklikmenuen.

2. I åbningen Microsoft Visual Basic til applikationer vinduet, indsæt følgende VBA-kode i Ark (kode) vindue.

VBA-kode: Send automatisk en e-mail, når en forfaldsdato er overholdt

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

Noter: I koden,

1) I de følgende linjer, E2: E7 indeholder de forfaldsdatoer, du vil sende e-mails baseret på. C2: C7 indeholder de e-mailadresser, du vil sende e-mails til. Og D2: D7 indeholder de bemærkninger, du vil tilføje i e-mailens brødtekst for at give modtagerne besked om, at projektet er ved at udløbe. Du kan ændre intervallerne efter behov.
Indstil xRgDate = Range("E2:E7")
Indstil xRgSend = Range("C2:C7")
Indstil xRgText = Range("D2:D7")
2) Følgende linje betyder, at forfaldsdatoen skal være større end 1 dag og lig med eller mindre end 7 dage fra i dag. Du kan ændre det efter behov.
Hvis CDate(xRgDateVal) - Dato <= 7 Og CDate(xRgDateVal) - Dato > 0
3) I rækken .Til = , udskift venligst med den rigtige modtagers e-mailadresse. Hvis du har brug for mere end én e-mailadresse, bedes du adskille dem med semikolon.
4) Skift e-mailens emne i linjen .Subject = "Arbejdsark ændret".
5) I følgende to linjer:
.CC = "E-mail-adresse"
.BCC = "E-mail-adresse"
Hvis du vil tilføje cc- og bcc-modtagere, skal du erstatte teksten "Email adresse” i linjerne med de e-mailadresser, du har brug for.
Hvis du ikke har brug for cc- og bcc-modtagere, skal du blot tilføje en apostrof ' før hver linje.

3. Tryk på F5 nøglen til at køre koden. Så, hvis udløbsdatoen matcher betingelserne, vil den tilsvarende e-mail blive oprettet. I dette tilfælde vil der blive oprettet to e-mails som vist på skærmbilledet nedenfor.


5. Et praktisk værktøj, der hjælper dig med nemt at sende e-mails fra Excel

Hvis du er en VBA-nybegynder, er ovenstående metoder muligvis ikke nemme at håndtere for dig. Her anbefaler vi Kutools til Excel's Send emails funktion, med denne funktion kan du nemt sende e-mails fra Excel med kun flere klik. Gør venligst som følger.

Før påføring Kutools til Excel, Bedes download og installer det først.

5.1 Opret nemt en postliste, der indeholder de e-mail-felter, du har brug for

Før du anvender funktionen Send e-mails, skal du oprette en postliste, der indeholder de e-mail-felter, du har brug for. Her kan funktionen Opret postliste hjælpe.

1. klik Kutools Plus > Opret postliste.

2. I åbningen Opret postliste vindue, skal du konfigurere som følger.

2.1) I Kolonner til postliste sektion, tjek de felter, du har brug for i din e-mail;
2.2) I Vedhæft filer sektion, tjek en eller flere vedhæftede filer, du muligvis har brug for;
2.3) Angiv en placering for at placere postlisten;
2.4) Klik på Opret knap. Se skærmbillede:

Derefter oprettes et eksempel på en mailinglistetabel som vist på skærmbilledet nedenfor.

3. Nu skal du erstatte de originale data i prøven med dine egne feltdata.

Nu har du oprettet en adresselistetabel. Gå videre med at anvende Send emails funktion til at sende e-mails fra Excel baseret på de felter, du har oprettet.

  Hvis du vil have en gratis prøveperiode (30 dage) af dette værktøj, klik for at downloade det, og gå derefter til at anvende handlingen i henhold til ovenstående trin.


5.2 Send nemt e-mails inklusive de felter, du har oprettet på postlisten

Efter oprettelse af mailinglisten (klik for at vide hvordan), der indeholder de felter, du muligvis har brug for i dine e-mails, kan du nu sende e-mails fra Excel med disse felter.

1. Vælg hele postlisten, klik Kutools Plus > Send emails.

2. i Send emails dialogboksen, skal du udføre følgende konfiguration.

2.1) Felter udfyldes automatisk i dialogboksen for hvert felt af de felter, du har angivet på postlisten;
Tips: Hvis du ikke har brug for et bestemt felt på nuværende tidspunkt, skal du vælge en tom mulighed i rullelisten.
2.2) Indsæt pladsholder (valgfrit): Hvis du skal indsætte variable oplysninger i en e-mail-brødtekst.
For eksempel skal du muligvis sende en e-mail til flere modtagere med et personligt navn til hver enkelt, du skal placere markøren i e-mail-teksten, hvor du skal indsætte pladsholderen, vælg feltet "E: Fornavn” (eller et andet navnefelt på din e-mail-liste), og klik derefter på Indsæt Pladsholder knap;
Når modtagerne modtager e-mailen, forbliver e-mail-teksten den samme, men navnene er unikke for hver.
2.3) Sammensæt e-mailens brødtekst som du har brug for;
2.4) Sørg for, at Send e-mails via Outlook afkrydsningsfelt er markeret
2.5) Klik på Send knap. Se skærmbillede:

3. Derefter a Kutools til Excel dialogboksen dukker op for at fortælle dig, hvor mange e-mails der sendes, klik på OK for at lukke denne dialogboks.

Tips: Du kan gå til Sendte ting mappe i din Outlook for at tjekke de e-mails, du har sendt.


5.3 Send nemt e-mails med HTML-tekst (inklusive hyperlink, billede osv.)

Denne Send e-mail-funktion giver dig mulighed for at bygge en html-e-mail, som inkluderer hyperlink, billede, forskellige skriftstørrelser og skriftfarver osv.

Efter oprettelse af en postliste, der indeholder de e-mail-felter, du har brug for,

Når du konfigurere dialogboksen Send e-mails, kan du gøre kropsindholdet rigt ved at bruge mulighederne på værktøjslinjen.

Se skærmbilledet nedenfor:


5.4 Indsæt nemt Outlook standardsignatur, når du sender e-mails

I ovenstående metode demonstrerede vi en VBA-kode, der hjælper dig med at sende e-mails med Outlook standardsignatur. Her med funktionen Send e-mails skal du blot markere en mulighed, så vil Outlook standardsignatur blive indsat i e-mails, du har sendt fra Excel.

Efter oprettelse af en postliste, der indeholder de e-mail-felter, du har brug for,

Hvornår konfigurere dialogboksen Send e-mails, skal du klikke Indstillinger > Brug Outlook's signaturindstillinger.

Bemærk: Sørg for, at der vises et flueben før indstillingen Brug Outlooks signaturindstillinger.

Når modtagere modtager e-mailen, kan de se Outlook-standardsignaturen vist i slutningen af ​​e-mailens brødtekst.


5.5 Send nemt e-mails fra en specificeret e-mail-konto

For at bruge en bestemt e-mail-konto til at sende e-mails fra Excel i stedet for at bruge standardkontoen, kan funktionen Send e-mails også hjælpe til nemt at få det gjort.

Efter oprettelse af en postliste, der indeholder de e-mail-felter, du har brug for,

Hvornår konfigurere dialogboksen Send e-mails, skal du klikke Indstillinger > Sendt fra, og klik derefter på den e-mail-konto, du skal sende e-mails fra.

Bemærk: Når du har valgt e-mail-kontoen, vil der blive vist et flueben foran den.

Klik link. at vide mere om denne Send e-mail-funktion.

  Hvis du vil have en gratis prøveperiode (30 dage) af dette værktøj, klik for at downloade det, og gå derefter til at anvende handlingen i henhold til ovenstående trin.

Afslutningsvis er det ganske nyttigt at sende e-mails fra Excel i vores daglige arbejde. Denne artikel dækker mere omfattende emner om e-mails, der sendes fra Excel, hvis der er andre emner eller lettere løsninger, så læg en kommentar for at fortælle mig det.

Bedste kontorproduktivitetsværktøjer

🤖 Kutools AI Aide: Revolutionér dataanalyse baseret på: Intelligent udførelse   |  Generer kode  |  Opret brugerdefinerede formler  |  Analyser data og generer diagrammer  |  Aktiver Kutools funktioner...
Populære funktioner: Find, fremhæv eller identificer dubletter   |  Slet tomme rækker   |  Kombiner kolonner eller celler uden at miste data   |   Runde uden formel ...
Super opslag: VLookup med flere kriterier    Multiple Value VLookup  |   VOpslag på tværs af flere ark   |   Fuzzy Lookup ....
Avanceret rulleliste: Opret hurtigt rulleliste   |  Afhængig rulleliste   |  Multivælg rulleliste ....
Column Manager: Tilføj et bestemt antal kolonner  |  Flyt kolonner  |  Skift synlighedsstatus for skjulte kolonner  |  Sammenlign områder og kolonner ...
Fremhævede funktioner: Grid fokus   |  Designvisning   |   Stor Formel Bar    Arbejdsbog & Ark Manager   |  Ressourcebibliotek (Autotekst)   |  Datovælger   |  Kombiner regneark   |  Krypter/Dekrypter celler    Send e-mails efter liste   |  Superfilter   |   Specielt filter (filter fed/kursiv/gennemstreget...) ...
Top 15 værktøjssæt12 tekst Værktøjer (tilføje tekst, Fjern tegn, ...)   |   50 + Chart Typer (Gantt kort, ...)   |   40+ Praktisk formler (Beregn alder baseret på fødselsdag, ...)   |   19 Indsættelse Værktøjer (Indsæt QR-kode, Indsæt billede fra sti, ...)   |   12 Konvertering Værktøjer (Tal til ord, Valutaomregning, ...)   |   7 Flet og del Værktøjer (Avancerede kombinere rækker, Opdel celler, ...)   |   ... og mere

Overlad dine Excel-færdigheder med Kutools til Excel, og oplev effektivitet som aldrig før. Kutools til Excel tilbyder over 300 avancerede funktioner for at øge produktiviteten og spare tid.  Klik her for at få den funktion, du har mest brug for...

Beskrivelse


Fanen Office bringer en grænseflade til et kontor med Office, og gør dit arbejde meget lettere

  • Aktiver redigering og læsning af faner i Word, Excel, PowerPoint, Publisher, Access, Visio og Project.
  • Åbn og opret flere dokumenter i nye faner i det samme vindue snarere end i nye vinduer.
  • Øger din produktivitet med 50 % og reducerer hundredvis af museklik for dig hver 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