Tutorial Excel – Trimiteți e-mailuri din Excel
În mod normal, folosim clienți de e-mail precum Outlook, Gmail etc. pentru a trimite e-mailuri. Însă, mulți oameni stochează date în registrele de lucru Excel și trebuie să trimită unele date și altora în timp ce lucrează cu ele. Prin urmare, trebuie să trimită e-mailuri direct din registrul de lucru Excel, ceea ce economisește timpul de operare a unui client de e-mail. Acest tutorial pas cu pas vă va arăta cum să trimiteți e-mailuri din Excel în diferite condiții.
notițe: Înainte de a aplica următoarele metode, trebuie să configurați un client de e-mail Outlook pe computer și să-l setați ca client de e-mail implicit.
Cuprins: [Ascunde]
1. Elementele de bază ale trimiterii de e-mailuri din Excel
Această secțiune prezintă elementele de bază ale trimiterii de e-mailuri din Excel.
1.1 Trimiteți e-mailuri din Excel cu funcții încorporate în Excel
Dacă doriți să trimiteți doar e-mailuri simple din Excel, inclusiv câmpurile Către, Subiect, Cc și body. Funcțiile încorporate în Excel vă pot ajuta.
1.1.1 Trimiteți e-mail din Excel cu o formulă
După cum se arată în tabelul de mai jos, pentru a trimite diferite e-mailuri din Excel pe baza câmpurilor date, puteți utiliza referințele de celule ale câmpurilor date pentru a crea diferite formule Hyperlink pentru a face acest lucru. După crearea hyperlinkurilor de e-mail, puteți face clic pe hyperlinkul de care aveți nevoie pentru a trimite automat un e-mail.
Notă: Dacă există mai mult de un destinatari în câmpurile Către sau Cc, separați-i cu punct și virgulă.
Această secțiune este împărțită în patru părți pentru a vă arăta pașii pentru a adăuga separat adresa de e-mail, destinatar(i) Cc, subiect și textul corpului la formula Hyperlink. Vă rugăm să faceți după cum urmează.
Sintaxa și argumentele lui HYPERLINK funcția sunt după cum urmează.
Sintaxă
HYPERLINK(link_location, [friendly_name])
Argumente
1.1.1.1 Adăugați adresa de e-mail la formula Hyperlink
Aici folosim "mailto:" ca parte a formulei de adăugare a unui destinatar de e-mail. În acest exemplu, adresa de e-mail a primului destinatar se află în celula B2, așa că trebuie să adăugăm „mailto:” și să o trimitem la celula B2.
„mailto:”&B2
1. Selectați o celulă pentru a afișa hyperlinkul. În acest caz, selectez celula F2.
2. Apoi introduceți următoarea formulă în ea.
=HYPERLINK("mailto:"&B2)
notițe: Dacă apăsați tasta Intrați cheie, va fi creat un hyperlink așa cum se arată în captura de ecran de mai jos. Când faceți clic pe link, va fi creat un e-mail Outlook și adresa de e-mail a destinatarului va fi completată automat în câmpul Către.
Adresa de e-mail a destinatarului este acum adăugată la formula Hyperlink. Vă rugăm să continuați cu următorii pași pentru a adăuga linia de subiect, destinatarii Cc și textul corpului după cum aveți nevoie.
1.1.1.2 Adăugați destinatarii Cc la formula Hyperlink
Pentru a adăuga destinatarii Cc la funcția Hyperlink, vă rugăm să adăugați "?cc=" ca parte a formulei, după cum urmează.
Formula din celula F2 ar trebui să fie după cum urmează:
=HYPERLINK("mailto:" & B2 & "?cc=" & C2)
1.1.1.3 Adăugați linia de subiect la formula Hyperlink
Pentru a adăuga linia de subiect la funcția Hyperlink, vă rugăm să adăugați „&subiect=" ca parte a formulei, după cum urmează.
Formula din celula F2 ar trebui acum să arate astfel:
=HYPERLINK("mailto:" & B2 & "?cc=" & C2 & "&subject="& D2)
1.1.1.4 Adăugați textul corpului cu întreruperi de rând la formula Hyperlink
Ultimul pas este să adăugați textul corpului la formula Hyperlink. După cum puteți vedea în exemplu, două rânduri de text în E2 sunt separate printr-o întrerupere de linie și doriți să păstrați întreruperea de linie în corpul e-mailului. Outlook recunoaște întreruperea de linie în această circumstanță? Să verificăm.
Pentru a adăuga textul corpului la formula Hyperlink, trebuie să adăugați „&body=" ca parte a formulei, după cum urmează.
Formula din celula F2 este acum afișată după cum urmează:
=HYPERLINK("mailto:" & B2 & "?cc=" & C2 & "&subject="& D2 & "&body="& E2)
Notă: Dacă apăsați Intrați tasta și faceți clic pe link. Puteți vedea în noul e-mail că conținutul din corpul e-mailului este afișat pe aceeași linie.
Pentru a afișa corpul e-mailului în rânduri separate, trebuie să modificați conținutul celulei adăugând codul caracterului de returnare a carului % 0A la textul în care trebuie să inserați o întrerupere de linie. Vedeți captura de ecran:
1.1.1.5 Specificați textul de afișat pentru hyperlink
În pașii de mai sus, am terminat argumentul Link_location cu câmpuri de e-mail. Aici, în această secțiune, vom termina următorul argument [friendly_name].
În acest caz, vreau ca celula hyperlink să afișeze textul ca „E-mail la xx”, unde xx este numele destinatarului în A2. Deci, formula din F2 ar trebui schimbată în:
=HYPERLINK("mailto:" & B2 & "?cc=" & C2 & "&subject="& D2 & "&body="& E2, "Email to "&A2)
Apăsaţi Intrați cheie pentru a obține rezultatul.
Selectați această celulă de formulă și trageți-o Mâner de completare automată jos pentru a crea alte hyperlinkuri de e-mail. Vedeți captura de ecran:
1.1.2 Trimite e-mail din Excel cu funcția Hyperlink
Cu excepția utilizării formulei de hyperlink de mai sus, puteți crea manual un hyperlink de e-mail cu ajutorul Insera Hyperlink funcție în Excel. Această secțiune vă va arăta pașii.
1. Faceți clic dreapta pe un e-mail în care doriți să inserați un hyperlink, selectați Link din meniul cu clic dreapta.
2. În fereastra pop-up Introduceți hyperlink casetă de dialog, trebuie să configurați după cum urmează.
Când faceți clic pe hyperlink, va fi creat un e-mail Outlook cu câmpurile specificate Către, Subiect și Corp, așa cum se arată în captura de ecran de mai jos.
notițe:
1.2 Trimiteți e-mail la mai mulți destinatari în celule cu script VBA
În exemplul de mai sus, puteți vedea că mai multe adrese de e-mail sunt afișate într-o celulă, separate prin punct și virgulă. Dacă aveți o listă de adrese de e-mail, așa cum se arată în captura de ecran de mai jos și doriți să trimiteți un e-mail sau un e-mail independent tuturor, următorul cod VBA vă poate face o favoare.
1.2.1 Trimiteți un e-mail către mai mulți destinatari în celule cu script VBA
1. În foaia de lucru care conține toate adresele de e-mail la care doriți să trimiteți e-mailul. apasă pe Alt + F11 tastele pentru a deschide Microsoft Visual Basic pentru aplicații fereastră.
2. În Microsoft Visual Basic pentru aplicații fereastră, faceți clic pe Insera > Modul, și apoi lipiți următorul cod în Modul (Cod) fereastră.
Cod VBA: Trimite e-mail la o listă de adrese de e-mail
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. apasă pe F5 tasta pentru a rula codul și a Kutools pentru Excel apare caseta de dialog. Selectați lista de adrese de e-mail și faceți clic OK.
note:
.Body = "Dear " _
& vbNewLine & vbNewLine & _
"This is a test email " & _
"sending in Excel"
După rularea codului, toate adresele de e-mail din intervalul selectat sunt afișate în câmpul Către din fereastra de mesaj. Vedeți captura de ecran:
1.2.2 Trimiteți e-mailuri separat fiecărui destinatar listat în celule cu script VBA
Codul de mai sus adaugă toate adresele de e-mail din intervalul selectat în câmpul Către din fereastra mesajului. Dacă doriți să trimiteți e-mailuri către fiecare adresă de e-mail listată în celule separat, fără a le lăsa să vadă adresele de e-mail ale altora, puteți încerca următorul script VBA.
1. În foaia de lucru care conține toate adresele de e-mail la care doriți să trimiteți e-mailurile. apasă pe Alt + F11 cheile pentru deschideți fereastra Microsoft Visual Basic pentru aplicații.
2. În Microsoft Visual Basic pentru aplicații fereastră, faceți clic pe Insera > Module, apoi inserați următorul cod în fereastra Modul (Cod).
Cod VBA: Trimiteți e-mailuri la fiecare adresă de e-mail listată în celule 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. Apoi apasa Instrumente > Referințe. În Referințe - VBAProject caseta de dialog, găsiți și verificați Biblioteca de obiecte Microsoft Outlook 16.0 apoi faceți clic pe OK pentru a salva modificările.
4. apasă pe F5 tasta pentru a rula codul și a Kutools pentru Excel apare caseta de dialog. Selectați lista de adrese de e-mail și faceți clic OK.
note:
.Subject = "Test"
.Body = "Dear " _
& vbNewLine & vbNewLine & _
"This is a test email " & _
"sending in Excel"
În acest exemplu, există șase adrese de e-mail în intervalul selectat, astfel încât șase ferestre de mesaje Outlook vor fi create automat cu o adresă de e-mail separată listată în câmpul Către, așa cum se arată în captura de ecran de mai jos.
5. În cele din urmă, faceți clic pe Trimiteți butonul pentru a trimite e-mailul unul câte unul.
2. Introduceți atașamente sau semnătura Outlook în e-mailurile trimise din Excel (cu scripturi VBA)
Această secțiune vă va arăta cum să inserați atașamente sau semnătura implicită Outlook în e-mailurile trimise din Excel.
2.1 Introduceți atașamente în e-mailurile trimise din Excel
Aici descriem diferitele cazuri de inserare a atașamentelor și puteți alege metoda în funcție de nevoile dvs. În această secțiune, puteți învăța să (faceți clic pe oricare dintre următoarele link-uri pentru a naviga la metoda corespunzătoare):
2.1.1 Trimiteți prin e-mail un anumit fișier ca atașament
Puteți aplica următorul cod VBA pentru a trimite prin e-mail unul sau mai multe fișiere dintr-un folder ca atașamente din Excel.
1. apasă pe Alt + F11 chei.
2. În deschidere Microsoft Visual Basic pentru aplicații fereastră, faceți clic pe Insera > Module. Apoi lipiți următorul cod VBA în fereastra Modul (Cod).
Cod VBA: Trimiteți prin e-mail fișierele dintr-un folder ca atașamente din 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
notițe:
3. Apoi apasa Instrumente > Referințe. În Referințe - VBAProject caseta de dialog, găsiți și verificați Biblioteca de obiecte Microsoft Outlook 16.0 apoi faceți clic pe OK pentru a salva modificările.
4. apasă pe F5 tasta pentru a rula codul, apoi a Naviga apare fereastra, selectați fișierele pe care trebuie să le atașați la e-mail, apoi faceți clic OK.
Apoi apare o fereastră de mesaj. Puteți vedea că fișierele selectate sunt afișate ca atașamente în câmpul Atașat.
2.1.2 Trimiteți prin e-mail foaia de lucru curentă ca atașament
Dacă doriți să trimiteți prin e-mail foaia de lucru curentă ca atașament din Excel, puteți aplica scriptul VBA în această secțiune.
1. apasă pe Alt + F11 chei.
2. În deschidere Microsoft Visual Basic pentru aplicații fereastră, faceți clic pe insera > Module. Apoi inserați următorul cod VBA în fișierul Modul (Cod) fereastră.
Cod VBA: Trimiteți prin e-mail foaia de lucru curentă ca atașament
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
note:
3. apasă pe F5 pentru a rula codul, apoi foaia de lucru curentă este salvată ca registru de lucru Excel și inserată automat într-o fereastră de mesaj ca atașament. Vedeți captura de ecran:
Notă: Registrul de lucru atașat care conține doar foaia de lucru curentă are același nume ca și registrul de lucru original. Și momentul în care rulați codul este adăugat și la numele registrului de lucru.
2.1.3 Trimiteți prin e-mail registrul de lucru curent ca atașament
După ce ați învățat codul VBA pentru a trimite prin e-mail foaia de lucru curentă ca atașament din Excel, aici vă oferim un alt script VBA pentru a vă ajuta să trimiteți prin e-mail întregul registru de lucru ca atașament. Vă rugăm să faceți după cum urmează.
1. apasă pe Alt + F11 chei.
2. În deschidere Microsoft Visual Basic pentru aplicații fereastră, faceți clic pe Insera > Modul. Apoi lipiți următorul cod VBA în fereastra Modul (Cod).
Cod VBA: Trimiteți prin e-mail registrul de lucru curent ca atașament din 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
note:
3. apasă pe F5 pentru a rula codul, apoi registrul de lucru curent este inserat automat într-o fereastră de mesaj ca atașament. Vedeți captura de ecran:
2.1.4 Trimiteți prin e-mail întregul registru de lucru ca atașament PDF
Pentru majoritatea oamenilor, ei tind să salveze un registru de lucru Excel ca fișier PDF și apoi să îl trimită altora ca atașament. În această secțiune, vă voi arăta o modalitate de a trimite e-mailuri direct din Excel cu registrul de lucru deschis curent ca atașament PDF, fără a fi nevoie să salvați manual registrul de lucru ca fișier PDF.
1. apasă pe Alt + F11 chei.
2. În deschidere Microsoft Visual Basic pentru aplicații fereastră, faceți clic pe Insera > Modul. Apoi lipiți următorul cod VBA în fereastra Modul (Cod).
Cod VBA: e-mail întregul registru de lucru ca atașament PDF
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
note:
3. apasă pe F5 tasta pentru a rula codul. Apoi registrul de lucru curent este inserat automat într-o fereastră de mesaj nouă ca atașament de fișier PDF. Vedeți captura de ecran:
2.1.5 Trimiteți prin e-mail foaia de lucru curentă ca atașament PDF
De exemplu, există un registru de lucru numit „Vânzări lunare” și ați terminat un tabel cu raport de vânzări într-o foaie de lucru numită „raport vânzări” și doriți să trimiteți această foaie de lucru ca fișier PDF colegilor dvs. Următorul cod VBA vă poate face o favoare.
1. apasă pe Alt + F11 chei.
2. În deschidere Microsoft Visual Basic pentru aplicații fereastră, faceți clic pe insera > Modul. Apoi lipiți următorul cod VBA în fereastra Modul (Cod).
Cod VBA: Trimiteți prin e-mail foaia de lucru curentă ca atașament PDF
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
note:
3. apasă pe F5 tasta pentru a rula codul. Apoi foaia de lucru curentă este inserată automat într-o fereastră de mesaj nouă ca atașament de fișier PDF. Vedeți captura de ecran:
2.2 Introduceți semnătura Outlook în e-mailurile trimise din Excel
Luați cazul de mai sus ca exemplu, aplicați codul VBA de mai sus pentru a trimite foaia de lucru curentă ca atașament de fișier PDF din Excel, dar semnătura Outlook nu poate fi adăugată în fereastra de mesaj. Pentru a păstra semnătura implicită Outlook în e-mailul trimis din Excel, următoarea metodă vă va ajuta.
Două coduri VBA sunt enumerate mai jos.
Cod VBA 1: codul ajută la păstrarea semnăturii Outlook.
Cod VBA 2: codul ajută la e-mail foaia de lucru curentă ca atașament PDF.
Cod VBA 1: Păstrați semnătura Outlook
.HTMLBody = "Email body" & "
" & .HTMLBody
Cod VBA 2: Trimiteți prin e-mail foaia de lucru curentă ca atașament PDF
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. În mod normal, trebuie să apăsați tasta Alt + F11 tastele pentru a deschide Microsoft Visual Basic pentru aplicații fereastră.
2. În Microsoft Visual Basic pentru aplicații fereastră, faceți clic pe Insera > Module. Apoi lipiți codul VBA 2 de mai sus în fereastra Modul (Cod).
3. Pentru a păstra semnătura implicită Outlook în e-mailul trimis din Excel, trebuie să modificați codul VBA 2 după cum urmează:
Iată codul complet după modificare.
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. apasă pe F5 tasta pentru a rula codul. Apoi veți primi o nouă fereastră de mesaj cu foaia de lucru actuală atașată ca fișier PDF, în timp ce semnătura implicită Outlook va fi inserată automat la sfârșitul corpului e-mailului.
3. Trimiteți automat e-mailuri din Excel când este îndeplinită o condiție (cu scripturi VBA)
În exemplele de mai sus, trebuie să rulați manual codul pentru a realiza livrarea e-mailului. Dacă doriți să declanșați automat codul atunci când o anumită condiție este îndeplinită, cum ar fi atunci când o celulă atinge o anumită valoare, când valoarea unei celule se schimbă, când este atinsă o dată etc., e-mailul va fi trimis automat. Această secțiune listează condițiile pe care utilizatorii Excel le-au căutat adesea în Google pentru a vă ajuta să trimiteți automat e-mailuri din Excel atunci când este îndeplinită o anumită condiție.
3.1 Trimiteți automat un e-mail când o celulă atinge o anumită valoare
După cum se arată în captura de ecran de mai jos, să presupunem că aveți un tabel de vânzări cu celula D6 care conține totalul vânzărilor. Doriți să trimiteți automat un e-mail șefului dvs. pe baza totalului vânzărilor, de exemplu, să creați sau să trimiteți un e-mail automat când totalul vânzărilor depășește 10000, dar dacă totalul vânzărilor este egal cu sau mai mic de 10000, nu se ia nicio măsură.
1. În foaia de lucru care conține tabelul de vânzare, faceți clic dreapta pe fila foii și faceți clic Vizualizați codul din meniul cu clic dreapta.
2. În deschidere Microsoft Visual Basic pentru aplicații fereastră, inserați următorul cod VBA în Foaie (Cod) fereastră.
Cod VBA: Trimiteți automat un e-mail atunci când o celulă atinge o anumită valoare în 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
notițe:
xMailBody = "Hi boss" & vbNewLine & vbNewLine & _
"Total sales of over $10,000 in January: " & Range("D6")
De acum înainte, când valoarea din celula D6 depășește 10000, va fi creat un e-mail, așa cum se arată în captura de ecran de mai jos.
3.2 Trimiteți automat un e-mail atunci când valoarea unei celule se schimbă
După cum se arată în captura de ecran de mai jos, să presupunem că primiți un registru de lucru care conține vânzări lunare în diferite foi de lucru și totalul vânzărilor într-o foaie de lucru. Trebuie să verificați totalul vânzărilor și dacă totalul vânzărilor este modificat, trimiteți registrul de lucru înapoi expeditorului și informați expeditorul că celula a fost modificată.
1. În foaia de lucru care conține tabelul de vânzare, faceți clic dreapta pe fila foii și faceți clic Vizualizați codul din meniul cu clic dreapta.
2. În deschidere Microsoft Visual Basic pentru aplicații fereastră, lipiți următorul cod VBA în fereastra Sheet (Code).
Cod VBA: trimiteți automat un e-mail atunci când o anumită valoare a celulei se modifică
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
notițe: În cod,
De acum înainte, când valoarea din celula B14 se schimbă, un mesaj Outlook va fi creat automat, așa cum se arată în captura de ecran de mai jos.
3.3 Trimiteți automat un e-mail atunci când un registru de lucru este salvat
Dacă aveți un registru de lucru care trebuie partajat cu alții după modificare, în mod normal trebuie să salvați registrul de lucru, să lansați clientul de e-mail, să creați un nou e-mail cu acest registru de lucru atașat, să compuneți câmpurile corespunzătoare, apoi să trimiteți e-mailul. Această secțiune vă va arăta o metodă de a crea automat un e-mail de fiecare dată când salvați registrul de lucru. Vă rugăm să faceți după cum urmează.
1. apasă pe Alt + F11 tastele pentru a deschide Microsoft Visual Basic pentru aplicații fereastră.
2. În această fereastră, faceți dublu clic Acest manual de lucru în Proiect panoul, apoi inserați următorul cod VBA în ThisWorkbook (Cod) fereastră.
Cod VBA: trimiteți automat un e-mail atunci când un registru de lucru este salvat
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
notițe: În cod,
3. De acum înainte, la salvarea registrului de lucru apăsând tasta Ctrl + S tastele sau făcând clic pe Economisiți butonul, un e-mail Outlook va fi creat automat. Puteți vedea că registrul de lucru curent este atașat ca atașament și că câmpurile sunt populate cu conținutul specificat. Vedeți captura de ecran:
sfaturi: Dacă utilizați frecvent acest registru de lucru, aici vă recomandăm să salvați registrul de lucru ca un Cartea de lucru Excel Macro-Enabled pentru a salva scriptul VBA pentru utilizare ulterioară. Pașii sunt următorii.
3.4 Trimiteți automat un e-mail la o anumită oră
Să presupunem că trebuie să trimiteți cuiva un e-mail cu un registru de lucru pentru atribuirea sarcinilor in fiecare vineri dimineata la 9 dimineata, și doriți să faceți acest lucru automat în Excel, fără a fi nevoie să operați manual clientul de e-mail. Această secțiune vă va arăta metoda de a face acest lucru.
1. apasă pe Alt + F11 tastele pentru a deschide Microsoft Visual Basic pentru aplicații fereastră.
2. În Microsoft Visual Basic pentru aplicații fereastră, faceți clic pe Insera > Modul. Apoi lipiți următorul cod VBA în fereastra Module.
Cod VBA1: Trimiteți prin e-mail registrul de lucru curent ca atașament din 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. În această fereastră, faceți dublu clic Acest manual de lucru în Proiect panoul, apoi inserați următorul cod VBA în ThisWorkbook (Cod) fereastră.
Cod VBA 2: trimiteți automat un e-mail la o anumită oră
Private Sub Workbook_Open()
Application.OnTime TimeValue("09:00:00"), "Timer"
End Sub
notițe:
4. Salvați codurile și apoi salvați registrul de lucru ca registru de lucru cu macrocomandă Excel, după cum urmează.
5. Deschideți registrul de lucru salvat cu macrocomandă, apoi va fi creat sau trimis automat un e-mail când sosește ziua și ora.
4. Subiecte suplimentare
Această secțiune colectează alte subiecte pe care le puteți întâlni atunci când trimiteți e-mailuri din Excel.
4.1 Trimiteți prin e-mail o serie de celule din Excel (cu script VBA)
Presupunând că există un tabel de vânzări lunare într-o foaie de lucru Excel, așa cum se arată în captura de ecran de mai jos, și trebuie să trimiteți acest tabel de vânzări lunare altora ca conținutul corpului unui e-mail sau ca atașament direct. Aici vă oferim două metode pentru a face acest lucru.
4.1.1 Trimiteți prin e-mail un interval ca parte a conținutului corpului din Excel
Puteți rula următorul cod VBA pentru a trimite o serie de celule ca parte a conținutului corpului de e-mail din Excel
1. apasă pe Alt + F11 tastele pentru a deschide Microsoft Visual Basic pentru aplicații fereastră.
2. În Microsoft Visual Basic pentru aplicații fereastră, faceți clic pe Instrumente > Referinte. Și apoi verificați Biblioteca de obiecte Microsoft Outlook 16.0 caseta și faceți clic OK în Referințe - VBAProject căsuță de dialog.
3. clic Insera > Module, apoi inserați următorul cod VBA în fișierul Modul (Cod) fereastră.
Cod VBA: trimiteți o serie de celule ca parte a conținutului corpului de e-mail din 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
notițe: În cod,
4. apasă pe F5 tasta pentru a rula codul. În a apărut Kutools pentru Excel caseta de dialog, selectați intervalul de celule pe care trebuie să le trimiteți ca parte a conținutului corpului unui e-mail, apoi faceți clic OK. Vedeți captura de ecran:
Apoi va fi creat automat un e-mail Outlook. Puteți vedea că intervalul pe care l-ați selectat în foaia de lucru este inserat în corpul e-mailului. Vedeți captura de ecran:
4.1.2 Trimiteți prin e-mail un interval ca atașament din Excel
Dacă trebuie să trimiteți prin e-mail o serie de celule dintr-o foaie de lucru ca atașament din Excel. Puteți încerca următorul cod VBA.
1. apasă pe Alt + F11 chei.
2. În deschidere Microsoft Visual Basic pentru aplicații fereastră, faceți clic pe Insera > Module. Apoi lipiți următorul cod VBA în fișierul Modul (Cod) fereastră.
Cod VBA: Trimiteți prin e-mail un interval ca atașament din 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
notițe:
3. apasă pe F5 tasta pentru a rula codul. În a apărut Kutools pentru Excel caseta de dialog, selectați intervalul de celule pe care trebuie să le trimiteți ca atașament într-un e-mail, apoi faceți clic OK. Vedeți captura de ecran:
Apoi va fi creat automat un e-mail Outlook. Și intervalul de celule pe care l-ați selectat în foaia de lucru este salvat ca un registru de lucru Excel și atașat în fereastra Mesaj. Vedeți captura de ecran:
4.2 Trimiteți e-mailuri când se face clic pe un buton în Excel
Dacă trebuie să faceți clic pe un buton de comandă pentru a declanșa o macrocomandă pentru trimiterea unui e-mail din Excel, de exemplu, trimiteți registrul de lucru curent ca atașament altora făcând clic pe un buton de comandă din foaia de lucru. Puteți urma pașii următori pentru a finaliza.
1. clic Dezvoltator > Insera > Buton de comandă (control ActiveX). Apoi desenați un buton de comandă în foaia de lucru.
sfaturi: Dacă aveți deja un buton de comandă, omiteți acest pas.
2. apasă pe Alt + F11 tastele pentru a deschide Microsoft Visual Basic pentru aplicații fereastră. În fereastră, faceți clic pe Insera > Modul, apoi inserați codul VBA (codul folosit pentru a trimite prin e-mail registrul de lucru curent ca atașament din Excel) în fereastra Modul (Cod).
Faceți clic aici pentru a obține codul.
notițe: Aici este numele macrocomenzii pe care ați creat-o la pasul 2 Trimite carte de lucru.
3. apasă pe Alt + Q tastele pentru a închide Microsoft Visual Basic pentru aplicații fereastră.
4. Acum trebuie să atribuiți macrocomandă butonului de comandă. Faceți clic dreapta pe butonul de comandă, selectați Afișați codul din meniul cu clic dreapta.
5. Apoi Microsoft Visual Basic pentru aplicații apare fereastra, puteți vedea următoarele două linii sunt listate în Foaie (Cod) fereastră.
Private Sub CommandButton1_Click()
End Sub
6. Introduceți numele macrocomenzii existente în subprocedura pentru butonul de comandă.
7. apasă pe Alt + Q tastele pentru a închide Editor Visual Basic, și faceți clic pe Dezvoltator > Mod de proiectare pentru a dezactiva modul de proiectare.
Acum puteți face clic pe butonul de comandă pentru a trimite un e-mail cu registrul de lucru curent ca atașament în e-mail.
4.3 Trimiteți e-mailuri dintr-un cont de e-mail specificat
În mod normal, la lansarea unui e-mail din Excel cu cod VBA, contul de e-mail al expeditorului este contul implicit în Outlook. Să presupunem că ați configurat mai multe conturi de e-mail în Outlook și doriți să utilizați un anumit cont pentru a trimite e-mailurile din Excel în loc să utilizați contul implicit. Următorul cod VBA vă poate ajuta.
Următoarele coduri sunt necesare în acest caz.
Cod VBA 1:
Dim OutlookMail As Outlook.MailItem
Cod VBA 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
Cum se utilizează codul VBA de mai sus?
În acest exemplu, vom specifica un anumit cont de e-mail pentru a trimite registrul de lucru curent ca atașament din Excel. Vă rugăm să faceți după cum urmează.
1. apasă pe Alt + F11 chei. În Microsoft Visual Basic pentru aplicații fereastră, faceți clic pe Instrumente > Referinte. Și apoi verificați Biblioteca de obiecte Microsoft Outlook 16.0 caseta și faceți clic OK în Referințe - VBAProject căsuță de dialog.
2. clic Insera > Module. Apoi lipiți următorul cod VBA în fișierul Modul (Cod) fereastră.
Cod VBA: trimiteți registrul de lucru curent ca atașament de e-mail din Excel printr-un cont Outlook specificat
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. apasă pe F5 tasta pentru a rula codul. Apoi apare un mesaj de e-mail Outlook, puteți vedea că De la câmpul este completat cu contul de e-mail pe care l-ați specificat în cod.
4.4 Trimiteți un e-mail când a ajuns la o dată
Dacă trebuie să trimiteți un e-mail pe baza unei anumite date limită, de exemplu, așa cum se arată în captura de ecran de mai jos, există un tabel de proiect, când data scadentă din intervalul E2:E7 este egală cu sau mai mică de 7 zile de astăzi (presupunând că data curentă este 2022/8/4), un e-mail va fi trimis automat liderilor de proiect corespunzători și îi va anunța că proiectul este pe cale să expire.
1. În foaia de lucru care conține tabelul de proiect, faceți clic dreapta pe fila foaie și faceți clic Vizualizați codul din meniul cu clic dreapta.
2. În deschidere Microsoft Visual Basic pentru aplicații fereastră, inserați următorul cod VBA în Foaie (Cod) fereastră.
Cod VBA: trimiteți automat un e-mail atunci când este îndeplinită o dată limită
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
notițe: În cod,
3. apasă pe F5 tasta pentru a rula codul. Apoi, dacă data de expirare corespunde condițiilor, se va crea e-mailul corespunzător. În acest caz, două e-mailuri vor fi create, așa cum se arată în captura de ecran de mai jos.
5. Un instrument la îndemână pentru a vă ajuta să trimiteți cu ușurință e-mailuri din Excel
Dacă sunteți un începător VBA, este posibil ca metodele de mai sus să nu fie ușor de gestionat pentru dvs. Aici vă recomandăm Kutools pentru Excel'S Trimite emailuri caracteristică, cu această funcție, puteți trimite cu ușurință e-mailuri din Excel doar cu câteva clicuri. Vă rugăm să faceți după cum urmează.
Înainte de a aplica Kutools pentru Excel, Vă rugăm să descărcați-l și instalați-l mai întâi.
5.1 Creați cu ușurință o listă de corespondență care să includă câmpurile de e-mail de care aveți nevoie
Înainte de a aplica caracteristica Trimitere e-mailuri, trebuie să creați o listă de corespondență care să conțină câmpurile de e-mail de care aveți nevoie. Aici funcția Creare listă de corespondență vă poate ajuta.
1. clic Kutools Plus > Creați o listă de corespondență.
2. În deschidere Creați o listă de corespondență fereastră, trebuie să configurați după cum urmează.
Apoi, este creat un exemplu de tabel de listă de corespondență, așa cum se arată în captura de ecran de mai jos.
3. Acum trebuie să înlocuiți datele originale din eșantion cu propriile date de câmp.
Acum ați creat un tabel cu liste de corespondență. Vă rugăm să continuați să aplicați Trimite emailuri funcția de a trimite e-mailuri din Excel pe baza câmpurilor pe care le-ați creat.
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.
5.2 Trimiteți cu ușurință e-mailuri, inclusiv câmpurile pe care le-ați creat în lista de corespondență
După crearea listei de corespondență (faceți clic pentru a afla cum) care conține câmpurile de care ați putea avea nevoie în e-mailurile dvs., acum puteți trimite e-mailuri din Excel cu aceste câmpuri.
1. Selectați întreaga listă de corespondență, faceți clic Kutools Plus > Trimite emailuri.
2. În Trimite emailuri caseta de dialog, vă rugăm să efectuați următoarea configurație.
3. Apoi a Kutools pentru Excel apare caseta de dialog pentru a vă spune câte e-mailuri sunt trimise, faceți clic pe OK pentru a închide această casetă de dialog.
sfaturi: Puteți merge la Obiecte trimise folderul din Outlook pentru a verifica e-mailurile pe care le-ați trimis.
5.3 Trimiteți cu ușurință e-mailuri cu corp HTML (inclusiv hyperlink, imagine etc.)
Această caracteristică Trimitere e-mailuri vă permite să construiți un e-mail html, care include hyperlink, imagine, diferite dimensiuni de font și culori de font etc.
După crearea unei liste de corespondență care să includă câmpurile de e-mail de care aveți nevoie,
Cand tu configurați caseta de dialog Trimitere e-mailuri, puteți îmbogăți conținutul corpului folosind opțiunile din bara de instrumente.
Vedeți captura de ecran de mai jos:
5.4 Inserați cu ușurință semnătura implicită Outlook atunci când trimiteți e-mailuri
În metoda de mai sus, am demonstrat un cod VBA pentru a vă ajuta să trimiteți e-mailuri cu semnătura implicită Outlook. Aici, cu funcția Trimitere e-mailuri, trebuie doar să bifați o opțiune, apoi semnătura implicită Outlook va fi inserată în e-mailurile pe care le-ați trimis din Excel.
După crearea unei liste de corespondență care să includă câmpurile de e-mail de care aveți nevoie,
Cand configurați caseta de dialog Trimitere e-mailuri, trebuie să faceți clic Opţiuni > Utilizați setările de semnătură Outlook.
notițe: Asigurați-vă că este afișată o bifă înainte de opțiunea Utilizați setările de semnătură ale Outlook.
Când destinatarii primesc e-mailul, ei pot vedea semnătura implicită Outlook afișată la sfârșitul corpului e-mailului.
5.5 Trimiteți cu ușurință e-mailuri dintr-un cont de e-mail specificat
Pentru a utiliza un anumit cont de e-mail pentru a trimite e-mailurile din Excel în loc să utilizați contul implicit, funcția Trimitere e-mailuri poate ajuta, de asemenea, să o finalizați cu ușurință.
După crearea unei liste de corespondență care să includă câmpurile de e-mail de care aveți nevoie,
Cand configurați caseta de dialog Trimitere e-mailuri, trebuie să faceți clic Opţiuni > Trimis de la, apoi faceți clic pe contul de e-mail de la care aveți nevoie pentru a trimite e-mailuri.
notițe: După selectarea contului de e-mail, înaintea acestuia va fi afișată o bifă.
Clic aici pentru a afla mai multe despre această funcție Trimitere e-mailuri.
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.
În concluzie, trimiterea de e-mailuri din Excel este destul de utilă în munca noastră de zi cu zi. Acest articol acoperă subiecte mai cuprinzătoare ale trimiterii de e-mailuri din Excel, dacă există alte subiecte sau soluții mai ușoare, vă rugăm să lăsați un comentariu pentru a mă anunța.
Cele mai bune instrumente de productivitate de birou
Î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 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!