Výukový program Excel – Odesílání e-mailů z Excelu
K odesílání e-mailů běžně používáme e-mailové klienty, jako je Outlook, Gmail atd. Mnoho lidí však ukládá data do sešitů aplikace Excel a při práci s nimi potřebuje některá data odeslat ostatním. Potřebují tedy posílat e-maily přímo z excelového sešitu, což šetří čas na obsluhu e-mailového klienta. Tento podrobný návod vám ukáže, jak odesílat e-maily z Excelu za různých podmínek.
Poznámka: Před použitím následujících metod je třeba nakonfigurovat e-mailového klienta Outlook v počítači a nastavit jej jako výchozího e-mailového klienta.
Obsah: [ Skrýt ]
1. Základy odesílání emailů z Excelu
Tato část představuje základy odesílání e-mailů z aplikace Excel.
1.1 Odesílejte e-maily z aplikace Excel s vestavěnými funkcemi aplikace Excel
Pokud chcete z Excelu odesílat pouze jednoduché e-maily, které obsahují pouze pole Komu, Předmět, Kopie a Tělo. Pomoci mohou vestavěné funkce v Excelu.
1.1.1 Odeslání e-mailu z Excelu se vzorcem
Jak je uvedeno v tabulce níže, chcete-li odesílat různé e-maily z aplikace Excel na základě daných polí, můžete použít odkazy na buňky daných polí k vytvoření různých vzorců hypertextových odkazů. Po vytvoření e-mailových hypertextových odkazů můžete kliknout na hypertextový odkaz, který potřebujete k automatickému odeslání e-mailu.
Poznámka: Pokud je v polích Komu nebo Kopie více příjemců, oddělte je středníkem.
Tato část je rozdělena do čtyř částí, které vám ukáží kroky k samostatnému přidání e-mailové adresy, příjemců kopie, předmětu a hlavního textu do vzorce hypertextového odkazu. Postupujte prosím následovně.
Syntaxe a argumenty HYPERLINK funkce jsou následující.
Syntax
HYPERLINK(link_location, [friendly_name])
Argumenty
1.1.1.1 Přidat e-mailovou adresu do vzorce hypertextového odkazu
Tady používáme "mailto:" jako součást vzorce pro přidání příjemce e-mailu. V tomto příkladu je e-mailová adresa prvního příjemce v buňce B2, takže musíme přidat „mailto:“ a odkazovat na buňku B2.
„mailto:“&B2
1. Vyberte buňku pro zobrazení hypertextového odkazu. V tomto případě vyberu buňku F2.
2. Poté do něj zadejte následující vzorec.
=HYPERLINK("mailto:"&B2)
Poznámka: Pokud stisknete tlačítko vstoupit vytvoří se hypertextový odkaz, jak je znázorněno na níže uvedeném snímku obrazovky. Když kliknete na odkaz, vytvoří se e-mail Outlook a e-mailová adresa příjemce se automaticky vyplní do pole Komu.
E-mailová adresa příjemce je nyní přidána do vzorce hypertextový odkaz. Pokračujte prosím následujícími kroky a přidejte předmět, příjemce (příjemce) kopie a hlavní text podle potřeby.
1.1.1.2 Přidat příjemce (příjemce) kopie do vzorce hypertextového odkazu
Chcete-li přidat příjemce (příjemce) kopie do funkce hypertextového odkazu, přidejte "?cc=" jako součást vzorce takto.
Vzorec v buňce F2 by měl vypadat takto:
=HYPERLINK("mailto:" & B2 & "?cc=" & C2)
1.1.1.3 Přidání předmětu do vzorce hypertextového odkazu
Chcete-li přidat předmět do funkce hypertextového odkazu, přidejte "&předmět=" jako součást vzorce takto.
Vzorec v buňce F2 by nyní měl vypadat takto:
=HYPERLINK("mailto:" & B2 & "?cc=" & C2 & "&subject="& D2)
1.1.1.4 Přidání hlavního textu se zalomením řádků do vzorce hypertextového odkazu
Posledním krokem je přidání hlavního textu do vzorce Hypertextový odkaz. Jak můžete vidět na příkladu, dva řádky textu v E2 jsou odděleny zalomením řádku a vy chcete zalomení řádku ponechat v těle e-mailu. Rozpozná aplikace Outlook za těchto okolností zalomení řádku? Pojďme to zkontrolovat.
Chcete-li přidat hlavní text do vzorce hypertextový odkaz, musíte přidat „&body=“ jako součást vzorce takto.
Vzorec v buňce F2 se nyní zobrazí takto:
=HYPERLINK("mailto:" & B2 & "?cc=" & C2 & "&subject="& D2 & "&body="& E2)
Poznámka: Pokud stisknete vstoupit klíč a klikněte na odkaz. V novém e-mailu můžete vidět, že obsah v těle e-mailu je zobrazen na stejném řádku.
Chcete-li zobrazit tělo e-mailu v samostatných řádcích, musíte upravit obsah buňky přidáním kódu znaku pro návrat vozíku %0A k textu, kam je potřeba vložit zalomení řádku. Viz snímek obrazovky:
1.1.1.5 Zadejte text, který se má zobrazit pro hypertextový odkaz
Ve výše uvedených krocích jsme dokončili argument umístění_odkazu s e-mailovými poli. Zde v této sekci dokončíme další argument [friendly_name].
V tomto případě chci, aby buňka hypertextového odkazu zobrazila text jako „Email na xx“, kde xx je jméno příjemce v A2. Takže vzorec v F2 by měl být změněn na:
=HYPERLINK("mailto:" & B2 & "?cc=" & C2 & "&subject="& D2 & "&body="& E2, "Email to "&A2)
Stiskněte vstoupit klíč k získání výsledku.
Vyberte tuto buňku vzorce a přetáhněte ji Rukojeť automatického vyplňování dolů k vytvoření dalších e-mailových hypertextových odkazů. Viz snímek obrazovky:
1.1.2 Odesílání e-mailů z Excelu pomocí funkce hypertextového odkazu
S výjimkou použití výše uvedeného vzorce hypertextového odkazu můžete ručně vytvořit e-mailový hypertextový odkaz pomocí Vložit Hyperlink funkce v Excelu. Tato část vám ukáže kroky.
1. Klikněte pravým tlačítkem na e-mail, kam chcete vložit hypertextový odkaz, a vyberte Odkaz z nabídky pravého tlačítka myši.
2. Ve vyskakovacím okně Vložit hypertextový odkaz dialogové okno, musíte nakonfigurovat následujícím způsobem.
Po kliknutí na hypertextový odkaz se vytvoří e-mail aplikace Outlook se zadanými poli Komu, Předmět a Tělo, jak je znázorněno na obrázku níže.
Poznámky:
1.2 Odesílání e-mailů více příjemcům v buňkách pomocí skriptu VBA
Ve výše uvedeném příkladu vidíte, že v buňce je zobrazeno více e-mailových adres oddělených středníky. Pokud máte seznam e-mailových adres, jak je znázorněno na níže uvedeném snímku obrazovky, a chcete všem z nich poslat e-mail nebo nezávislý e-mail, může vám pomoci následující kód VBA.
1.2.1 Odeslání e-mailu více příjemcům v buňkách pomocí skriptu VBA
1. V listu, který obsahuje všechny e-mailové adresy, na které chcete e-mail odeslat. zmáčkni Další + F11 klávesy pro otevření Microsoft Visual Basic pro aplikace okno.
2. V Microsoft Visual Basic pro aplikace okno, klepněte na tlačítko Vložit > Modul, a poté vložte následující kód do Modul (kód) okno.
Kód VBA: Odešlete e-mail na seznam e-mailových adres
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. zmáčkni F5 klíč pro spuštění kódu a a Kutools pro Excel objeví se dialogové okno. Vyberte seznam e-mailových adres a klikněte OK.
Poznámky:
.Body = "Dear " _
& vbNewLine & vbNewLine & _
"This is a test email " & _
"sending in Excel"
Po spuštění kódu se v poli Komu v okně zprávy zobrazí všechny e-mailové adresy ve zvoleném rozsahu. Viz snímek obrazovky:
1.2.2 Odesílejte e-maily samostatně každému příjemci uvedenému v buňkách pomocí skriptu VBA
Výše uvedený kód přidá všechny e-mailové adresy ve vybraném rozsahu do pole Komu v okně zprávy. Pokud chcete posílat e-maily na každou e-mailovou adresu uvedenou v buňkách samostatně, aniž byste jim umožnili vidět e-mailové adresy toho druhého, můžete vyzkoušet následující skript VBA.
1. V listu, který obsahuje všechny e-mailové adresy, na které chcete e-maily odesílat. zmáčkni Další + F11 klíče k otevřete okno Microsoft Visual Basic for Applications.
2. V Microsoft Visual Basic pro aplikace okno, klepněte na tlačítko Vložit > Modula potom vložte následující kód do okna Modul (Code).
Kód VBA: Odesílejte e-maily na každou e-mailovou adresu uvedenou v buňkách samostatně
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. Pak klikněte na tlačítko Tools > Reference. v Reference - VBAProject v dialogovém okně vyhledejte a zkontrolujte Objektová knihovna Microsoft Outlook 16.0 a potom klepněte na tlačítko OK pro uložení změn.
4. zmáčkni F5 klíč pro spuštění kódu a a Kutools pro Excel objeví se dialogové okno. Vyberte seznam e-mailových adres a klikněte OK.
Poznámky:
.Subject = "Test"
.Body = "Dear " _
& vbNewLine & vbNewLine & _
"This is a test email " & _
"sending in Excel"
V tomto příkladu je ve vybraném rozsahu šest e-mailových adres, takže se automaticky vytvoří šest oken zpráv aplikace Outlook se samostatnou e-mailovou adresou uvedenou v poli Komu, jak je znázorněno na obrázku níže.
5. Nakonec klikněte na Poslat tlačítko pro odeslání e-mailu jeden po druhém.
2. Vložte přílohy nebo podpis aplikace Outlook do e-mailů odeslaných z aplikace Excel (pomocí skriptů VBA)
Tato část vám ukáže, jak vložit přílohy nebo výchozí podpis aplikace Outlook do e-mailů odeslaných z aplikace Excel.
2.1 Vkládání příloh do e-mailů odeslaných z Excelu
Zde popisujeme různé případy vkládání příloh a způsob si můžete vybrat podle svých potřeb. V této části se můžete naučit (kliknutím na kterýkoli z následujících odkazů přejděte na odpovídající metodu):
2.1.1 Odeslat určitý soubor e-mailem jako přílohu
Následující kód VBA můžete použít k odeslání jednoho nebo více souborů ve složce e-mailem jako přílohy z aplikace Excel.
1. zmáčkni Další + F11 klíče.
2. V otvoru Microsoft Visual Basic pro aplikace okno, klepněte na tlačítko Vložit > Modul. Poté vložte následující kód VBA do okna Modul (Code).
Kód VBA: E-mailem soubory ve složce jako přílohy z aplikace 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
Poznámky:
3. Pak klikněte na tlačítko Tools > Reference. v Reference - VBAProject v dialogovém okně vyhledejte a zkontrolujte Objektová knihovna Microsoft Outlook 16.0 a potom klepněte na tlačítko OK pro uložení změn.
4. zmáčkni F5 klíč ke spuštění kódu, pak a Procházet se objeví okno, vyberte prosím soubory, které potřebujete k e-mailu připojit, a poté klikněte OK.
Poté se objeví okno se zprávou. Vybrané soubory se zobrazují jako přílohy v poli Připojeno.
2.1.2 Odeslat aktuální list e-mailem jako přílohu
Pokud chcete aktuální list odeslat e-mailem jako přílohu z aplikace Excel, můžete použít skript VBA v této části.
1. zmáčkni Další + F11 klíče.
2. V otvoru Microsoft Visual Basic pro aplikace okno, klepněte na tlačítko INSERT > Modul. Poté vložte následující kód VBA do Modul (kód) okno.
Kód VBA: Odeslat aktuální list e-mailem jako přílohu
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
Poznámky:
3. zmáčkni F5 pro spuštění kódu, pak se aktuální list uloží jako sešit aplikace Excel a automaticky se vloží do okna zprávy jako příloha. Viz snímek obrazovky:
Poznámka: Přiložený sešit, který obsahuje pouze aktuální list, má stejný název jako původní sešit. A čas, kdy kód spustíte, se přidá také do názvu sešitu.
2.1.3 Odeslat aktuální sešit e-mailem jako přílohu
Poté, co se naučíte kód VBA pro odesílání aktuálního listu e-mailem jako přílohu z aplikace Excel, zde nabízíme další skript VBA, který vám pomůže odeslat celý sešit e-mailem jako přílohu. Postupujte prosím následovně.
1. zmáčkni Další + F11 klíče.
2. V otvoru Microsoft Visual Basic pro aplikace okno, klepněte na tlačítko Vložit > Modul. Poté vložte následující kód VBA do okna Modul (Code).
Kód VBA: E-mailem aktuální sešit jako příloha z Excelu
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
Poznámky:
3. zmáčkni F5 pro spuštění kódu, pak se aktuální sešit automaticky vloží do okna zprávy jako příloha. Viz snímek obrazovky:
2.1.4 Odeslat celý sešit e-mailem jako přílohu PDF
Většina lidí má tendenci uložit sešit aplikace Excel jako soubor PDF a poté jej poslat jako přílohu ostatním. V této části vám ukážu způsob, jak odesílat e-maily přímo z Excelu s aktuálně otevřeným sešitem jako přílohu PDF, aniž byste museli sešit ručně ukládat jako soubor PDF.
1. zmáčkni Další + F11 klíče.
2. V otvoru Microsoft Visual Basic pro aplikace okno, klepněte na tlačítko Vložit > Modul. Poté vložte následující kód VBA do okna Modul (Code).
Kód VBA: E-mailem celý sešit jako příloha 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
Poznámky:
3. zmáčkni F5 klíč ke spuštění kódu. Poté se aktuální sešit automaticky vloží do nového okna zprávy jako příloha souboru PDF. Viz snímek obrazovky:
2.1.5 Odeslat aktuální pracovní list e-mailem jako přílohu PDF
Existuje například sešit s názvem „Měsíční prodej“ a vy jste dokončili tabulku sestavy prodeje v listu s názvem „Zpráva o prodeji“ a chcete tento list odeslat jako soubor PDF svým kolegům. Následující kód VBA vám může pomoci.
1. zmáčkni Další + F11 klíče.
2. V otvoru Microsoft Visual Basic pro aplikace okno, klepněte na tlačítko INSERT > Modul. Poté vložte následující kód VBA do okna Modul (Code).
Kód VBA: Odešlete aktuální list e-mailem jako přílohu 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
Poznámky:
3. zmáčkni F5 klíč ke spuštění kódu. Poté se aktuální list automaticky vloží do nového okna zprávy jako příloha souboru PDF. Viz snímek obrazovky:
2.2 Vložení podpisu aplikace Outlook do e-mailů odeslaných z aplikace Excel
Vezměte si výše uvedený případ jako příklad, použijete výše uvedený kód VBA k odeslání aktuálního listu jako přílohy souboru PDF z aplikace Excel, ale do okna zprávy nelze přidat podpis aplikace Outlook. Chcete-li zachovat výchozí podpis aplikace Outlook v e-mailu odeslaném z aplikace Excel, pomůže následující metoda.
Níže jsou uvedeny dva kódy VBA.
Kód VBA 1: Kód pomáhá zachovat podpis aplikace Outlook.
Kód VBA 2: Kód pomáhá odeslat aktuální list e-mailem jako přílohu PDF.
Kód VBA 1: Zachovejte podpis aplikace Outlook
.HTMLBody = "Email body" & "
" & .HTMLBody
Kód VBA 2: Odešlete aktuální list e-mailem jako přílohu 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. Normálně musíte stisknout tlačítko Další + F11 klávesy pro otevření Microsoft Visual Basic pro aplikace okno.
2. V Microsoft Visual Basic pro aplikace okno, klepněte na tlačítko Vložit > Modul. Poté vložte výše uvedený kód VBA 2 do okna Modul (Code).
3. Chcete-li zachovat výchozí podpis aplikace Outlook v e-mailu odeslaném z aplikace Excel, musíte upravit kód VBA 2 následovně:
Zde je kompletní kód po úpravě.
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. zmáčkni F5 klíč ke spuštění kódu. Poté získáte nové okno zprávy s aktuálním listem připojeným jako soubor PDF, přičemž výchozí podpis aplikace Outlook bude automaticky vložen na konec těla e-mailu.
3. Automaticky odesílat e-maily z Excelu, když je splněna podmínka (pomocí skriptů VBA)
Ve výše uvedených příkladech musíte kód spustit ručně, abyste dosáhli doručení e-mailu. Pokud chcete, aby se kód automaticky spustil, když je splněna určitá podmínka, například když buňka dosáhne určité hodnoty, když se změní hodnota buňky, když dosáhne datum atd., e-mail bude odeslán automaticky. V této části jsou uvedeny podmínky, které uživatelé Excelu často vyhledávali na Googlu, aby vám pomohli automaticky odesílat e-maily z Excelu, když je splněna určitá podmínka.
3.1 Automaticky odeslat e-mail, když buňka dosáhne určité hodnoty
Jak je znázorněno na obrázku níže, předpokládejme, že máte tabulku prodeje s buňkou D6 obsahující celkový objem prodeje. Chcete automaticky odeslat e-mail svému šéfovi na základě celkového objemu prodeje, například vytvořit nebo odeslat e-mail automaticky, když součet prodejů překročí 10000 10000, ale pokud je součet prodejů roven nebo menší než XNUMX XNUMX, neprovede se žádná akce.
1. V listu obsahujícím prodejní tabulku klikněte pravým tlačítkem na záložku listu a klikněte Zobrazit kód z nabídky pravého tlačítka myši.
2. V otvoru Microsoft Visual Basic pro aplikace okno, vložte následující kód VBA do List (kód) okno.
Kód VBA: Automaticky odeslat e-mail, když buňka dosáhne určité hodnoty 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
Poznámky:
xMailBody = "Hi boss" & vbNewLine & vbNewLine & _
"Total sales of over $10,000 in January: " & Range("D6")
Od této chvíle, když hodnota v buňce D6 překročí 10000 XNUMX, bude vytvořen e-mail, jak je znázorněno na obrázku níže.
3.2 Automaticky odeslat e-mail, když se změní hodnota buňky
Jak je znázorněno na obrázku níže, předpokládejme, že obdržíte sešit, který obsahuje měsíční prodeje v různých listech a celkový objem prodeje v listu. Musíte ověřit součet prodejů a pokud se součet prodejů změní, odešlete sešit zpět odesílateli a informujte odesílatele, že buňka byla změněna.
1. V listu obsahujícím prodejní tabulku klikněte pravým tlačítkem na záložku listu a klikněte Zobrazit kód z nabídky pravého tlačítka myši.
2. V otvoru Microsoft Visual Basic pro aplikace v okně Sheet (Code) vložte následující kód VBA.
Kód VBA: Automaticky odeslat e-mail, když se změní zadaná hodnota buňky
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
Poznámky: V kódu,
Od této chvíle se při změně hodnoty v buňce B14 automaticky vytvoří zpráva aplikace Outlook, jak je znázorněno na obrázku níže.
3.3 Automaticky odeslat e-mail při uložení sešitu
Pokud máte sešit, který je třeba po úpravě sdílet s ostatními, obvykle je potřeba sešit uložit, spustit e-mailového klienta, vytvořit nový e-mail s tímto sešitem připojeným, vytvořit odpovídající pole a odeslat e-mail. Tato část vám ukáže způsob, jak vytvořit e-mail automaticky pokaždé, když uložíte sešit. Postupujte prosím následovně.
1. zmáčkni Další + F11 klávesy pro otevření Microsoft Visual Basic pro aplikace okno.
2. V tomto okně dvakrát klikněte Tato pracovní kniha v Projekt podokně a vložte následující kód VBA do Tento sešit (kód) okno.
Kód VBA: Automaticky odeslat e-mail při uložení sešitu
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
Poznámky: V kódu,
3. Od této chvíle při ukládání sešitu stisknutím tlačítka Ctrl + S kláves nebo kliknutím na Uložit tlačítko, automaticky se vytvoří e-mail aplikace Outlook. Můžete vidět, že aktuální sešit je připojen jako příloha a pole jsou vyplněna zadaným obsahem. Viz snímek obrazovky:
Tipy: Pokud tento sešit často používáte, zde doporučujeme uložit sešit jako soubor Sešit se zvýšeným makra Excel uložit skript VBA pro budoucí použití. Postup je následující.
3.4 Automaticky odeslat e-mail v určitý čas
Řekněme, že potřebujete někomu poslat e-mail se sešitem zadání úkolu každý pátek ráno v 9 hodina chcete to udělat automaticky v Excelu, aniž byste museli ručně obsluhovat e-mailového klienta. Tato část vám ukáže způsob, jak toho dosáhnout.
1. zmáčkni Další + F11 klávesy pro otevření Microsoft Visual Basic pro aplikace okno.
2. V Microsoft Visual Basic pro aplikace okno, klepněte na tlačítko Vložit > Modul. Poté vložte následující kód VBA do okna modulu.
Kód VBA1 : Odešlete aktuální sešit e-mailem jako přílohu z aplikace 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. V tomto okně dvakrát klikněte Tato pracovní kniha v Projekt podokně a vložte následující kód VBA do Tento sešit (kód) okno.
Kód VBA 2: Automaticky odeslat e-mail v určitý čas
Private Sub Workbook_Open()
Application.OnTime TimeValue("09:00:00"), "Timer"
End Sub
Poznámky:
4. Uložte kódy a poté uložte sešit jako sešit Excel s podporou maker následovně.
5. Otevřete svůj uložený sešit s podporou maker a poté bude vytvořen nebo automaticky odeslán e-mail, jakmile nastane den a čas.
4. Další témata
Tato část shromažďuje další témata, se kterými se můžete setkat při odesílání e-mailů z aplikace Excel.
4.1 E-mail s řadou buněk z Excelu (se skriptem VBA)
Předpokládejme, že v listu aplikace Excel je tabulka měsíčního prodeje, jak je znázorněno na snímku obrazovky níže, a musíte tuto tabulku měsíčního prodeje odeslat ostatním jako obsah těla e-mailu nebo přímo jako přílohu. Zde vám nabízíme dva způsoby, jak toho dosáhnout.
4.1.1 E-mailem rozsah jako součást obsahu těla z Excelu
Můžete spustit následující kód VBA a odeslat rozsah buněk jako součást obsahu těla e-mailu z Excelu
1. zmáčkni Další + F11 klávesy pro otevření Microsoft Visual Basic pro aplikace okno.
2. V Microsoft Visual Basic pro aplikace okno, klepněte na tlačítko Tools > Reference. A pak zkontrolujte Objektová knihovna Microsoft Outlook 16.0 a klepněte na tlačítko OK v Reference - VBAProject dialogové okno.
3. cvaknutí Vložit > Modula poté vložte následující kód VBA do Modul (kód) okno.
Kód VBA: Odešle rozsah buněk jako součást obsahu těla e-mailu z aplikace 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
Poznámky: V kódu,
4. zmáčkni F5 klíč ke spuštění kódu. Ve vyskakovaném Kutools pro Excel dialogovém okně vyberte rozsah buněk, které chcete odeslat jako součást obsahu těla e-mailu, a poté klepněte OK. Viz snímek obrazovky:
Poté se automaticky vytvoří e-mail aplikace Outlook. Můžete vidět, že rozsah, který jste vybrali v listu, je vložen do těla e-mailu. Viz snímek obrazovky:
4.1.2 E-mailem rozsah jako příloha z Excelu
Pokud potřebujete odeslat e-mailem rozsah buněk v listu jako přílohu z Excelu. Můžete vyzkoušet následující kód VBA.
1. zmáčkni Další + F11 klíče.
2. V otvoru Microsoft Visual Basic pro aplikace okno, klepněte na tlačítko Vložit > Modul. Poté vložte následující kód VBA do Modul (kód) okno.
Kód VBA: E-mailem rozsah jako příloha z Excelu
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
Poznámky:
3. zmáčkni F5 klíč ke spuštění kódu. Ve vyskakovaném Kutools pro Excel V dialogovém okně vyberte rozsah buněk, které chcete odeslat jako přílohu v e-mailu, a klepněte na OK. Viz snímek obrazovky:
Poté se automaticky vytvoří e-mail aplikace Outlook. Rozsah buněk, které jste vybrali v listu, se uloží jako sešit aplikace Excel a připojí se v okně Zpráva. Viz snímek obrazovky:
4.2 Odesílání e-mailů po kliknutí na tlačítko v aplikaci Excel
Pokud potřebujete klepnout na příkazové tlačítko ke spuštění makra pro odeslání e-mailu z Excelu, například odešlete aktuální sešit jako přílohu ostatním kliknutím na příkazové tlačítko v listu. Chcete-li to provést, postupujte podle následujících kroků.
1. cvaknutí Vývojka > Vložit > Příkazové tlačítko (ovládání ActiveX). Potom nakreslete příkazové tlačítko v listu.
Tipy: Pokud již máte příkazové tlačítko, tento krok přeskočte.
2. zmáčkni Další + F11 klávesy pro otevření Microsoft Visual Basic pro aplikace okno. V okně klikněte na Vložit > Režima poté vložte kód VBA (kód používaný k odeslání aktuálního sešitu e-mailem jako přílohu z Excelu) do okna Modul (Kód).
Poznámka: Zde je název makra, které jste vytvořili v kroku 2 OdeslatSešit.
3. zmáčkni Další + Q klávesy pro zavření Microsoft Visual Basic pro aplikace okno.
4. Nyní je potřeba přiřadit makro příkazovému tlačítku. Klepněte pravým tlačítkem myši na příkazové tlačítko, vyberte Zobrazit kód z nabídky pravým tlačítkem myši.
5. Potom Microsoft Visual Basic pro aplikace se objeví okno, můžete vidět následující dva řádky List (kód) okno.
Private Sub CommandButton1_Click()
End Sub
6. Do dílčího postupu pro příkazové tlačítko zadejte název existujícího makra.
7. zmáčkni Další + Q klávesy pro zavření Editor jazyka Visual Basic, a klepněte na tlačítko Vývojka > Režim návrhu pro vypnutí režimu návrhu.
Nyní můžete kliknout na příkazové tlačítko a odeslat e-mail s aktuálním sešitem jako přílohu e-mailu.
4.3 Odesílání e-mailů ze zadaného e-mailového účtu
Obvykle je při spouštění e-mailu z Excelu s kódem VBA výchozím účtem v Outlooku e-mailový účet odesílatele. Předpokládejme, že jste v aplikaci Outlook nakonfigurovali několik e-mailových účtů a chcete místo výchozího účtu používat k odesílání e-mailů z aplikace Excel určitý účet. Pomoci může následující kód VBA.
V tomto případě jsou nutné následující kódy.
VBA kód 1:
Dim OutlookMail As Outlook.MailItem
VBA kód 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
Jak použít výše uvedený kód VBA?
V tomto příkladu určíme určitý e-mailový účet pro odeslání aktuálního sešitu jako přílohy z aplikace Excel. Postupujte prosím následovně.
1. zmáčkni Další + F11 klíče. V Microsoft Visual Basic pro aplikace okno, klepněte na tlačítko Tools > Reference. A pak zkontrolujte Objektová knihovna Microsoft Outlook 16.0 a klepněte na tlačítko OK v Reference - VBAProject dialogové okno.
2. cvaknutí Vložit > Modul. Poté vložte následující kód VBA do Modul (kód) okno.
Kód VBA: Odešle aktuální sešit jako přílohu e-mailu z Excelu prostřednictvím zadaného účtu Outlook
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. zmáčkni F5 klíč ke spuštění kódu. Poté se objeví e-mailová zpráva aplikace Outlook, můžete vidět, že od pole je vyplněno e-mailovým účtem, který jste zadali v kódu.
4.4 Odešlete e-mail po dosažení data
Pokud potřebujete odeslat e-mail na základě konkrétního data splatnosti, například, jak je znázorněno na obrázku níže, existuje tabulka projektu, když se datum splatnosti v rozsahu E2:E7 rovná nebo je kratší než 7 dní ode dneška (za předpokladu, že aktuální datum je 2022. 8. 4), bude příslušným vedoucím projektu automaticky zaslán e-mail s upozorněním, že platnost projektu brzy skončí.
1. V listu obsahujícím tabulku projektu klepněte pravým tlačítkem na záložku listu a klepněte na Zobrazit kód z nabídky pravého tlačítka myši.
2. V otvoru Microsoft Visual Basic pro aplikace okno, vložte následující kód VBA do List (kód) okno.
Kód VBA: Automaticky odeslat e-mail, když je splněno datum splatnosti
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
Poznámky: V kódu,
3. zmáčkni F5 klíč ke spuštění kódu. Poté, pokud datum vypršení platnosti odpovídá podmínkám, bude vytvořen odpovídající e-mail. V tomto případě budou vytvořeny dva e-maily, jak je znázorněno na obrázku níže.
5. Praktický nástroj, který vám pomůže snadno odesílat e-maily z Excelu
Pokud jste nováček VBA, výše uvedené metody pro vás nemusí být snadné zvládnout. Zde doporučujeme Kutools pro ExcelJe Odeslat e-maily Pomocí této funkce můžete snadno odesílat e-maily z aplikace Excel pouze několika kliknutími. Postupujte prosím následovně.
Před aplikací Kutools pro Excel, Prosím nejprve si jej stáhněte a nainstalujte.
5.1 Snadno vytvořte seznam adresátů, který obsahuje e-mailová pole, která potřebujete
Před použitím funkce Odeslat e-maily musíte vytvořit seznam adresátů, který bude obsahovat e-mailová pole, která potřebujete. Zde může pomoci funkce Vytvořit seznam adresátů.
1. cvaknutí Kutools Plus > Vytvořte seznam adresátů.
2. V otvoru Vytvořte seznam adresátů okno, musíte nakonfigurovat následovně.
Poté se vytvoří vzorová tabulka mailing listu, jak je znázorněno na obrázku níže.
3. Nyní musíte nahradit původní data ve vzorku svými vlastními daty z pole.
Nyní jste vytvořili tabulku konference. Pokračujte prosím uplatněním Odeslat e-maily funkce pro odesílání e-mailů z Excelu na základě vámi vytvořených polí.
Pokud chcete mít bezplatnou (30denní) zkušební verzi tohoto nástroje, kliknutím jej stáhněte, a poté přejděte k použití operace podle výše uvedených kroků.
5.2 Snadno posílejte e-maily včetně polí, která jste vytvořili v seznamu adresátů
Po vytvoření seznamu adresátů (kliknutím zjistíte jak), která obsahuje pole, která můžete ve svých e-mailech potřebovat, můžete nyní odesílat e-maily z aplikace Excel s těmito poli.
1. Vyberte celý seznam adresátů, klikněte Kutools Plus > Odeslat e-maily.
2. V Odeslat e-maily dialogovém okně proveďte následující konfiguraci.
3. Pak a Kutools pro Excel Zobrazí se dialogové okno, které vám řekne, kolik e-mailů bylo odesláno, klikněte na OK zavřete toto dialogové okno.
Tipy: Můžete jít do Odeslané položky složky v aplikaci Outlook, abyste mohli zkontrolovat odeslané e-maily.
5.3 Snadno posílejte e-maily s tělem HTML (včetně hypertextového odkazu, obrázku atd.)
Tato funkce Odeslat e-maily vám umožňuje vytvořit e-mail ve formátu HTML, který obsahuje hypertextový odkaz, obrázek, různé velikosti písma a barvy písma atd.
Po vytvoření seznamu adresátů, který obsahuje e-mailová pole, která potřebujete,
Když nakonfigurujte dialogové okno Odeslat e-maily, můžete obsah těla zbohatnout pomocí možností na panelu nástrojů.
Podívejte se na snímek obrazovky níže:
5.4 Snadné vložení výchozího podpisu aplikace Outlook při odesílání e-mailů
Ve výše uvedené metodě jsme předvedli kód VBA, který vám pomůže odesílat e-maily s výchozím podpisem aplikace Outlook. Zde s funkcí Odeslat e-maily stačí zaškrtnout možnost a do e-mailů odeslaných z aplikace Excel se vloží výchozí podpis aplikace Outlook.
Po vytvoření seznamu adresátů, který obsahuje e-mailová pole, která potřebujete,
Kdy nakonfigurujte dialogové okno Odeslat e-maily, musíte kliknout možnosti > Použijte nastavení podpisu Outlooku.
Poznámka: Ujistěte se, že je před možností Použít nastavení podpisu aplikace Outlook zobrazena značka zaškrtnutí.
Když příjemci obdrží e-mail, uvidí na konci těla e-mailu zobrazený výchozí podpis aplikace Outlook.
5.5 Snadné odesílání e-mailů ze zadaného e-mailového účtu
Chcete-li k odesílání e-mailů z Excelu místo výchozího účtu použít určitý e-mailový účet, může vám to také pomoci funkce Odeslat e-maily.
Po vytvoření seznamu adresátů, který obsahuje e-mailová pole, která potřebujete,
Kdy nakonfigurujte dialogové okno Odeslat e-maily, musíte kliknout možnosti > Odesláno za poté klikněte na e-mailový účet, ze kterého chcete odesílat e-maily.
Poznámka: Po výběru e-mailového účtu se před ním zobrazí značka zaškrtnutí.
klikněte zde Chcete-li se dozvědět více o této funkci Odesílání e-mailů.
Pokud chcete mít bezplatnou (30denní) zkušební verzi tohoto nástroje, kliknutím jej stáhněte, a poté přejděte k použití operace podle výše uvedených kroků.
Závěrem lze říci, že odesílání e-mailů z Excelu je v naší každodenní práci docela užitečné. Tento článek se zabývá obsáhlejšími tématy odesílání e-mailů z aplikace Excel, pokud existují další témata nebo jednodušší řešení, zanechte mi prosím komentář.
Nejlepší nástroje pro produktivitu v kanceláři
Rozšiřte své dovednosti Excel pomocí Kutools pro Excel a zažijte efektivitu jako nikdy předtím. Kutools for Excel nabízí více než 300 pokročilých funkcí pro zvýšení produktivity a úsporu času. Kliknutím sem získáte funkci, kterou nejvíce potřebujete...
Office Tab přináší do Office rozhraní s kartami a usnadňuje vám práci
- Povolte úpravy a čtení na kartách ve Wordu, Excelu, PowerPointu, Publisher, Access, Visio a Project.
- Otevřete a vytvořte více dokumentů na nových kartách ve stejném okně, nikoli v nových oknech.
- Zvyšuje vaši produktivitu o 50%a snižuje stovky kliknutí myší každý den!