Salt la conținutul principal

Cum să trimiteți e-mail cu copierea și lipirea unui interval specificat în corpul e-mailului în Excel?

În multe cazuri, o gamă specificată de conținut în foaia de lucru Excel poate fi utilă în comunicarea dvs. prin e-mail. În acest articol, vom introduce o metodă de trimitere a unui e-mail cu interval specificat lipit în corpul e-mailului direct în Excel.

Trimiteți e-mail cu un interval specificat lipit în corpul e-mailului în Excel
Trimiteți un e-mail cu un interval specificat lipit în corpul e-mailului cu un instrument uimitor

Mai multe tutoriale pentru trimiterea prin poștă în Excel ...


Trimiteți e-mail cu un interval specificat lipit în corpul e-mailului în Excel

Următorul cod VBA vă poate ajuta să copiați un interval și să-l inserați într-un corp de e-mail Outlook direct în Excel. Vă rugăm să faceți următoarele.

1. În foaia de lucru conține intervalul pe care trebuie să îl copiați, apăsați pe Alt + F11 tastele simultan pentru a deschide Microsoft Visual Basic pentru aplicații fereastră.

2. În deschidere Microsoft Visual Basic pentru aplicații fereastra, faceți clic pe Instrumente > Referinte după cum se arată în imaginea de mai jos.

3. În Referințe - VBAProject caseta de dialog, vă rugăm să găsiți și să verificați Biblioteca de obiecte Microsoft Outlook , apoi faceți clic pe OK butonul.

4. clic Insera > Module, apoi copiați și lipiți codul VBA de mai jos în fereastra Module.

Cod VBA: trimiteți un e-mail cu un interval specificat lipit în corpul e-mailului în Excel

Sub Send_Email()
'Updated by Extendoffice 20200119
    Dim xRg As Range
    Dim I, J As Long
    Dim xAddress As String
    Dim xEmailBody As String
    Dim xMailOut As Outlook.MailItem
    Dim xOutApp As Outlook.Application    
    On Error Resume Next
    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)
    For I = 1 To xRg.Rows.Count
        For J = 1 To xRg.Columns.Count
            xEmailBody = xEmailBody & "  " & xRg.Cells(I, J).value
        Next
        xEmailBody = xEmailBody & vbNewLine
    Next
    xEmailBody = "Hi" & vbLf & vbLf & " body of message you want to add" & vbLf & vbLf & xEmailBody & vbNewLine
    With xMailOut
        .Subject = "Test"
        .To = ""
        .Body = xEmailBody
        .Display
        '.Send
    End With
    Set xMailOut = Nothing
    Set xOutApp = Nothing
    Application.ScreenUpdating = True
End Sub

notițe:

  • 1). Vă rugăm să schimbați corpul e-mailului în linie xEmailBody = "Bună" & vbLf & vbLf & "corpul mesajului pe care doriți să îl adăugați" & vbLf & vbLf & xEmailBody & vbNewLine după cum ai nevoie.
  • 2). Vă rugăm să specificați destinatarul și subiectul e-mailului (.Pentru a = și .Subject = "test") linii din cod.

5. apasă pe F5 tasta pentru a rula codul. În pop-up Kutools pentru Excel caseta de dialog, selectați intervalul pe care trebuie să îl lipiți în corpul e-mailului, apoi faceți clic pe OK buton. Vedeți captura de ecran:

6. Acum este creat un e-mail cu destinatarul specificat, subiectul, corpul și intervalul Excel selectat, vă rugăm să faceți clic pe Trimiteți pentru a trimite acest e-mail. Vedeți captura de ecran afișată.

notițe: Codul VBA funcționează numai atunci când utilizați Outlook ca program de e-mail.


Trimiteți un e-mail cu un interval specificat lipit în corpul e-mailului cu un instrument uimitor

Dacă nu utilizați Outlook și doriți totuși să trimiteți e-mailuri direct în Excel cu date specificate pe intervalul lipit în interior, vă recomand cu tărie Trimite emailuri utilitatea Kutools pentru Excel Pentru dumneavoastră. Cu această caracteristică, trebuie doar să configurați serverul de ieșire al unei adrese de e-mail și apoi să trimiteți e-mailuri în Excel direct prin această adresă de e-mail în viitor.

Înainte de a aplica Kutools pentru Excel, Vă rugăm să descărcați-l și instalați-l mai întâi.

1. În primul rând, trebuie să pregătiți o listă de corespondență cu câmpurile necesare.

  • sfaturi: Lista de corespondență trebuie să conțină cel puțin 2 rânduri, iar primul rând trebuie să fie anteturile (Presupunând că doriți să trimiteți e-mailuri la două adrese de e-mail în Excel, introduceți aceste două adrese de e-mail cu antetul „E-mail” așa cum se arată în imaginea de mai jos ).
  • Alternativ, puteți crea cu ușurință o listă de e-mail cu Creați o listă de corespondență caracteristică.

2. Selectați intervalul în care veți adăuga datele în corpul e-mailului și apăsați pe Ctrl + C chei pentru copiere.

3. Selectați întreaga listă de corespondență (includeți anteturi), faceți clic pe Kutools Plus > Trimite emailuri. Vedeți captura de ecran:

4. Apoi Trimite emailuri apare fereastra de dialog.

  • 4.1) Articolele din lista de corespondență selectată sunt populate în câmpurile corespunzătoare (puteți adăuga mai multe câmpuri pe lista de corespondență după cum aveți nevoie);
  • 4.2) Faceți clic pe caseta corpului e-mailului, apăsați pe Ctrl + V tastele pentru a lipi datele de interval selectate în ea. După aceea, adăugați alt conținut după cum aveți nevoie;
  • 4.3 Debifați Trimiteți e-mailuri prin Outlook cutie;
  • 2.4) Faceți clic pe Setări server de ieșire buton. Vedeți captura de ecran:

5. Apoi Setări server de ieșire (SMTP) - Schemă nouă apare fereastra de dialog. Vă rugăm să completați adresa de e-mail cu setările serverului, specificați un folder pentru a salva toate mesajele trimise după ce ați verificat Salvați e-mailurile trimise la , apoi faceți clic pe OK pentru a salva setările.

6. Când revine la Trimite emailuri , faceți clic pe Trimiteți pentru a trimite e-mailul.

De acum înainte, puteți trimite e-mailuri cu această caracteristică direct în Excel.

  Dacă doriți să aveți o perioadă de încercare gratuită (30 de zile) a acestui utilitar, vă rugăm să faceți clic pentru a-l descărca, și apoi mergeți pentru a aplica operația conform pașilor de mai sus.


Legate de articole:

Trimiteți e-mail la adresele de e-mail specificate în celulele din Excel
Presupunând că aveți o listă de adrese de e-mail și doriți să trimiteți un mesaj de e-mail către aceste adrese de e-mail în bloc direct în Excel. Cum se realizează? Acest articol vă va arăta metodele de trimitere a e-mailurilor la mai multe adrese de e-mail specificate în celulele din Excel.

Introduceți semnătura Outlook atunci când trimiteți e-mail în Excel
Presupunând că doriți să trimiteți un e-mail direct în Excel, cum puteți adăuga semnătura Outlook implicită în acest e-mail? Acest articol oferă două metode pentru a vă ajuta să adăugați semnătură Outlook atunci când trimiteți e-mail în Excel.

Trimiteți e-mail cu mai multe atașamente atașate în Excel
Acest articol vorbește despre trimiterea unui e-mail prin Outlook cu mai multe atașamente atașate în Excel.

Trimiteți e-mail dacă data limită a fost respectată în Excel
De exemplu, dacă data scadenței din coloana C este mai mică sau egală cu 7 zile (data actuală este 2017/9/13), trimiteți un memento prin e-mail destinatarului specificat în coloana A cu conținutul specificat în coloana B. obtine asta? Acest articol va oferi o metodă VBA pentru a o trata în detalii.

Trimiteți automat e-mailuri pe baza valorii celulei din Excel
Presupunând că doriți să trimiteți un e-mail prin Outlook unui anumit destinatar pe baza unei valori de celulă specificate în Excel. De exemplu, când valoarea celulei D7 într-o foaie de lucru este mai mare de 200, atunci se creează automat un e-mail. Acest articol introduce o metodă VBA pentru a rezolva rapid această problemă.

Mai multe tutoriale pentru trimiterea prin poștă în Excel ...

Cele mai bune instrumente de productivitate de birou

Caracteristici populare: Găsiți, evidențiați sau identificați duplicatele   |  Ștergeți rândurile goale   |  Combinați coloane sau celule fără a pierde date   |   Rundă fără Formula ...
Super căutare: VLookup cu mai multe criterii    VLookup cu valori multiple  |   VLookup pe mai multe foi   |   Căutare fuzzy ....
Listă derulantă avansată: Creați rapid o listă derulantă   |  Listă drop-down dependentă   |  Listă derulantă cu selectare multiplă ....
Manager de coloane: Adăugați un număr specific de coloane  |  Mutați coloanele  |  Comutați starea vizibilității coloanelor ascunse  |  Comparați intervale și coloane ...
Caracteristici prezentate: Focus pe grilă   |  Vedere de proiectare   |   Big Formula Bar    Manager registru de lucru și foi   |  Biblioteca de resurse (Text automat)   |  Data Picker   |  Combinați foi de lucru   |  Criptare/Decriptare celule    Trimiteți e-mailuri după listă   |  Super Filtru   |   Filtru special (filtrează bold/italic/barat...) ...
Top 15 seturi de instrumente12 Text Instrumente (Adăuga text, Eliminați caractere,...)   |   50+ Diagramă Tipuri de (Gantt Chart,...)   |   40+ Practic Formule (Calculați vârsta pe baza zilei de naștere,...)   |   19 inserare Instrumente (Introduceți codul QR, Inserați imaginea din cale,...)   |   12 Convertire Instrumente (Numere la cuvinte, conversie valutara,...)   |   7 Merge & Split Instrumente (Rânduri combinate avansate, Celule divizate,...)   |   ... și altele

Îmbunătățiți-vă abilitățile Excel cu Kutools pentru Excel și experimentați eficiența ca niciodată. Kutools pentru Excel oferă peste 300 de funcții avansate pentru a crește productivitatea și a economisi timp.  Faceți clic aici pentru a obține funcția de care aveți cea mai mare nevoie...

fila kte 201905


Fila Office aduce interfața cu file în Office și vă face munca mult mai ușoară

  • Activați editarea și citirea cu file în Word, Excel, PowerPoint, Publisher, Access, Visio și Project.
  • Deschideți și creați mai multe documente în filele noi ale aceleiași ferestre, mai degrabă decât în ​​ferestrele noi.
  • Vă crește productivitatea cu 50% și reduce sute de clicuri de mouse pentru dvs. în fiecare zi!
Comments (22)
Rated 4.5 out of 5 · 1 ratings
This comment was minimized by the moderator on the site
The only issue is that the format of the table is not maintained in the mail. Can you let me know how do we preserve the format of the table in the mail, I have the same issue, could you see if you could update it please, otherwise this is excellent.
Many thanks
Rated 4.5 out of 5
This comment was minimized by the moderator on the site
Hi Andy Mitchell,
If you want to maintain the format of the table, the following VBA script can do you a favor. Please give it a try. Thank you.
Sub Send_Email()
'Updated by Extendoffice 20220616
    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 = ""
        .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
This comment was minimized by the moderator on the site
This worked perfectly, thank you so much.
I can now add my spin on it to get it doing what I need.
This comment was minimized by the moderator on the site
Hi Paul Johnson,

Very happy to help you solve the problem. Have a good day at work.
This comment was minimized by the moderator on the site
hello,
can you help me on below
I have create excel sheet & updated 10 supplier mail detailI have send mail through excel to all 10 supplier with individual sheet attachment with individual mail.
I want to paste excel data in outlook body instead of attachment in mail
can any one help me
This comment was minimized by the moderator on the site
Hi,
Instead of selecting the range, I want to select multiple pivots in the excel.
can you please help me.
This comment was minimized by the moderator on the site
Hi,
Instead of selecting the range manually, I want to select the range automatically.
This comment was minimized by the moderator on the site
Hi Raman,
In the below code, please replace the range "A1:C5" in line Set xRg = Range("A1:C5") with your own range.

Sub Send_Email()
Dim xRg As Range
Dim I, J As Long
Dim xAddress As String
Dim xEmailBody As String
Dim xMailOut As Outlook.MailItem
Dim xOutApp As Outlook.Application
On Error Resume Next
xAddress = ActiveWindow.RangeSelection.Address
Set xRg = Range("A1:C5")
If xRg Is Nothing Then Exit Sub
Application.ScreenUpdating = False
Set xOutApp = CreateObject("Outlook.Application")
Set xMailOut = xOutApp.CreateItem(olMailItem)
For I = 1 To xRg.Rows.Count
For J = 1 To xRg.Columns.Count
xEmailBody = xEmailBody & " " & xRg.Cells(I, J).Value
Next
xEmailBody = xEmailBody & vbNewLine
Next
xEmailBody = "Hi" & vbLf & vbLf & " body of message you want to add" & vbLf & vbLf & xEmailBody & vbNewLine
With xMailOut
.Subject = "Test"
.To = ""
.Body = xEmailBody
.Display
'.Send
End With
Set xMailOut = Nothing
Set xOutApp = Nothing
Application.ScreenUpdating = True
End Sub
This comment was minimized by the moderator on the site
Hi experts, Do we have updates on how the format maintained?
This comment was minimized by the moderator on the site
Hi Ther,
Can't figure it out. Sorry for that.
This comment was minimized by the moderator on the site
i am seeing a compile error (User-defined type not defined". Please help me out to overcome this.
This comment was minimized by the moderator on the site
Hi,
Please get into the Reference window by clicking Tools > references. Scroll down to find and check the Microsoft Outlook Object Library box and click the OK button to finish the setting.
This comment was minimized by the moderator on the site
this is pasting as a text. Kindly suggest how to send the table or the same format which is copied from the excel.
This comment was minimized by the moderator on the site
Code to send automatically after selecting after ok
This comment was minimized by the moderator on the site
Hi
This code is vary excellent, by using the code i have completed my 90% of my project.
I have same issue as mentioned by Anirudh that is table formatting. How can i format the table in email.
Please help me......
This comment was minimized by the moderator on the site
Good Day,
The problem can't be solved yet. Sorry for the inconvenience and thank you for your comment.
This comment was minimized by the moderator on the site
Hi, Is there any update on below.......
This comment was minimized by the moderator on the site
Hi, Also I Wanted code for "Filter by Date".
I am working on project, on that project I wanted to filter the data by the date, actually we have filter/hide the and last 05 days to current date data and we have highlight all other data.
Please help me to complete this project.
Your help is very great-full for me.
This comment was minimized by the moderator on the site
This is great. It is working as expected. The only issue is that the format of the table is not maintained in the mail. Can you let me know how do we preserve the format of the table in the mail
There are no comments posted here yet
Load More
Please leave your comments in English
Posting as Guest
×
Rate this post:
0   Characters
Suggested Locations