Vadnica za Excel – pošiljanje e-pošte iz Excela
Običajno za pošiljanje e-pošte uporabljamo e-poštne odjemalce, kot so Outlook, Gmail itd. Toda mnogi ljudje shranjujejo podatke v Excelove delovne zvezke in morajo nekatere podatke poslati drugim, medtem ko delajo z njimi. Zato morajo e-pošto pošiljati neposredno iz Excelovega delovnega zvezka, kar prihrani čas delovanja e-poštnega odjemalca. Ta vadnica po korakih vam bo pokazala, kako pošiljati e-pošto iz Excela pod različnimi pogoji.
Opombe: Preden uporabite naslednje metode, morate v računalniku konfigurirati e-poštni odjemalec Outlook in ga nastaviti kot privzetega e-poštnega odjemalca.
Kazalo: [ Skrij ]
1. Osnove pošiljanja e-pošte iz Excela
Ta razdelek predstavlja osnove pošiljanja e-pošte iz Excela.
1.1 Pošiljanje e-pošte iz Excela z vgrajenimi funkcijami Excel
Če želite pošiljati samo preprosta e-poštna sporočila iz Excela, vključno s polji Za, Zadeva, Kp in telo. Vgrajene funkcije v Excelu so lahko v pomoč.
1.1.1 Pošljite e-pošto iz Excela s formulo
Kot je prikazano v spodnji tabeli, lahko za pošiljanje različnih e-poštnih sporočil iz Excela na podlagi danih polj uporabite sklice na celice danih polj, da ustvarite različne formule hiperpovezave, da to storite. Ko ustvarite e-poštne hiperpovezave, lahko kliknete hiperpovezavo, ki jo potrebujete za samodejno pošiljanje e-poštnega sporočila.
Opomba: Če je v poljih Za ali Kp več kot en prejemnik, jih ločite s podpičji.
Ta razdelek je razdeljen na štiri dele, ki prikazujejo korake za ločeno dodajanje e-poštnega naslova, prejemnika(-ev) Kp, zadeve in telesa besedila v formulo hiperpovezave. Prosimo, naredite naslednje.
Sintaksa in argumenti HIPERPOVEZAVA funkcije so naslednje.
Sintaksa
HYPERLINK(link_location, [friendly_name])
Argumenti
1.1.1.1 Dodajte e-poštni naslov formuli hiperpovezave
Tukaj uporabljamo "mailto:" kot del formule za dodajanje prejemnika e-pošte. V tem primeru je e-poštni naslov prvega prejemnika v celici B2, zato moramo dodati »mailto:« in se sklicevati na celico B2.
»mailto:«&B2
1. Izberite celico za prikaz hiperpovezave. V tem primeru izberem celico F2.
2. Nato vanj vnesite naslednjo formulo.
=HYPERLINK("mailto:"&B2)
Opombe: Če pritisnete Vnesite tipko, bo ustvarjena hiperpovezava, kot je prikazano na spodnjem posnetku zaslona. Ko kliknete povezavo, bo ustvarjeno Outlookovo e-poštno sporočilo in prejemnikov e-poštni naslov bo samodejno izpolnjen v polje Za.
E-poštni naslov prejemnika je zdaj dodan formuli hiperpovezave. Prosimo, nadaljujte z naslednjimi koraki, da dodate zadevo, prejemnike Cc in telo besedila, kot ga potrebujete.
1.1.1.2 Dodajte prejemnike Kp v formulo Hiperpovezava
Če želite v funkcijo hiperpovezave dodati prejemnike Kp, dodajte "?cc=" kot del formule, kot sledi.
Formula v celici F2 mora biti naslednja:
=HYPERLINK("mailto:" & B2 & "?cc=" & C2)
1.1.1.3 Dodajte zadevo v formulo hiperpovezave
Če želite funkciji hiperpovezave dodati zadevo, dodajte "&subject=" kot del formule, kot sledi.
Formula v celici F2 bi morala zdaj izgledati takole:
=HYPERLINK("mailto:" & B2 & "?cc=" & C2 & "&subject="& D2)
1.1.1.4 Dodajte telo besedila s prelomi vrstic formuli hiperpovezave
Zadnji korak je dodajanje telesa besedila formuli hiperpovezave. Kot lahko vidite v primeru, sta dve vrstici besedila v E2 ločeni s prelomom vrstice in želite ohraniti prelom vrstice v telesu e-pošte. Ali Outlook v tej okoliščini prepozna prelom vrstice? Preverimo ga.
Če želite formuli hiperpovezave dodati telo besedila, morate dodati “&body=” kot del formule, kot sledi.
Formula v celici F2 je zdaj prikazana takole:
=HYPERLINK("mailto:" & B2 & "?cc=" & C2 & "&subject="& D2 & "&body="& E2)
Opomba: Če pritisnete Vnesite ključ in kliknite na povezavo. V novem e-poštnem sporočilu lahko vidite, da je vsebina v telesu e-poštnega sporočila prikazana v isti vrstici.
Če želite prikazati telo e-pošte v ločenih vrsticah, morate spremeniti vsebino celice tako, da dodate kodo znaka za povratni začetek %0A na besedilo, kjer morate vstaviti prelom vrstice. Oglejte si posnetek zaslona:
1.1.1.5 Določite besedilo za prikaz hiperpovezave
V zgornjih korakih smo zaključili argument Link_location z e-poštnimi polji. Tukaj v tem razdelku bomo dokončali naslednji argument [prijazno_ime].
V tem primeru želim, da celica hiperpovezave prikaže besedilo kot "E-pošta na xx«, kjer je xx ime prejemnika v A2. Torej je treba formulo v F2 spremeniti v:
=HYPERLINK("mailto:" & B2 & "?cc=" & C2 & "&subject="& D2 & "&body="& E2, "Email to "&A2)
Pritisnite Vnesite ključ, da dobite rezultat.
Izberite to celico formule in jo povlecite Ročaj za samodejno izpolnjevanje navzdol, da ustvarite druge e-poštne hiperpovezave. Oglejte si posnetek zaslona:
1.1.2 Pošiljanje e-pošte iz Excela s funkcijo hiperpovezave
Razen uporabe zgornje formule za hiperpovezavo, lahko ročno ustvarite e-poštno hiperpovezavo z Vstavi Hiperpovezava funkcijo v Excelu. Ta razdelek vam bo pokazal korake.
1. Z desno miškino tipko kliknite e-pošto, kamor želite vstaviti hiperpovezavo, izberite Link v meniju z desnim klikom.
2. V pojavnem oknu Vstavite hiperpovezavo pogovorno okno, morate konfigurirati na naslednji način.
Ko kliknete hiperpovezavo, bo ustvarjeno Outlookovo e-poštno sporočilo z navedenimi polji Za, Zadeva in Telo, kot je prikazano na spodnjem posnetku zaslona.
Opombe:
1.2 Pošljite e-pošto več prejemnikom v celicah s skriptom VBA
V zgornjem primeru lahko vidite več e-poštnih naslovov, prikazanih v celici, ločenih s podpičji. Če imate seznam e-poštnih naslovov, kot je prikazano na spodnjem posnetku zaslona, in želite vsem poslati e-pošto ali neodvisno e-pošto, vam lahko naslednja koda VBA naredi uslugo.
1.2.1 Pošljite e-pošto več prejemnikom v celicah s skriptom VBA
1. Na delovnem listu, ki vsebuje vse e-poštne naslove, na katere želite poslati e-pošto. Pritisnite druga + F11 tipke za odpiranje Microsoft Visual Basic za aplikacije okno.
2. V Ljubljani Microsoft Visual Basic za aplikacije okno, kliknite Vstavi > Modul, in nato prilepite naslednjo kodo v Modul (koda) okno.
Koda VBA: Pošlji e-pošto na seznam e-poštnih naslovov
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. Pritisnite F5 tipka za zagon kode in a Kutools za Excel se prikaže pogovorno okno. Izberite seznam e-poštnih naslovov in kliknite OK.
Opombe:
.Body = "Dear " _
& vbNewLine & vbNewLine & _
"This is a test email " & _
"sending in Excel"
Po zagonu kode so vsi e-poštni naslovi v izbranem obsegu prikazani v polju Za v oknu s sporočilom. Oglejte si posnetek zaslona:
1.2.2 Ločeno pošiljanje e-pošte vsakemu prejemniku, navedenemu v celicah s skriptom VBA
Zgornja koda doda vse e-poštne naslove v izbranem obsegu v polje Za v oknu sporočila. Če želite pošiljati e-poštna sporočila na vsak e-poštni naslov, naveden v celicah, ločeno, ne da bi jim dovolili, da vidijo e-poštne naslove drug drugega, lahko poskusite z naslednjim skriptom VBA.
1. Na delovnem listu, ki vsebuje vse e-poštne naslove, na katere želite poslati e-pošto. Pritisnite tipko druga + F11 tipke do odprite okno Microsoft Visual Basic for Applications.
2. V Ljubljani Microsoft Visual Basic za aplikacije okno, kliknite Vstavi > Moduli, in nato prilepite naslednjo kodo v okno Module (Koda).
Koda VBA: pošljite e-pošto na vsak e-poštni naslov, naveden v celicah, posebej
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. Nato kliknite Orodja > Reference. v Reference - VBAProject pogovorno okno, poiščite in označite Knjižnica predmetov Microsoft Outlook 16.0 polje in nato kliknite OK Gumb, da shranite spremembe.
4. Pritisnite F5 tipka za zagon kode in a Kutools za Excel se prikaže pogovorno okno. Izberite seznam e-poštnih naslovov in kliknite OK.
Opombe:
.Subject = "Test"
.Body = "Dear " _
& vbNewLine & vbNewLine & _
"This is a test email " & _
"sending in Excel"
V tem primeru je v izbranem obsegu šest e-poštnih naslovov, tako da bo samodejno ustvarjenih šest oken Outlookovega sporočila z ločenim e-poštnim naslovom, navedenim v polju Za, kot je prikazano na spodnjem posnetku zaslona.
5. Končno kliknite Pošlji gumb za pošiljanje enega za drugim.
2. V e-poštna sporočila, poslana iz Excela (s skripti VBA), vstavite priloge ali Outlookov podpis.
Ta razdelek vam bo pokazal, kako vstavite priloge ali Outlookov privzeti podpis v e-poštna sporočila, poslana iz Excela.
2.1 V e-poštna sporočila, poslana iz Excela, vstavite priloge
Tukaj opisujemo različne primere vstavljanja priponk, vi pa lahko izberete način glede na vaše potrebe. V tem razdelku se lahko naučite (kliknite katero koli od naslednjih povezav za navigacijo do ustrezne metode):
2.1.1 Po e-pošti pošljite določeno datoteko kot prilogo
Naslednjo kodo VBA lahko uporabite za e-pošto ene ali več datotek v mapi kot priloge iz Excela.
1. Pritisnite druga + F11 ključi.
2. Na odprtju Microsoft Visual Basic za aplikacije okno, kliknite Vstavi > Moduli. Nato prilepite naslednjo kodo VBA v okno Module (Koda).
Koda VBA: datoteke v mapi po e-pošti kot priloge iz Excela
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
Opombe:
3. Nato kliknite Orodja > Reference. v Reference - VBAProject pogovorno okno, poiščite in označite Knjižnica predmetov Microsoft Outlook 16.0 polje in nato kliknite OK Gumb, da shranite spremembe.
4. Pritisnite F5 tipko za zagon kode, nato a Brskanje se prikaže okno, izberite datoteke, ki jih želite priložiti e-poštnemu sporočilu, in nato kliknite OK.
Nato se prikaže okno s sporočilom. Vidite lahko, da so izbrane datoteke prikazane kot priloge v polju Priloženo.
2.1.2 Po e-pošti pošljite trenutni delovni list kot prilogo
Če želite trenutni delovni list poslati po e-pošti kot prilogo iz Excela, lahko uporabite skript VBA v tem razdelku.
1. Pritisnite druga + F11 ključi.
2. Na odprtju Microsoft Visual Basic za aplikacije okno, kliknite vstavite > Moduli. Nato prilepite naslednjo kodo VBA v Modul (koda) okno.
Koda VBA: Trenutni delovni list po e-pošti kot prilogo
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
Opombe:
3. Pritisnite F5 za zagon kode, se trenutni delovni list shrani kot Excelov delovni zvezek in samodejno vstavi v okno s sporočilom kot priloga. Oglejte si posnetek zaslona:
Opomba: Priložen delovni zvezek, ki vsebuje samo trenutni delovni list, ima isto ime kot izvirni delovni zvezek. Imenu delovnega zvezka je dodan tudi čas, ko zaženete kodo.
2.1.3 Po e-pošti pošljite trenutni delovni zvezek kot prilogo
Ko se naučite kode VBA za pošiljanje trenutnega delovnega lista kot priloge iz Excela, tukaj nudimo še en skript VBA, ki vam pomaga poslati celoten delovni zvezek kot prilogo po e-pošti. Prosimo, naredite naslednje.
1. Pritisnite druga + F11 ključi.
2. Na odprtju Microsoft Visual Basic za aplikacije okno, kliknite Vstavi > Modul. Nato prilepite naslednjo kodo VBA v okno Module (Koda).
Koda VBA: Trenutni delovni zvezek po e-pošti kot prilogo iz Excela
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
Opombe:
3. Pritisnite F5 za zagon kode, se trenutni delovni zvezek samodejno vstavi v okno sporočila kot priloga. Oglejte si posnetek zaslona:
2.1.4 Celoten delovni zvezek po e-pošti kot prilogo PDF
Večina ljudi običajno shrani Excelov delovni zvezek kot datoteko PDF in ga nato pošlje kot prilogo drugim. V tem razdelku vam bom pokazal način pošiljanja e-poštnih sporočil neposredno iz Excela s trenutno odprtim delovnim zvezkom kot prilogo PDF, ne da bi morali ročno shraniti delovni zvezek kot datoteko PDF.
1. Pritisnite druga + F11 ključi.
2. Na odprtju Microsoft Visual Basic za aplikacije okno, kliknite Vstavi > Modul. Nato prilepite naslednjo kodo VBA v okno Module (Koda).
Koda VBA: Celoten delovni zvezek po e-pošti kot prilogo 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
Opombe:
3. Pritisnite F5 tipko za zagon kode. Nato se trenutni delovni zvezek samodejno vstavi v okno za novo sporočilo kot priloga datoteke PDF. Oglejte si posnetek zaslona:
2.1.5 Po e-pošti pošljite trenutni delovni list kot prilogo PDF
Na primer, obstaja delovni zvezek z imenom »Mesečna prodaja« in končali ste tabelo poročila o prodaji na delovnem listu z imenom »poročilo o prodaji« in želite ta delovni list poslati kot datoteko PDF svojim sodelavcem. Naslednja koda VBA vam lahko naredi uslugo.
1. Pritisnite druga + F11 ključi.
2. Na odprtju Microsoft Visual Basic za aplikacije okno, kliknite vstavite > Modul. Nato prilepite naslednjo kodo VBA v okno Module (Koda).
Koda VBA: Trenutni delovni list po e-pošti kot prilogo 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
Opombe:
3. Pritisnite F5 tipko za zagon kode. Nato se trenutni delovni list samodejno vstavi v okno za novo sporočilo kot priloga datoteke PDF. Oglejte si posnetek zaslona:
2.2 Vstavite Outlookov podpis v e-poštna sporočila, poslana iz Excela
Vzemite zgornji primer kot primer, uporabite zgornjo kodo VBA, da pošljete trenutni delovni list kot prilogo datoteke PDF iz Excela, vendar Outlookovega podpisa ni mogoče dodati v okno sporočila. Če želite ohraniti Outlookov privzeti podpis v e-pošti, poslani iz Excela, vam bo pomagala naslednja metoda.
Spodaj sta navedeni dve kodi VBA.
Koda VBA 1: koda pomaga ohraniti Outlookov podpis.
Koda VBA 2: koda pomaga poslati trenutni delovni list po e-pošti kot prilogo PDF.
Koda VBA 1: ohrani Outlookov podpis
.HTMLBody = "Email body" & "
" & .HTMLBody
Koda VBA 2: po e-pošti pošljite trenutni delovni list kot prilogo 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. Običajno morate pritisniti druga + F11 tipke za odpiranje Microsoft Visual Basic za aplikacije okno.
2. V Ljubljani Microsoft Visual Basic za aplikacije okno, kliknite Vstavi > Moduli. Nato prilepite zgornjo kodo VBA 2 v okno Module (Koda).
3. Če želite ohraniti Outlookov privzeti podpis v e-pošti, poslani iz Excela, morate spremeniti kodo VBA 2, kot sledi:
Tukaj je celotna koda po spremembi.
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. Pritisnite F5 tipko za zagon kode. Nato boste dobili okno z novim sporočilom s pripetim trenutnim delovnim listom kot datoteko PDF, medtem ko bo Outlookov privzeti podpis samodejno vstavljen na konec telesa e-pošte.
3. Samodejno pošiljanje e-pošte iz Excela, ko je izpolnjen pogoj (s skripti VBA)
V zgornjih primerih morate kodo zagnati ročno, da dosežete dostavo e-pošte. Če želite samodejno sprožiti kodo, ko je izpolnjen določen pogoj, na primer ko celica doseže določeno vrednost, ko se spremeni vrednost celice, ko je dosežen datum itd., bo e-poštno sporočilo poslano samodejno. V tem razdelku so navedeni pogoji, ki so jih uporabniki Excela pogosto iskali v Googlu, da bi vam pomagali pri samodejnem pošiljanju e-pošte iz Excela, ko je izpolnjen določen pogoj.
3.1 Samodejno pošlji e-pošto, ko celica doseže določeno vrednost
Kot je prikazano na spodnjem posnetku zaslona, predpostavimo, da imate tabelo prodaje s celico D6, ki vsebuje skupno prodajo. Svojemu šefu želite samodejno poslati e-pošto na podlagi skupne prodaje, na primer samodejno ustvarite ali pošljite e-poštno sporočilo, ko skupna prodaja preseže 10000, če pa je skupna prodaja enaka ali manjša od 10000, se ne izvede nobeno dejanje.
1. Na delovnem listu, ki vsebuje tabelo prodaje, z desno miškino tipko kliknite zavihek lista in kliknite Ogled kode v meniju z desnim klikom.
2. Na odprtju Microsoft Visual Basic za aplikacije prilepite naslednjo kodo VBA v List (koda) okno.
Koda VBA: samodejno pošlji e-pošto, ko celica doseže določeno vrednost v Excelu
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
Opombe:
xMailBody = "Hi boss" & vbNewLine & vbNewLine & _
"Total sales of over $10,000 in January: " & Range("D6")
Od zdaj naprej, ko vrednost v celici D6 preseže 10000, bo ustvarjeno e-poštno sporočilo, kot je prikazano na spodnjem posnetku zaslona.
3.2 Samodejno pošlji e-pošto, ko se spremeni vrednost celice
Kot je prikazano na spodnjem posnetku zaslona, predpostavimo, da prejmete delovni zvezek, ki vsebuje mesečno prodajo v različnih delovnih listih in skupno prodajo v delovnem listu. Preveriti morate skupno prodajo in če je skupna prodaja spremenjena, poslati delovni zvezek nazaj pošiljatelju in ga obvestiti, da je bila celica spremenjena.
1. Na delovnem listu, ki vsebuje tabelo prodaje, z desno miškino tipko kliknite zavihek lista in kliknite Ogled kode v meniju z desnim klikom.
2. Na odprtju Microsoft Visual Basic za aplikacije prilepite naslednjo kodo VBA v okno Sheet (Code).
Koda VBA: samodejno pošlji e-pošto, ko se spremeni podana vrednost celice
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
Opombe: V kodi,
Od zdaj naprej, ko se spremeni vrednost v celici B14, bo Outlookovo sporočilo ustvarjeno samodejno, kot je prikazano na spodnjem posnetku zaslona.
3.3 Samodejno pošiljanje e-pošte, ko je delovni zvezek shranjen
Če imate delovni zvezek, ki ga morate po spreminjanju dati v skupno rabo z drugimi, morate običajno shraniti delovni zvezek, zagnati e-poštni odjemalec, ustvariti novo e-poštno sporočilo s tem delovnim zvezkom, sestaviti ustrezna polja in nato poslati e-poštno sporočilo. Ta razdelek vam bo pokazal način za samodejno ustvarjanje e-pošte vsakič, ko shranite delovni zvezek. Prosimo, naredite naslednje.
1. Pritisnite druga + F11 tipke za odpiranje Microsoft Visual Basic za aplikacije okno.
2. V tem oknu dvakrat kliknite Ta delovni zvezek v Projekt podoknu, nato prilepite naslednjo kodo VBA v ThisWorkbook (koda) okno.
Koda VBA: samodejno pošlji e-pošto, ko je delovni zvezek shranjen
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
Opombe: V kodi,
3. Odslej pri shranjevanju delovnega zvezka s pritiskom na Ctrl + S tipke ali klik na Shrani Outlookovo e-poštno sporočilo bo ustvarjeno samodejno. Vidite lahko, da je trenutni delovni zvezek priložen kot priloga in da so polja izpolnjena z navedeno vsebino. Oglejte si posnetek zaslona:
nasveti: Če pogosto uporabljate ta delovni zvezek, priporočamo, da delovni zvezek shranite kot Excelov delovni zvezek z omogočeno makro da shranite skript VBA za prihodnjo uporabo. Koraki so naslednji.
3.4 Samodejno pošiljanje e-pošte ob določenem času
Recimo, da morate nekomu poslati e-pošto z delovnim zvezkom za dodelitev nalog vsak petek zjutraj ob 9, in želite to narediti samodejno v Excelu, ne da bi morali ročno upravljati e-poštnega odjemalca. Ta razdelek vam bo pokazal, kako to storiti.
1. Pritisnite druga + F11 tipke za odpiranje Microsoft Visual Basic za aplikacije okno.
2. V Ljubljani Microsoft Visual Basic za aplikacije okno, kliknite Vstavi > Modul. Nato prilepite naslednjo kodo VBA v okno modula.
Koda VBA1 : Trenutni delovni zvezek po e-pošti kot prilogo iz Excela
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. V tem oknu dvakrat kliknite Ta delovni zvezek v Projekt podoknu, nato prilepite naslednjo kodo VBA v ThisWorkbook (koda) okno.
Koda VBA 2: Samodejno pošiljanje e-pošte ob določenem času
Private Sub Workbook_Open()
Application.OnTime TimeValue("09:00:00"), "Timer"
End Sub
Opombe:
4. Shranite kode in nato shranite delovni zvezek kot Excelov delovni zvezek z omogočenimi makri, kot sledi.
5. Odprite shranjeni delovni zvezek z omogočenimi makri, nato pa bo e-poštno sporočilo ustvarjeno ali poslano samodejno, ko prideta dan in ura.
4. Dodatne teme
V tem razdelku so zbrane druge teme, na katere lahko naletite pri pošiljanju e-pošte iz Excela.
4.1 Po e-pošti pošljite niz celic iz Excela (s skriptom VBA)
Recimo, da je na Excelovem delovnem listu mesečna prodajna tabela, kot je prikazano na spodnjem posnetku zaslona, in morate to mesečno prodajno tabelo poslati drugim kot vsebino telesa e-pošte ali neposredno kot prilogo. Tukaj vam ponujamo dva načina, kako to storiti.
4.1.1 Po e-pošti pošljite obseg kot del vsebine telesa iz Excela
Zaženete lahko naslednjo kodo VBA, da pošljete obseg celic kot del vsebine telesa e-pošte iz Excela
1. Pritisnite druga + F11 tipke za odpiranje Microsoft Visual Basic za aplikacije okno.
2. V Ljubljani Microsoft Visual Basic za aplikacije okno, kliknite Orodja > Reference. In nato preverite Knjižnica predmetov Microsoft Outlook 16.0 in kliknite OK v Reference - VBAProject pogovorno okno.
3. klik Vstavi > Moduli, nato prilepite naslednjo kodo VBA v Modul (koda) okno.
Koda VBA: pošljite obseg celic kot del vsebine telesa e-pošte iz Excela
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
Opombe: V kodi,
4. Pritisnite F5 tipko za zagon kode. V pojavnem oknu Kutools za Excel pogovornem oknu izberite obseg celic, ki jih morate poslati kot del vsebine telesa e-pošte, nato kliknite OK. Oglejte si posnetek zaslona:
Nato bo samodejno ustvarjeno Outlookovo e-poštno sporočilo. Vidite lahko, da je obseg, ki ste ga izbrali na delovnem listu, vstavljen v telo e-pošte. Oglejte si posnetek zaslona:
4.1.2 Pošljite obseg kot prilogo iz Excela po e-pošti
Če morate po e-pošti poslati vrsto celic na delovnem listu kot prilogo iz Excela. Poskusite lahko z naslednjo kodo VBA.
1. Pritisnite druga + F11 ključi.
2. Na odprtju Microsoft Visual Basic za aplikacije okno, kliknite Vstavi > Moduli. Nato prilepite naslednjo kodo VBA v Modul (koda) okno.
Koda VBA: po e-pošti obseg kot prilogo iz Excela
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
Opombe:
3. Pritisnite F5 tipko za zagon kode. V pojavnem oknu Kutools za Excel pogovornem oknu izberite obseg celic, ki jih želite poslati kot prilogo v e-poštnem sporočilu, nato kliknite OK. Oglejte si posnetek zaslona:
Nato bo samodejno ustvarjeno Outlookovo e-poštno sporočilo. In obseg celic, ki ste jih izbrali na delovnem listu, se shrani kot Excelov delovni zvezek in pripne v okno Sporočilo. Oglejte si posnetek zaslona:
4.2 Pošiljanje e-poštnih sporočil, ko v Excelu kliknete gumb
Če morate na primer klikniti ukazni gumb, da sprožite makro za pošiljanje e-pošte iz Excela, pošljite trenutni delovni zvezek kot prilogo drugim, tako da kliknete ukazni gumb na delovnem listu. Sledite naslednjim korakom, da to storite.
1. klik Razvojni > Vstavi > Ukazni gumb (nadzor ActiveX). Nato narišite ukazni gumb na delovnem listu.
nasveti: Če že imate ukazni gumb, preskočite ta korak.
2. Pritisnite druga + F11 tipke za odpiranje Microsoft Visual Basic za aplikacije okno. V oknu kliknite Vstavi > Modue, nato prilepite kodo VBA (kodo, ki se uporablja za pošiljanje trenutnega delovnega zvezka kot priloge iz Excela) v okno Module (Koda).
Kliknite tukaj, da dobite kodo.
Opombe: Tukaj je ime makra, ki ste ga ustvarili v 2. koraku SendWorkbook.
3. Pritisnite druga + Q tipke za zapiranje Microsoft Visual Basic za aplikacije okno.
4. Sedaj morate ukaznemu gumbu dodeliti makro. Desni klik na ukazni gumb, izberite Ogled kode v meniju z desno tipko miške kliknite.
5. Nato Microsoft Visual Basic za aplikacije se pojavi okno, lahko vidite, da sta naslednji dve vrstici navedeni v List (koda) okno.
Private Sub CommandButton1_Click()
End Sub
6. Vnesite ime obstoječega makra znotraj podpostopka za ukazni gumb.
7. Pritisnite druga + Q tipke za zapiranje Visual Basic urejevalnikin kliknite Razvojni > Način oblikovanja da izklopite način oblikovanja.
Zdaj lahko kliknete ukazni gumb, da pošljete e-pošto s trenutnim delovnim zvezkom kot prilogo v e-pošti.
4.3 Pošiljanje e-pošte z določenega e-poštnega računa
Običajno je pri zagonu e-pošte iz Excela s kodo VBA e-poštni račun pošiljatelja privzeti račun v Outlooku. Recimo, da ste v svojem Outlooku konfigurirali več e-poštnih računov in želite uporabiti določen račun za pošiljanje e-pošte iz Excela namesto uporabe privzetega računa. Naslednja koda VBA vam lahko pomaga.
V tem primeru so potrebne naslednje kode.
VBA koda 1:
Dim OutlookMail As Outlook.MailItem
VBA koda 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
Kako uporabiti zgornjo kodo VBA?
V tem primeru bomo določili določen e-poštni račun za pošiljanje trenutnega delovnega zvezka kot prilogo iz Excela. Prosimo, naredite naslednje.
1. Pritisnite druga + F11 ključi. V Microsoft Visual Basic za aplikacije okno, kliknite Orodja > Reference. In nato preverite Knjižnica predmetov Microsoft Outlook 16.0 in kliknite OK v Reference - VBAProject pogovorno okno.
2. klik Vstavi > Moduli. Nato prilepite naslednjo kodo VBA v Modul (koda) okno.
Koda VBA: pošljite trenutni delovni zvezek kot e-poštno prilogo iz Excela prek določenega Outlookovega računa
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. Pritisnite F5 tipko za zagon kode. Nato se pojavi Outlookovo e-poštno sporočilo, lahko vidite, da je od polje je izpolnjeno z e-poštnim računom, ki ste ga navedli v kodi.
4.4 Pošlji e-pošto, ko je dosežen datum
Če morate poslati e-pošto na podlagi določenega roka, na primer, kot je prikazano na spodnjem posnetku zaslona, je na voljo tabela projektov, ko je datum zapadlosti v obsegu E2:E7 enak ali krajši od 7 dni od danes (ob predpostavki, da je trenutni datum 2022), bo e-poštno sporočilo samodejno poslano ustreznim vodjem projekta in jih obvestilo, da bo projekt kmalu potekel.
1. V delovnem listu, ki vsebuje projektno tabelo, z desno miškino tipko kliknite zavihek lista in kliknite Ogled kode v meniju z desnim klikom.
2. Na odprtju Microsoft Visual Basic za aplikacije prilepite naslednjo kodo VBA v List (koda) okno.
Koda VBA: samodejno pošlji e-pošto, ko je izpolnjen rok
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
Opombe: V kodi,
3. Pritisnite F5 tipko za zagon kode. Če se datum poteka ujema s pogoji, bo ustvarjeno ustrezno e-poštno sporočilo. V tem primeru bosta ustvarjeni dve e-poštni sporočili, kot je prikazano na spodnjem posnetku zaslona.
5. Priročno orodje za enostavno pošiljanje e-pošte iz Excela
Če ste novinec v VBA, vam zgornje metode morda ne bodo lahke. Tukaj priporočamo Kutools za ExcelJe Pošlji e-pošto funkcija, s to funkcijo lahko enostavno pošiljate e-pošto iz Excela z le nekaj kliki. Prosimo, naredite naslednje.
Pred vložitvijo vloge Kutools za ExcelProsim najprej ga prenesite in namestite.
5.1 Preprosto ustvarite poštni seznam, ki vključuje polja za e-pošto, ki jih potrebujete
Preden uporabite funkcijo pošiljanja e-pošte, morate ustvariti poštni seznam, ki vsebuje polja e-pošte, ki jih potrebujete. Tukaj vam lahko pomaga funkcija Ustvari poštni seznam.
1. klik Kutools Plus > Ustvari poštni seznam.
2. Na odprtju Ustvari poštni seznam okno, morate konfigurirati na naslednji način.
Nato se ustvari vzorčna tabela poštnega seznama, kot je prikazano na spodnjem posnetku zaslona.
3. Sedaj morate zamenjati izvirne podatke v vzorcu s svojimi podatki polja.
Zdaj ste ustvarili tabelo poštnega seznama. Prosimo, nadaljujte z uporabo Pošlji e-pošto funkcijo za pošiljanje e-pošte iz Excela na podlagi polj, ki ste jih ustvarili.
Če želite imeti brezplačno (30-dnevno) preskusno različico tega pripomočka, kliknite, če ga želite prenestiin nato nadaljujte z uporabo postopka v skladu z zgornjimi koraki.
5.2 Preprosto pošiljanje e-pošte, vključno s polji, ki ste jih ustvarili na poštnem seznamu
Po ustvarjanju poštnega seznama (kliknite, če želite izvedeti, kako), ki vsebuje polja, ki jih morda potrebujete v svojih e-poštnih sporočilih, lahko zdaj pošiljate e-poštna sporočila iz Excela s temi polji.
1. Izberite celoten poštni seznam, kliknite Kutools Plus > Pošlji e-pošto.
2. V Ljubljani Pošlji e-pošto pogovornem oknu, naredite naslednjo konfiguracijo.
3. Nato a Kutools za Excel se prikaže pogovorno okno, ki vam pove, koliko e-poštnih sporočil je poslanih, kliknite OK , da zaprete to pogovorno okno.
nasveti: Lahko greš na Poslani predmeti mapo v Outlooku, da preverite poslana e-poštna sporočila.
5.3 Enostavno pošiljanje e-poštnih sporočil s telesom HTML (vključno s hiperpovezavo, sliko itd.)
Ta funkcija pošiljanja e-poštnih sporočil vam omogoča, da ustvarite e-poštno sporočilo html, ki vključuje hiperpovezavo, sliko, različne velikosti in barve pisave itd.
po ustvarjanje poštnega seznama, ki vključuje e-poštna polja, ki jih potrebujete,
Ko konfigurirajte pogovorno okno Pošlji e-pošto, lahko vsebino telesa obogatite z možnostmi v orodni vrstici.
Oglejte si spodnji posnetek zaslona:
5.4 Enostavno vstavite Outlookov privzeti podpis pri pošiljanju e-pošte
V zgornji metodi smo prikazali kodo VBA, ki vam pomaga pošiljati e-pošto s privzetim podpisom Outlook. Pri funkciji pošiljanja e-poštnih sporočil morate samo potrditi možnost, nato pa bo privzeti podpis Outlook vstavljen v e-poštna sporočila, ki ste jih poslali iz Excela.
po ustvarjanje poštnega seznama, ki vključuje e-poštna polja, ki jih potrebujete,
Kdaj konfigurirajte pogovorno okno Pošlji e-pošto, morate klikniti možnosti > Uporabite Outlookove nastavitve podpisa.
Opombe: Prepričajte se, da je pred možnostjo Uporabi Outlookove nastavitve podpisa prikazana kljukica.
Ko prejemniki prejmejo e-pošto, lahko vidijo Outlookov privzeti podpis, prikazan na koncu telesa e-pošte.
5.5 Preprosto pošiljanje e-pošte z določenega e-poštnega računa
Če želite uporabiti določen e-poštni račun za pošiljanje e-poštnih sporočil iz Excela namesto uporabe privzetega računa, vam lahko pomaga tudi funkcija Pošlji e-poštna sporočila.
po ustvarjanje poštnega seznama, ki vključuje e-poštna polja, ki jih potrebujete,
Kdaj konfigurirajte pogovorno okno Pošlji e-pošto, morate klikniti možnosti > Poslano od, nato kliknite e-poštni račun, s katerega želite pošiljati e-pošto.
Opombe: Ko izberete e-poštni račun, bo pred njim prikazana kljukica.
klik tukaj če želite izvedeti več o tej funkciji pošiljanja e-pošte.
Če želite imeti brezplačno (30-dnevno) preskusno različico tega pripomočka, kliknite, če ga želite prenestiin nato nadaljujte z uporabo postopka v skladu z zgornjimi koraki.
Skratka, pošiljanje e-pošte iz Excela je zelo uporabno pri našem vsakodnevnem delu. Ta članek pokriva obsežnejše teme pošiljanja e-pošte iz Excela. Če obstajajo druge teme ali enostavnejše rešitve, pustite komentar, da me obvestite.
Najboljša pisarniška orodja za produktivnost
Napolnite svoje Excelove spretnosti s Kutools za Excel in izkusite učinkovitost kot še nikoli prej. Kutools za Excel ponuja več kot 300 naprednih funkcij za povečanje produktivnosti in prihranek časa. Kliknite tukaj, če želite pridobiti funkcijo, ki jo najbolj potrebujete...
Kartica Office prinaša vmesnik z zavihki v Office in poenostavi vaše delo
- Omogočite urejanje in branje z zavihki v Wordu, Excelu, PowerPointu, Publisher, Access, Visio in Project.
- Odprite in ustvarite več dokumentov v novih zavihkih istega okna in ne v novih oknih.
- Poveča vašo produktivnost za 50%in vsak dan zmanjša na stotine klikov miške za vas!