Прескочи на основното съдържание

Урок за Excel – Изпращайте имейли от Excel

Автор: Силувия Последна промяна: 2022-08-18

Обикновено използваме имейл клиенти като Outlook, Gmail и др., за да изпращаме имейли. Но много хора съхраняват данни в работни книги на Excel и трябва да изпратят някои данни на други, докато работят с тях. Следователно те трябва да изпращат имейли директно от работната книга на Excel, което спестява време за работа с имейл клиент. Този урок стъпка по стъпка ще ви покаже как да изпращате имейли от Excel при различни условия.

Забележка: Преди да приложите следните методи, трябва да конфигурирате имейл клиент на Outlook във вашия компютър и да го зададете като ваш имейл клиент по подразбиране.

Съдържание: [ Крия ]

(Щракнете върху което и да е заглавие в съдържанието по-долу или вдясно, за да отидете до съответната глава.)

1. Основите на изпращането на имейли от Excel

Този раздел въвежда основите на изпращане на имейли от Excel.

1.1 Изпращайте имейли от Excel с вградени функции на Excel

Ако искате да изпращате само обикновени имейли от Excel, включително само полетата До, Тема, Як и основния текст. Вградените функции в Excel могат да помогнат.


1.1.1 Изпратете имейл от Excel с формула

Както е показано в таблицата по-долу, за да изпратите различни имейли от Excel въз основа на дадените полета, можете да използвате препратките към клетките на дадените полета, за да създадете различни формули за хипервръзки, за да го направите. След като създадете имейл хипервръзките, можете да щракнете върху хипервръзката, от която се нуждаете, за да изпратите имейл автоматично.

Забележка: Ако има повече от един получател в полетата До или Як, моля, разделете ги с точка и запетая.

Този раздел е разделен на четири части, за да ви покаже стъпките за добавяне на имейл адрес, получател(и) на Cc, ред за тема и основен текст отделно към формулата за хипервръзка. Моля, направете следното.

Синтаксисът и аргументите на ХИПЕРВРЪЗКА функция са както следва.

Синтаксис

HYPERLINK(link_location, [friendly_name])

Аргументи

Местоположение_връзка (задължително): Пътят и името на файла до документа, който ще се отваря;
Съвети: В този урок всички полета, от които се нуждаем за имейл, като имейл адреса на получателя, получателя(ите) на Cc, реда за тема и основния текст, трябва да бъдат поставени в първия аргумент „link_location“.
Приятелско име (по избор): Стойността на скока, която се показва в клетката.

1.1.1.1 Добавете имейл адрес към формулата за хипервръзка

Тук използваме "mailto:" като част от формулата за добавяне на получател на имейл. В този пример имейл адресът на първия получател е в клетка B2, така че трябва да добавим „mailto:“ и да го препратим към клетка B2.

„mailto:“&B2

1. Изберете клетка за показване на хипервръзката. В този случай избирам клетка F2.

2. След това въведете следната формула в него.

=HYPERLINK("mailto:"&B2)

Забележка: Ако натиснете Въведете ключ, ще бъде създадена хипервръзка, както е показано на екранната снимка по-долу. Когато щракнете върху връзката, ще бъде създаден имейл в Outlook и имейл адресът на получателя ще бъде попълнен автоматично в полето До.

Имейл адресът на получателя вече се добавя към формулата за хипервръзка. Моля, продължете със следните стъпки, за да добавите тема, получател(и) на Як и основен текст, както ви е необходимо.


1.1.1.2 Добавяне на получател(и) на Cc към формулата за хипервръзка

За да добавите получателя(ите) на Як към функцията Хипервръзка, моля, добавете "?cc=" като част от формулата, както следва.

"?cc=" & C2
където C2 съдържа имейл адреса на получателя на cc.

Формулата в клетка F2 трябва да бъде както следва:

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


1.1.1.3 Добавете тема към формулата за хипервръзка

За да добавите темата към функцията за хипервръзка, моля, добавете "&тема=" като част от формулата, както следва.

"&subject="& D2
където C2 съдържа темата на имейла.

Формулата в клетка F2 сега трябва да изглежда така:

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


1.1.1.4 Добавете основен текст с нови редове към формулата за хипервръзка

Последната стъпка е да добавите основния текст към формулата за хипервръзка. Както можете да видите в примера, два реда текст в E2 са разделени от нов ред и вие искате да запазите нов ред в тялото на имейла. Outlook разпознава ли нов ред при това обстоятелство? Нека да го проверим.

За да добавите основния текст към формулата за хипервръзка, трябва да добавите „&body=“ като част от формулата, както следва.

"&body="& E2
където E2 съдържа основния текст на имейла.

Формулата в клетка F2 вече се показва, както следва:

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

Забележка: Ако натиснете Въведете ключ и щракнете върху връзката. Можете да видите в новия имейл, че съдържанието в тялото на имейла се показва на същия ред.

За да покажете тялото на имейла в отделни редове, трябва да промените съдържанието на клетката, като добавите кода за връщане на каретката %0A към текста, където трябва да вмъкнете нов ред. Вижте екранна снимка:


1.1.1.5 Посочете текста, който да се показва за хипервръзката

В горните стъпки завършихме аргумента Link_location с имейл полета. Тук, в този раздел, ще завършим следващия аргумент [friendly_name].

В този случай искам клетката с хипервръзка да показва текста като „Изпратете имейл до xx”, където xx е името на получателя в A2. Така че формулата във F2 трябва да се промени на:

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

Натиснете Въведете ключ за получаване на резултата.

Изберете тази клетка с формула и я плъзнете Манипулатор за автоматично попълване надолу, за да създадете други имейл хипервръзки. Вижте екранна снимка:


1.1.2 Изпратете имейл от Excel с функцията Hyperlink

С изключение на използването на горната формула за хипервръзка, можете ръчно да създадете имейл хипервръзка с Поставете Hyperlink функция в Excel. Този раздел ще ви покаже стъпките.

1. Щракнете с десния бутон върху имейл, където искате да вмъкнете хипервръзка, изберете връзка от менюто с десен бутон.

2. При изскачане Поставете хипервръзка диалогов прозорец, трябва да конфигурирате както следва.

2.1) Изберете Имейл адрес в левия панел.
2.2) В Текст за показване текстово поле, въведете текста, който искате да се покаже в клетката;
Съвети: Не можете да използвате препратки към клетки в този диалогов прозорец, така че трябва да въведете имейл полетата ръчно, както следва.
2.3) В Е-мейл адрес текстово поле, трябва да въведете следните имейл адреси.
mailto: имейл адрес
Моля, заменете текста „имейл адрес” с вашия истински имейл адрес. Ако имате повече от един имейл адрес, разделете ги с точка и запетая.
2.4) В Тема: текстово поле, можете да посочите темата и тялото на имейла си точно тук. Моля, конфигурирайте както следва:
Тема на имейл&body=Тяло на имейла
В този случай аз въвеждам Месечна разпродажба&body=Здравейте,%0Aимейлът е получен.
> където темата е Месечна разпродажба;
намлява
> тялото на имейла е:
Здравейте,
Имейлът е получен. (%0A е кодът на знака за връщане на каретката, който може да бъде разпознат от Outlook)
2.5) Щракнете върху OK бутон за запазване на хипервръзката. Вижте екранна снимка:

Когато щракнете върху хипервръзката, ще бъде създаден имейл на Outlook с посочените полета До, Тема и Основен текст, както е показано на екранната снимка по-долу.

бележки:

1) С този метод трябваше да създадете ръчно всяка хипервръзка към имейла.
2) Не можете да добавите полето Cc към имейли с този метод. Така че, ако имате нужда от полето Cc, моля, добавете го от новия отварящ се имейл прозорец.

1.2 Изпратете имейл до множество получатели в клетки с VBA скрипт

В примера по-горе можете да видите множество имейл адреси, показани в клетка, разделени с точка и запетая. Ако имате списък с имейл адреси, както е показано на екранната снимка по-долу, и искате да изпратите имейл или независим имейл до всички тях, следният VBA код може да ви направи услуга.


1.2.1 Изпратете имейл до множество получатели в клетки с VBA скрипт

1. В работния лист, който съдържа всички имейл адреси, на които искате да изпратите имейла. Натисни Друг + F11 за да отворите Microsoft Visual Basic за приложения прозорец.

2. В Microsoft Visual Basic за приложения прозорец, кликнете Поставете > Модул, и след това поставете следния код в Модул (код) прозорец.

VBA код: Изпратете имейл до списък с имейл адреси

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. Натисни F5 ключ за изпълнение на кода и a Kutools за Excel изскача диалогов прозорец. Изберете списъка с имейл адреси и щракнете OK.

Забележки:

1) Ако не искате диалоговият прозорец по-горе да се появява и искате директно да посочите диапазона от имейл адреси в кода, моля, заменете този ред:
Задайте xRg = Application.InputBox("Моля, изберете списъка с адреси:", "Kutools за Excel", xTxt, , , , , 8)
с
Задайте xRg = Range("A2:A7")
2) Можете да посочите своя собствена тема и текст на имейл в следните редове:
.Subject = "Тест"
.Body = "Dear " _
        & vbNewLine & vbNewLine & _
        "This is a test email " & _
        "sending in Excel"
3) За да изпратите директно имейла, без да отваряте следния прозорец за ново съобщение, трябва да замените този ред:
.Показване
с
.Изпрати

След изпълнение на кода всички имейл адреси в избрания диапазон се показват в полето До на прозореца на съобщението. Вижте екранна снимка:


1.2.2 Отделно изпращане на имейли до всеки получател, посочен в клетки с VBA скрипт

Горният код добавя всички имейл адреси в избрания диапазон към полето До на прозореца на съобщението. Ако искате да изпращате имейли до всеки имейл адрес, посочен в клетки поотделно, без да им позволявате да виждат имейл адресите на другия, можете да опитате следния VBA скрипт.

1. В работния лист, който съдържа всички имейл адреси, на които искате да изпратите имейлите. Натисни Друг + F11 бутони за отворете прозореца на Microsoft Visual Basic за приложения.

2. В Microsoft Visual Basic за приложения прозорец, кликнете Поставете > Модулии след това поставете следния код в прозореца Модул (Код).

VBA код: Изпращайте имейли до всеки имейл адрес, посочен в клетки поотделно

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. След това кликнете Инструменти > Препратки. в Препратки – VBAProject диалогов прозорец, намерете и проверете Библиотека с обекти на Microsoft Outlook 16.0 и след това кликнете върху OK , за да запазите промените.

4. Натисни F5 ключ за изпълнение на кода и a Kutools за Excel изскача диалогов прозорец. Изберете списъка с имейл адреси и щракнете OK.

Забележки:

1) Ако не искате диалоговият прозорец по-горе да се появява и искате директно да посочите диапазона от имейл адреси в кода, моля, заменете този ред:
Задайте xRg = Application.InputBox("Моля, изберете списъка с адреси:", "Kutools за Excel", xTxt, , , , , 8)
с
Задайте xRg = Range("A2:A7")
2) Можете да посочите своя собствена тема и текст на имейл в следните редове:
.Subject = "Test"
.Body = "Dear " _
        & vbNewLine & vbNewLine & _
        "This is a test email " & _
        "sending in Excel"
3) За да изпратите директно имейла, без да отваряте следните прозорци за съобщения, трябва да замените този ред:
.Показване
с
.Изпрати

В този пример има шест имейл адреса в избрания диапазон, така че шест прозореца за съобщения на Outlook ще бъдат създадени автоматично с отделен имейл адрес, посочен в полето До, както е показано на екранната снимка по-долу.

5. Най-накрая щракнете Изпрати бутон за изпращане на имейла един по един.


2. Вмъкнете прикачени файлове или подпис на Outlook в имейлите, изпратени от Excel (с VBA скриптове)

Този раздел ще ви покаже как да вмъквате прикачени файлове или подпис по подразбиране на Outlook в имейлите, изпратени от Excel.

2.1 Вмъкнете прикачени файлове в имейлите, изпратени от Excel

Тук описваме различните случаи на вмъкване на прикачени файлове и можете да изберете метода според вашите нужди. В този раздел можете да се научите да (щракнете върху някоя от следните връзки, за да отидете до съответния метод):


2.1.1 Изпратете по имейл определен файл като прикачен файл

Можете да приложите следния VBA код, за да изпратите по имейл един или повече файлове в папка като прикачени файлове от Excel.

1. Натисни Друг + F11 ключове.

2. В откриването Microsoft Visual Basic за приложения прозорец, кликнете Поставете > Модули. След това поставете следния VBA код в прозореца Module (Code).

VBA код: Изпратете имейл на файлове в папка като прикачени файлове от 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

бележки:

1) В линията .До = , моля заменете с имейл адреса на вашия собствен получател;
2) Променете темата на имейла и тялото на имейла отделно в реда .Subject = "тест" намлява .HTMLBody = "тест";
3) Можете да добавите Cc и Bcc получатели според нуждите си. Просто добавете следните два реда под реда.До = .
.CC = "имейл адрес"
.BCC = "имейл адрес"

3. След това кликнете Инструменти > Препратки. в Препратки – VBAProject диалогов прозорец, намерете и проверете Библиотека с обекти на Microsoft Outlook 16.0 и след това кликнете върху OK , за да запазите промените.

4. Натисни F5 клавиш за изпълнение на кода, след това a паса изскача прозорец, моля, изберете файловете, които трябва да прикачите в имейла, и след това щракнете OK.

След това се появява прозорец със съобщение. Можете да видите избраните файлове да се показват като прикачени файлове в полето Прикачено.


2.1.2 Изпратете текущия работен лист по имейл като прикачен файл

Ако искате да изпратите текущия работен лист по имейл като прикачен файл от Excel, можете да приложите VBA скрипта в този раздел.

1. Натисни Друг + F11 ключове.

2. В откриването Microsoft Visual Basic за приложения прозорец, кликнете вмъкнете > Модули. След това поставете следния VBA код в Модул (код) прозорец.

VBA код: Изпратете имейл на текущия работен лист като прикачен файл

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

Забележки:

1) В линията.До = , моля заменете с имейл адреса на истинския получател. Ако имате нужда от повече от един имейл адрес, моля, разделете ги с точка и запетая.
2) Променете темата на имейла и тялото на имейла отделно в реда .Subject = "kte характеристики" намлява .Body = " Моля, проверете и прочетете този документ.";
3) В следващите два реда:
.CC = "имейл адрес"
.BCC = "имейл адрес"
Ако искате да добавите получатели за копие и скрито копие, заменете текста „имейл адрес” в редовете с имейл адресите, от които се нуждаете.
Ако нямате нужда от получатели cc и bcc, просто добавете апостроф ' преди всеки ред.

3. Натисни F5 за изпълнение на кода, тогава текущият работен лист се записва като работна книга на Excel и автоматично се вмъква в прозорец на съобщение като прикачен файл. Вижте екранна снимка:

Забележка: Прикачената работна книга, която съдържа само текущия работен лист, има същото име като оригиналната работна книга. И времето, когато изпълнявате кода, също се добавя към името на работната книга.


2.1.3 Изпратете по имейл текущата работна книга като прикачен файл

След като научите VBA кода за изпращане на имейл на текущия работен лист като прикачен файл от Excel, тук предоставяме друг VBA скрипт, който да ви помогне да изпратите имейл на цялата работна книга като прикачен файл. Моля, направете следното.

1. Натисни Друг + F11 ключове.

2. В откриването Microsoft Visual Basic за приложения прозорец, кликнете Поставете > Модул. След това поставете следния VBA код в прозореца Module (Code).

VBA код: Изпратете имейл на текущата работна книга като прикачен файл от Excel

Sub SendWorkBook()
'Update by Extendoffice 20220802
Dim OutlookApp As Object
Dim OutlookMail As Object
Set OutlookApp = CreateObject("Outlook.Application")
Set OutlookMail = OutlookApp.CreateItem(0)
On Error Resume Next
With OutlookMail
    .To = ""
    .CC = "Email Address"
    .BCC = "Email Address"
    .Subject = "kte feature"
    .Body = "Hello, please check and read this document, thank you."
    .Attachments.Add Application.ActiveWorkbook.FullName
    .Display
    '.Send
End With
Set OutlookMail = Nothing
Set OutlookApp = Nothing
End Sub

Забележки:

1) В линията .До = , моля заменете с имейл адреса на истинския получател. Ако имате нужда от повече от един имейл адрес, моля, разделете ги с точка и запетая.
2) Променете темата на имейла и тялото на имейла отделно в реда .Subject = "kte характеристики" намлява .Body = " Моля, проверете и прочетете този документ.";
3) В следващите два реда:
.CC = "имейл адрес"
.BCC = "имейл адрес"
Ако искате да добавите получатели за копие и скрито копие, заменете текста „имейл адрес” в редовете с имейл адресите, от които се нуждаете.
Ако нямате нужда от получатели cc и bcc, просто добавете апостроф ' преди всеки ред.

3. Натисни F5 за изпълнение на кода, след което текущата работна книга автоматично се вмъква в прозорец на съобщение като прикачен файл. Вижте екранна снимка:


2.1.4 Изпратете по имейл цялата работна книга като PDF прикачен файл

За повечето хора те са склонни да запазят работна книга на Excel като PDF файл и след това да я изпратят като прикачен файл на други. В този раздел ще ви покажа начин за изпращане на имейли директно от Excel с текущата отворена работна книга като PDF прикачен файл, без да се налага ръчно да запазвате работната книга като PDF файл.

1. Натисни Друг + F11 ключове.

2. В откриването Microsoft Visual Basic за приложения прозорец, кликнете Поставете > Модул. След това поставете следния VBA код в прозореца Module (Code).

VBA код: Изпратете цялата работна книга като 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

Забележки:

1) В линията .До = , моля заменете с имейл адреса на истинския получател. Ако имате нужда от повече от един имейл адрес, моля, разделете ги с точка и запетая.
2) Променете темата на имейла и тялото на имейла отделно в реда .Subject = "тест" намлява .Body = "тест";
3) В следващите два реда:
.CC = "Имейл адрес"
.BCC = "Имейл адрес"
Ако искате да добавите получатели за копие и скрито копие, заменете текста „Имейл Адрес” в редовете с имейл адресите, от които се нуждаете.
Ако нямате нужда от получатели cc и bcc, просто добавете апостроф ' преди всеки ред.
4) Името на PDF файла ще бъде същото като името на оригиналната работна книга. И времето, когато изпълнявате кода, също ще бъде добавено към името на работната книга. Ако не е необходимо да добавяте клеймото за време към името на файла, моля, премахнете го & Формат (Сега "дд-ммм-гг ч-мм-сс") от следващия ред.
FileName = Left(Wb.Name, (InStrRev(Wb.Name, ".", -1, vbTextCompare) - 1)) & Format(Now, "dd-mmm-yy h-mm-ss") & ".pdf "

3. Натисни F5 ключ за изпълнение на кода. След това текущата работна книга автоматично се вмъква в прозорец за ново съобщение като прикачен PDF файл. Вижте екранна снимка:


2.1.5 Изпратете текущия работен лист по имейл като PDF прикачен файл

Например, има работна книга с име „Месечни продажби“ и вие сте завършили таблица с отчет за продажбите в работен лист с име „отчет за продажбите“ и искате да изпратите този работен лист като PDF файл на вашите колеги. Следният VBA код може да ви направи услуга.

1. Натисни Друг + F11 ключове.

2. В откриването Microsoft Visual Basic за приложения прозорец, кликнете вмъкнете > Модул. След това поставете следния VBA код в прозореца Module (Code).

VBA код: Изпратете имейл на текущия работен лист като 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) В линията .До = , моля заменете с имейл адреса на истинския получател. Ако имате нужда от повече от един имейл адрес, моля, разделете ги с точка и запетая.
2) Променете темата на имейла и тялото на имейла отделно в реда .Subject = "тест" намлява .Body = "тест";
3) В следващите два реда:
.CC = "Имейл адрес"
.BCC = "Имейл адрес"
Ако искате да добавите получатели за копие и скрито копие, заменете текста „Имейл Адрес” в редовете с имейл адресите, от които се нуждаете.
Ако нямате нужда от получатели cc и bcc, просто добавете апостроф ' преди всеки ред.
4) Името на PDF файла ще бъде: името на оригиналната работна книга_името на оригиналния работен лист. В този случай името на PDF файла ще бъде Месечен отчет за продажби_продажби.

3. Натисни F5 ключ за изпълнение на кода. След това текущият работен лист автоматично се вмъква в прозорец за ново съобщение като прикачен PDF файл. Вижте екранна снимка:


2.2 Вмъкване на подпис на Outlook в имейлите, изпратени от Excel

Вземете горния случай като пример, вие прилагате горния VBA код, за да изпратите текущия работен лист като прикачен PDF файл от Excel, но подписът на Outlook не може да бъде добавен към прозореца на съобщението. За да запазите подписа по подразбиране на Outlook в имейла, изпратен от Excel, ще ви помогне следният метод.

Два VBA кода са изброени по-долу.

VBA код 1: Кодът помага да се запази подписът на Outlook.

VBA код 2: Кодът помага за изпращане по имейл на текущия работен лист като PDF прикачен файл.

VBA код 1: Запазете подписа на Outlook

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

VBA код 2: Изпратете текущия работен лист по имейл като 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. Обикновено трябва да натиснете Друг + F11 за да отворите Microsoft Visual Basic за приложения прозорец.

2. В Microsoft Visual Basic за приложения прозорец, кликнете Поставете > Модули. След това поставете горния VBA код 2 в прозореца Module (Code).

3. За да запазите подписа по подразбиране на Outlook в имейла, изпратен от Excel, трябва да промените VBA код 2, както следва:

1) Сменете .Тяло линия с VBA код 1;
2) Преместете линията .Показване под линията С OutlookMail (или с xMailOut в други кодове). Вижте екранна снимка:

Ето пълния код след модификация.

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. Натисни F5 ключ за изпълнение на кода. След това ще получите прозорец за ново съобщение с текущия работен лист, прикачен като PDF файл, докато подписът по подразбиране на Outlook ще бъде вмъкнат автоматично в края на тялото на имейла.


3. Автоматично изпращане на имейли от Excel, когато е изпълнено условие (с VBA скриптове)

В горните примери трябва да стартирате кода ръчно, за да постигнете доставката на имейл. Ако искате да задействате кода автоматично, когато е изпълнено определено условие, като например когато клетка достигне определена стойност, когато стойността на клетка се промени, когато е достигната дата и т.н., имейлът ще бъде изпратен автоматично. Този раздел изброява условията, които потребителите на Excel често са търсили в Google, за да ви помогнат автоматично да изпращате имейли от Excel, когато определено условие е изпълнено.

3.1 Автоматично изпращане на имейл, когато клетка достигне определена стойност

Както е показано на екранната снимка по-долу, да предположим, че имате таблица с продажби с клетка D6, съдържаща общите продажби. Искате автоматично да изпратите имейл до шефа си въз основа на общата сума на продажбите, например да създадете или изпратите имейл автоматично, когато общата сума на продажбите надвиши 10000 10000, но ако общата сума на продажбите е равна или по-малка от XNUMX XNUMX, не се предприема действие.

1. В работния лист съдържа таблицата за продажба, щракнете с десния бутон върху раздела на листа и щракнете Вижте кода от менюто с десен бутон.

2. В откриването Microsoft Visual Basic за приложения прозорец, поставете следния VBA код в Лист (код) прозорец.

VBA код: Автоматично изпращане на имейл, когато клетка достигне определена стойност в Excel

Dim xRg As Range
'Update by Extendoffice 20200803
Private Sub Worksheet_Change(ByVal Target As Range)
On Error Resume Next
If Target.Cells.Count > 1 Then Exit Sub
Set xRg = Intersect(Range("D6"), Target)
If xRg Is Nothing Then Exit Sub
If IsNumeric(Target.Value) And Target.Value > 10000 Then
Call Mail_small_Text_Outlook
End If
End Sub
Sub Mail_small_Text_Outlook()
Dim xOutApp As Object
Dim xOutMail As Object
Dim xMailBody As String
Set xOutApp = CreateObject("Outlook.Application")
Set xOutMail = xOutApp.CreateItem(0)
xMailBody = "Hi boss" & vbNewLine & vbNewLine & _
"Total sales of over $10,000 in January: " & Range("D6")
On Error Resume Next
With xOutMail
.To = ""
.CC = "Email address"
.BCC = "Email address"
.Subject = "test"
.Body = xMailBody
.Display 'or use .Send
End With
On Error GoTo 0
Set xOutMail = Nothing
Set xOutApp = Nothing
End Sub

Private Sub Worksheet_Calculate()
Dim xI As Integer
Dim xRg As Range
Set xRg = Range("D6")
On Error GoTo Err01
xI = Int(xRg.Value)
If xI > 10000 Then
Call Mail_small_Text_Outlook
End If
Err01:
End Sub

бележки:

1) D6 е клетката, на чиято база ще изпратите имейл.
2) > 10000 е условието, което означава, че ще бъде изпратен имейл, когато стойността в D6 е по-голяма от 10000.
3) Обхват („D6“) в следващия ред означава, че тялото на имейла ще препраща към стойността в D6.
xMailBody = "Hi boss" & vbNewLine & vbNewLine & _
"Total sales of over $10,000 in January: " & Range("D6")
4) В линията .До = , моля заменете с имейл адреса на истинския получател. Ако имате нужда от повече от един имейл адрес, моля, разделете ги с точка и запетая.
5) Променете темата на имейла в реда .Subject = "тест".
6) В следващите два реда:
.CC = "Имейл адрес"
.BCC = "Имейл адрес"
Ако искате да добавите получатели за копие и скрито копие, заменете текста „Имейл Адрес” в редовете с имейл адресите, от които се нуждаете.
Ако нямате нужда от получатели cc и bcc, просто добавете апостроф ' преди всеки ред.

Отсега нататък, когато стойността в клетка D6 надвиши 10000, ще бъде създаден имейл, както е показано на екранната снимка по-долу.


3.2 Автоматично изпращане на имейл, когато стойността на клетка се промени

Както е показано на екранната снимка по-долу, да предположим, че получавате работна книга, която съдържа месечни продажби в различни работни листове и общата сума на продажбите в работен лист. Трябва да проверите общата сума на продажбите и ако общата сума на продажбите е променена, изпратете работната книга обратно на подателя и го информирайте, че клетката е променена.

1. В работния лист съдържа таблицата за продажба, щракнете с десния бутон върху раздела на листа и щракнете Вижте кода от менюто с десен бутон.

2. В откриването Microsoft Visual Basic за приложения прозорец, поставете следния VBA код в прозореца Sheet (Code).

VBA код: Автоматично изпращане на имейл, когато определена стойност на клетка се промени

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

бележки: В кода,

1) B14 в кода означава, че когато стойността на клетка B14 се промени, ще изпратите имейл.
2) В линията .До = , моля заменете с имейл адреса на истинския получател. Ако имате нужда от повече от един имейл адрес, моля, разделете ги с точка и запетая.
3) Променете темата на имейла в реда .Subject = "Променен работен лист".
4) В следващите два реда:
.CC = "Имейл адрес"
.BCC = "Имейл адрес"
Ако искате да добавите получатели за копие и скрито копие, заменете текста „Имейл Адрес” в редовете с имейл адресите, от които се нуждаете.
Ако нямате нужда от получатели cc и bcc, просто добавете апостроф ' преди всеки ред.

Отсега нататък, когато стойността в клетка B14 се промени, автоматично ще се създаде съобщение в Outlook, както е показано на екранната снимка по-долу.


3.3 Автоматично изпращане на имейл при запазване на работна книга

Ако имате работна книга, която трябва да бъде споделена с други след модифициране, обикновено трябва да запазите работната книга, да стартирате имейл клиента, да създадете нов имейл с прикачената работна книга, да съставите съответните полета, след което да изпратите имейла. Този раздел ще ви покаже метод за автоматично създаване на имейл всеки път, когато запишете работната книга. Моля, направете следното.

1. Натисни Друг + F11 за да отворите Microsoft Visual Basic за приложения прозорец.

2. В този прозорец щракнете два пъти Тази работна книга в Проект прозорец, след което поставете следния VBA код в Тази работна книга (код) прозорец.

VBA код: Автоматично изпращане на имейл, когато работна книга бъде запазена

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

бележки: В кода,

1) В линията .До = , моля заменете с имейл адреса на истинския получател. Ако имате нужда от повече от един имейл адрес, моля, разделете ги с точка и запетая.
2) Променете темата и тялото на имейла отделно в редовете .Subject = "Работната книга е актуализирана" намлява .Body = "Здравей," & Chr(13) & Chr(13) & "Файлът вече е актуализиран.".
3) В следващите два реда:
.CC = "Имейл адрес"
.BCC = "Имейл адрес"
Ако искате да добавите получатели за копие и скрито копие, заменете текста „Имейл Адрес” в редовете с имейл адресите, от които се нуждаете.
Ако нямате нужда от получатели cc и bcc, просто добавете апостроф ' преди всеки ред.

3. Отсега нататък, когато записвате работната книга чрез натискане на Ctrl + S клавиши или щракване върху Save бутон, имейл на Outlook ще бъде създаден автоматично. Можете да видите, че текущата работна книга е прикачена като прикачен файл и полетата са попълнени с посоченото съдържание. Вижте екранна снимка:

Съвети: Ако често използвате тази работна книга, тук препоръчваме да запазите работната книга като Работна книга с активирани макроси на Excel за да запазите VBA скрипта за бъдеща употреба. Стъпките са както следва.

1) Щракнете досие > Save Asи след това изберете папка, за да запишете файла.
2) В Save As диалоговия прозорец, преименувайте файла, както ви е необходимо в Име на файл текстово поле, изберете Работна книга с активирани макроси на Excel в Запиши като тип падащ списък и накрая щракнете върху Save бутон. Вижте екранна снимка:


3.4 Автоматично изпращане на имейл в определено време

Да приемем, че трябва да изпратите имейл с работна книга за задачи на някого всеки петък сутрин в 9чи искате да направите това автоматично в Excel, без да се налага ръчно да управлявате имейл клиента. Този раздел ще ви покаже метода да го направите.

1. Натисни Друг + F11 за да отворите Microsoft Visual Basic за приложения прозорец.

2. В Microsoft Visual Basic за приложения прозорец, кликнете Поставете > Модул. След това поставете следния VBA код в прозореца на модула.

VBA code1 : Изпратете имейл на текущата работна книга като прикачен файл от 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. В този прозорец щракнете два пъти Тази работна книга в Проект прозорец, след което поставете следния VBA код в Тази работна книга (код) прозорец.

VBA код 2: Автоматично изпращане на имейл в определено време

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

бележки:

1) Във VBA код 1, Петък в следващия ред означава, че имейлът ще се изпраща автоматично всеки петък;
Ако Делничен ден(Дата) = vbПетък Тогава
2) Във VBA код 1 и VBA код 2, времето 09:00:00 означава, че имейлът ще бъде изпратен в 9 сутринта на определен ден.
Можете да промените деня и часа според нуждите си.
3) Когато кодът се изпълни, ще бъде създаден имейл. Ако не искате да изскача прозорецът на съобщението и трябва да го изпратите директно, моля, премахнете реда .Показване от VBA код 1 и премахнете апостроф преди линията '.Изпрати.

4. Запазете кодовете и след това запазете работната книга като работна книга с активирани макроси на Excel, както следва.

4.1) Щракнете досие > Save Asи след това изберете папка, за да запишете файла.
4.2) В Save As диалоговия прозорец, преименувайте файла, както ви е необходимо в Име на файл текстово поле, изберете Работна книга с активирани макроси на Excel в Запиши като тип падащ списък и накрая щракнете върху Save бутон. Вижте екранна снимка:

5. Отворете вашата запазена работна книга с активирани макроси, след което имейл ще бъде създаден или изпратен автоматично, когато настъпят денят и часът.


4. Допълнителни теми

Този раздел събира други теми, които може да срещнете, когато изпращате имейли от Excel.

4.1 Изпращане по имейл на диапазон от клетки от Excel (с VBA скрипт)

Да предположим, че има месечна таблица с продажби в работен лист на Excel, както е показано на екранната снимка по-долу, и трябва да изпратите тази месечна таблица с продажби на други като основно съдържание на имейл или като прикачен файл директно. Тук ви предлагаме два метода да го направите.

4.1.1 Изпратете по имейл диапазон като част от основното съдържание от Excel

Можете да изпълните следния VBA код, за да изпратите диапазон от клетки като част от съдържанието на тялото на имейла от Excel

1. Натисни Друг + F11 за да отворите Microsoft Visual Basic за приложения прозорец.

2. В Microsoft Visual Basic за приложения прозорец, кликнете Инструменти > Препратки. И след това проверете Библиотека с обекти на Microsoft Outlook 16.0 и кликнете OK в Препратки – VBAProject диалогов прозорец.

3. кликване Поставете > Модули, след което поставете следния VBA код в Модул (код) прозорец.

VBA код: Изпратете диапазон от клетки като част от основното съдържание на имейла от 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

бележки: В кода,

1) В линията .До = , моля заменете с имейл адреса на истинския получател. Ако имате нужда от повече от един имейл адрес, моля, разделете ги с точка и запетая.
2) В следващите два реда:
.CC = "Имейл адрес"
.BCC = "Имейл адрес"
Ако искате да добавите получатели за копие и скрито копие, заменете текста „Имейл Адрес” в редовете с имейл адресите, от които се нуждаете.
Ако нямате нужда от получатели cc и bcc, просто добавете апостроф ' преди всеки ред.

4. Натисни F5 ключ за изпълнение на кода. В появилото се Kutools за Excel изберете диапазона от клетки, които трябва да изпратите като част от основното съдържание на имейл, след което щракнете OK. Вижте екранна снимка:

След това автоматично ще бъде създаден имейл в Outlook. Можете да видите, че диапазонът, който сте избрали в работния лист, е вмъкнат в тялото на имейла. Вижте екранна снимка:


4.1.2 Изпратете по имейл диапазон като прикачен файл от Excel

Ако трябва да изпратите по имейл диапазон от клетки в работен лист като прикачен файл от Excel. Можете да опитате следния VBA код.

1. Натисни Друг + F11 ключове.

2. В откриването Microsoft Visual Basic за приложения прозорец, кликнете Поставете > Модули. След това поставете следния VBA код в Модул (код) прозорец.

VBA код: Изпратете имейл на диапазон като прикачен файл от Excel

Sub SendRange()
'Update 20220809
Dim xFile As String
Dim xFormat As Long
Dim Wb As Workbook
Dim Wb2 As Workbook
Dim Ws As Worksheet
Dim FilePath As String
Dim FileName As String
Dim OutlookApp As Object
Dim OutlookMail As Object
Dim WorkRng As Range
xTitleId = "KutoolsforExcel"
Set WorkRng = Application.Selection
Set WorkRng = Application.InputBox("Range", xTitleId, WorkRng.Address, Type:=8)
Application.ScreenUpdating = False
Application.DisplayAlerts = False
Set Wb = Application.ActiveWorkbook
Wb.Worksheets.Add
Set Ws = Application.ActiveSheet
WorkRng.Copy Ws.Cells(1, 1)
Ws.Copy
Set Wb2 = Application.ActiveWorkbook
Select Case Wb.FileFormat
Case xlOpenXMLWorkbook:
    xFile = ".xlsx"
    xFormat = xlOpenXMLWorkbook
Case xlOpenXMLWorkbookMacroEnabled:
    If Wb2.HasVBProject Then
        xFile = ".xlsm"
        xFormat = xlOpenXMLWorkbookMacroEnabled
    Else
        xFile = ".xlsx"
        xFormat = xlOpenXMLWorkbook
    End If
Case Excel8:
    xFile = ".xls"
    xFormat = Excel8
Case xlExcel12:
    xFile = ".xlsb"
    xFormat = xlExcel12
End Select
FilePath = Environ$("temp") & "\"
FileName = Wb.Name & Format(Now, "dd-mmm-yy h-mm-ss")
Set OutlookApp = CreateObject("Outlook.Application")
Set OutlookMail = OutlookApp.CreateItem(0)
Wb2.SaveAs FilePath & FileName & xFile, FileFormat:=xFormat
With OutlookMail
    .To = ""
    .CC = "Email address"
    .BCC = "Email address"
    .Subject = "Monthly sales for 2021"
    .Body = "Hello, please check and read this document. "
    .Attachments.Add Wb2.FullName
    .Display
    '.Send
End With
Wb2.Close
Kill FilePath & FileName & xFile
Set OutlookMail = Nothing
Set OutlookApp = Nothing
Ws.Delete
Application.DisplayAlerts = True
Application.ScreenUpdating = True
End Sub

бележки:

1) В линията .До = , моля заменете с имейл адреса на истинския получател. Ако имате нужда от повече от един имейл адрес, моля, разделете ги с точка и запетая.
2) Променете темата на имейла и тялото на имейла отделно в реда .Subject = "Месечни продажби за 2021 г." намлява .Body = "Здравейте, моля, проверете и прочетете този документ.";
3) В следващите два реда:
.CC = "имейл адрес"
.BCC = "имейл адрес"
Ако искате да добавите получатели за копие и скрито копие, заменете текста „имейл адрес” в редовете с имейл адресите, от които се нуждаете.
Ако нямате нужда от получатели cc и bcc, просто добавете апостроф ' преди всеки ред.

3. Натисни F5 ключ за изпълнение на кода. В появилото се Kutools за Excel изберете диапазона от клетки, които трябва да изпратите като прикачен файл в имейл, след което щракнете OK. Вижте екранна снимка:

След това автоматично ще бъде създаден имейл в Outlook. И диапазонът от клетки, които сте избрали в работния лист, се записва като работна книга на Excel и се прикачва в прозореца Съобщение. Вижте екранна снимка:


4.2 Изпращане на имейли при натискане на бутон в Excel

Ако трябва да щракнете върху команден бутон, за да задействате макрос за изпращане на имейл от Excel, например, изпратете текущата работна книга като прикачен файл към други, като щракнете върху команден бутон в работния лист. Можете да следвате стъпките, както следва, за да го направите.

1. кликване Софтуерен Инженер > Поставете > Команден бутон (ActiveX Control). След това нарисувайте команден бутон в работния лист.

Съвети: Ако вече имате команден бутон, пропуснете тази стъпка.

2. Натисни Друг + F11 за да отворите Microsoft Visual Basic за приложения прозорец. В прозореца щракнете Поставете > Модул, след което поставете VBA кода (кода, използван за изпращане на имейл на текущата работна книга като прикачен файл от Excel) в прозореца Модул (Код).

Щракнете тук, за да получите кода.

Забележка: Тук е името на макроса, който сте създали в стъпка 2 Изпрати работна книга.

3. Натисни Друг + Q ключове за затваряне на Microsoft Visual Basic за приложения прозорец.

4. Сега трябва да присвоите макроса на командния бутон. Щракнете с десния бутон върху командния бутон, изберете Преглед на кода от менюто с десния бутон.

5. След това Microsoft Visual Basic за приложения изскачащ прозорец, можете да видите следните два реда, изброени в Лист (код) прозорец.

Private Sub CommandButton1_Click()
End Sub

6. Въведете името на съществуващия макрос вътре в подпроцедурата за командния бутон.

7. Натисни Друг + Q ключове за затваряне на Visual Basic редактор, и кликнете Софтуерен Инженер > Режим на проектиране за да изключите режима на проектиране.

Сега можете да щракнете върху командния бутон, за да изпратите имейл с текущата работна книга като прикачен файл в имейла.


4.3 Изпращайте имейли от определен имейл акаунт

Обикновено, когато стартирате имейл от Excel с VBA код, имейл акаунтът на подателя е акаунтът по подразбиране в Outlook. Да предположим, че сте конфигурирали няколко имейл акаунта във вашия Outlook и искате да използвате определен акаунт за изпращане на имейли от Excel, вместо да използвате акаунта по подразбиране. Следният VBA код може да помогне.

В този случай са необходими следните кодове.

VBA код 1:

Dim OutlookMail As Outlook.MailItem

VBA код 2:

For Each xAccount In OutlookApp.Session.Accounts
  If VBA.LCase(xAccount.SmtpAddress) = VBA.LCase("") Then 'Specify your email account here
    OutlookMail.SendUsingAccount = xAccount
  End If
Next

Как да използвам горния VBA код?

1) Във вашия собствен код трябва да замените реда като „Затъмняване на OutlookMail като обект” с VBA код 1;
2) Добавете VBA код 2 под реда „При грешка се възобнови при следващото” във вашия код. След това посочете имейл адреса, който ще използвате, за да изпратите имейла във VBA код 2.

В този пример ще посочим определен имейл акаунт, за да изпратим текущата работна книга като прикачен файл от Excel. Моля, направете следното.

1. Натисни Друг + F11 ключове. В Microsoft Visual Basic за приложения прозорец, кликнете Инструменти > Препратки. И след това проверете Библиотека с обекти на Microsoft Outlook 16.0 и кликнете OK в Препратки – VBAProject диалогов прозорец.

2. кликване Поставете > Модули. След това поставете следния VBA код в Модул (код) прозорец.

VBA код: Изпратете текущата работна книга като прикачен файл към имейл от Excel през определен акаунт в 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. Натисни F5 ключ за изпълнение на кода. След това се появява имейл съобщение на Outlook, можете да видите, че от полето се попълва с имейл акаунта, който сте посочили в кода.


4.4 Изпращане на имейл при достигане на дата

Ако трябва да изпратите имейл въз основа на конкретна крайна дата, например, както е показано на екранната снимка по-долу, има таблица с проекти, когато крайната дата в диапазона E2:E7 е равна на или по-малко от 7 дни от днес (приемайки, че текущата дата е 2022/8/4), имейл ще бъде изпратен автоматично до съответните ръководители на проекта и ще ги уведоми, че проектът е на път да изтече.

1. В работния лист съдържа таблицата на проекта, щракнете с десния бутон върху раздела на листа и щракнете Вижте кода от менюто с десен бутон.

2. В откриването Microsoft Visual Basic за приложения прозорец, поставете следния VBA код в Лист (код) прозорец.

VBA код: Автоматично изпращане на имейл, когато настъпи краен срок

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

бележки: В кода,

1) В следващите редове, E2: E7 съдържа крайните дати, въз основа на които ще изпращате имейли. C2:C7 съдържа имейл адресите, на които ще изпращате имейли. И D2: D7 съдържа забележките, които ще добавите в тялото на имейла, за да уведомите получателите, че проектът е на път да изтече. Можете да промените диапазоните според нуждите си.
Задайте xRgDate = Range("E2:E7")
Задайте xRgSend = Range("C2:C7")
Задайте xRgText = Range("D2:D7")
2) Следващият ред означава, че датата на падежа трябва да е по-голяма от 1 ден и равна на или по-малка от 7 дни от днес. Можете да го промените според нуждите си.
Ако CDate(xRgDateVal) - Дата <= 7 И CDate(xRgDateVal) - Дата > 0 Тогава
3) В линията .До = , моля заменете с имейл адреса на истинския получател. Ако имате нужда от повече от един имейл адрес, моля, разделете ги с точка и запетая.
4) Променете темата на имейла в реда .Subject = "Променен работен лист".
5) В следващите два реда:
.CC = "Имейл адрес"
.BCC = "Имейл адрес"
Ако искате да добавите получатели за копие и скрито копие, заменете текста „Имейл Адрес” в редовете с имейл адресите, от които се нуждаете.
Ако нямате нужда от получатели cc и bcc, просто добавете апостроф ' преди всеки ред.

3. Натисни F5 ключ за изпълнение на кода. След това, ако срокът на валидност отговаря на условията, ще бъде създаден съответният имейл. В този случай ще бъдат създадени два имейла, както е показано на екранната снимка по-долу.


5. Удобен инструмент, който ви помага лесно да изпращате имейли от Excel

Ако сте начинаещ във VBA, горните методи може да не са лесни за вас. Тук препоръчваме Kutools за ExcelЕ Изпращане на имейли функция, с тази функция можете лесно да изпращате имейли от Excel само с няколко кликвания. Моля, направете следното.

Преди да кандидатствате Kutools за Excel, Моля те първо го изтеглете и инсталирайте.

5.1 Създайте лесно пощенски списък, който включва имейл полетата, от които се нуждаете

Преди да приложите функцията за изпращане на имейли, трябва да създадете пощенски списък, който съдържа имейл полетата, от които се нуждаете. Тук може да помогне функцията за създаване на пощенски списък.

1. кликване Kutools плюс > Създаване на пощенски списък.

2. В откриването Създаване на пощенски списък прозорец, трябва да конфигурирате както следва.

2.1) В Колони за пощенски списък раздел, проверете полетата, от които се нуждаете във вашия имейл;
2.2) В Прикачи файлове раздел, проверете един или повече прикачени файлове, от които може да се нуждаете;
2.3) Посочване на място за поставяне на пощенския списък;
2.4) Щракнете върху Създаване на бутон. Вижте екранна снимка:

След това се създава примерна таблица с пощенски списък, както е показано на екранната снимка по-долу.

3. Сега трябва да замените оригиналните данни в извадката с вашите собствени данни от полето.

Вече сте създали таблица с пощенски списък. Моля, продължете, за да приложите Изпращане на имейли функция за изпращане на имейли от Excel въз основа на създадените от вас полета.

  Ако искате да имате безплатен пробен период (30 дни) на тази помощна програма, моля, щракнете, за да го изтеглитеи след това преминете към прилагане на операцията съгласно горните стъпки.


5.2 Изпращайте лесно имейли, включително полетата, които сте създали в пощенския списък

След създаването на пощенския списък (щракнете, за да разберете как), който съдържа полетата, от които може да се нуждаете във вашите имейли, вече можете да изпращате имейли от Excel с тези полета.

1. Изберете целия пощенски списък, щракнете Kutools плюс > Изпращане на имейли.

2. В Изпращане на имейли диалогов прозорец, моля, направете следната конфигурация.

2.1) Полетата се попълват автоматично в диалоговия прозорец на всяко поле от полетата, които сте посочили в пощенския списък;
Съвети: Ако в момента не се нуждаете от определено поле, изберете празна опция в падащия списък.
2.2) Вмъкване на контейнер (по избор): Ако трябва да вмъкнете променлива информация в тялото на имейл.
Например, може да се наложи да изпратите имейл до множество получатели с персонализирано име за всеки, трябва да поставите курсора в тялото на имейла, където трябва да вмъкнете контейнера, изберете полето „E: Първо име” (или друго поле за име във вашия имейл списък) и след това щракнете върху Вмъкване Заместител бутон;
Когато получателите получат имейла, тялото на имейла остава същото, но имената са уникални за всеки.
2.3) Съставете тялото на имейла, както ви е необходимо;
2.4) Уверете се, че Изпращайте имейли чрез Outlook полето е отметнато;
2.5) Щракнете върху Изпрати бутон. Вижте екранна снимка:

3. След това a Kutools за Excel се появява диалогов прозорец, за да ви каже колко имейла са изпратени, щракнете върху OK бутон, за да затворите този диалогов прозорец.

Съвети: Можете да отидете на Изпратени елементи папка във вашия Outlook, за да проверите имейлите, които сте изпратили.


5.3 Лесно изпращане на имейли с HTML текст (включително хипервръзка, изображение и др.)

Тази функция за изпращане на имейли ви позволява да създадете html имейл, който включва хипервръзка, изображение, различни размери и цветове на шрифта и т.н.

След създаване на пощенски списък, който включва имейл полетата, от които се нуждаете,

Когато конфигурирайте диалоговия прозорец Изпращане на имейли, можете да направите основното съдържание богато, като използвате опциите в лентата с инструменти.

Вижте екранната снимка по-долу:


5.4 Лесно поставяне на подпис по подразбиране на Outlook при изпращане на имейли

В горния метод демонстрирахме VBA код, който да ви помогне да изпращате имейли с подпис по подразбиране на Outlook. Тук с функцията за изпращане на имейли просто трябва да поставите отметка на опция, след което подписът по подразбиране на Outlook ще бъде вмъкнат в имейлите, които сте изпратили от Excel.

След създаване на пощенски списък, който включва имейл полетата, от които се нуждаете,

Кога конфигурирайте диалоговия прозорец Изпращане на имейли, трябва да щракнете Настроики > Използвайте настройките за подпис на Outlook.

Забележка: Моля, уверете се, че се показва отметка преди опцията Използване на настройките за подпис на Outlook.

Когато получателите получат имейла, те могат да видят подписа по подразбиране на Outlook, показан в края на тялото на имейла.


5.5 Лесно изпращане на имейли от определен имейл акаунт

За да използвате определен имейл акаунт за изпращане на имейли от Excel, вместо да използвате акаунта по подразбиране, функцията за изпращане на имейли също може да ви помогне лесно да го направите.

След създаване на пощенски списък, който включва имейл полетата, от които се нуждаете,

Кога конфигурирайте диалоговия прозорец Изпращане на имейли, трябва да щракнете Настроики > Изпратено от, след което щракнете върху имейл акаунта, от който трябва да изпращате имейли.

Забележка: След като изберете имейл акаунта, пред него ще се покаже отметка.

Кликнете тук за да научите повече за тази функция за изпращане на имейли.

  Ако искате да имате безплатен пробен период (30 дни) на тази помощна програма, моля, щракнете, за да го изтеглитеи след това преминете към прилагане на операцията съгласно горните стъпки.

В заключение, изпращането на имейли от Excel е доста полезно в ежедневната ни работа. Тази статия обхваща по-изчерпателни теми за изпращане на имейли от Excel, ако има други теми или по-лесни решения, моля, оставете коментар, за да ме уведомите.

Най-добрите инструменти за продуктивност в офиса

🤖 Kutools AI помощник: Революционизирайте анализа на данни въз основа на: Интелигентно изпълнение   |  Генериране на код  |  Създаване на персонализирани формули  |  Анализирайте данни и генерирайте диаграми  |  Извикване на функциите на Kutools...
Популярни функции: Намерете, маркирайте или идентифицирайте дубликати   |  Изтриване на празни редове   |  Комбинирайте колони или клетки без загуба на данни   |   Кръг без формула ...
Супер търсене: VLookup с множество критерии    VLookup с множество стойности  |   VLookup в няколко листа   |   Размито търсене ....
Разширен падащ списък: Бързо създаване на падащ списък   |  Зависим падащ списък   |  Падащ списък с множество избори ....
Мениджър на колони: Добавете конкретен брой колони  |  Преместване на колони  |  Превключване на състоянието на видимост на скритите колони  |  Сравнете диапазони и колони ...
Препоръчани функции: Мрежов фокус   |  Изглед на дизайна   |   Голям формула бар    Мениджър на работни книги и листове   |  Библиотека с ресурси (Автоматичен текст)   |  Избор на дата   |  Комбинирайте работни листове   |  Шифроване/декриптиране на клетки    Изпращайте имейли по списък   |  Супер филтър   |   Специален филтър (филтър получер/курсив/зачертано...) ...
Топ 15 комплекта инструменти12 Текст Инструменти (добавяне на текст, Премахване на символи, ...)   |   50 + Графика Видове (диаграма на Гант, ...)   |   40+ Практичен формули (Изчислете възрастта въз основа на рождения ден, ...)   |   19 вмъкване Инструменти (Въведете QR код, Вмъкване на картина от пътя, ...)   |   12 Конверсия Инструменти (Числа към думи, Валутен обмен, ...)   |   7 Обединяване и разделяне Инструменти (Разширено комбиниране на редове, Разделени клетки, ...)   |   ... и още

Усъвършенствайте уменията си за Excel с Kutools за Excel и изпитайте ефективност, както никога досега. Kutools за Excel предлага над 300 разширени функции за повишаване на производителността и спестяване на време.  Щракнете тук, за да получите функцията, от която се нуждаете най-много...

Описание


Раздел Office Внася интерфейс с раздели в Office и прави работата ви много по-лесна

  • Разрешете редактиране и четене с раздели в Word, Excel, PowerPoint, Publisher, Access, Visio и Project.
  • Отваряйте и създавайте множество документи в нови раздели на един и същ прозорец, а не в нови прозорци.
  • Увеличава вашата производителност с 50% и намалява стотици кликвания на мишката за вас всеки ден!
Comments (0)
No ratings yet. Be the first to rate!
There are no comments posted here yet
Please leave your comments in English
Posting as Guest
×
Rate this post:
0   Characters
Suggested Locations