Hướng dẫn Excel - Gửi email từ Excel
Thông thường, chúng tôi sử dụng các ứng dụng email như Outlook, Gmail, v.v. để gửi email. Tuy nhiên, nhiều người lưu trữ dữ liệu trong sổ làm việc Excel và cần gửi một số dữ liệu cùng với những người khác trong khi họ đang làm việc với nó. Do đó, họ cần gửi email trực tiếp từ sổ làm việc Excel, giúp tiết kiệm thời gian vận hành ứng dụng email. Hướng dẫn từng bước này sẽ chỉ cho bạn cách gửi email từ Excel trong các điều kiện khác nhau.
Chú thích: Trước khi áp dụng các phương pháp sau, bạn cần định cấu hình ứng dụng email Outlook trong máy tính của mình và đặt nó làm ứng dụng email mặc định của bạn.
Mục lục: [ Ẩn giấu ]
1. Những điều cơ bản về cách gửi email từ Excel
Phần này giới thiệu những kiến thức cơ bản về cách gửi email từ Excel.
1.1 Gửi email từ Excel với các hàm tích hợp sẵn của Excel
Nếu bạn chỉ muốn gửi các email đơn giản từ Excel, chỉ bao gồm các trường Tới, Chủ đề, Cc và nội dung. Các hàm tích hợp trong Excel có thể giúp bạn.
1.1.1 Gửi email từ Excel với một công thức
Như được hiển thị trong bảng bên dưới, để gửi các email khác nhau từ Excel dựa trên các trường nhất định, bạn có thể sử dụng tham chiếu ô của các trường đã cho để tạo các công thức Siêu kết nối khác nhau để hoàn thành việc này. Sau khi tạo các siêu liên kết email, bạn có thể nhấp vào siêu liên kết mà bạn cần để gửi email tự động.
Lưu ý: Nếu có nhiều hơn một người nhận trong các trường Tới hoặc Cc, vui lòng phân tách chúng bằng dấu chấm phẩy.
Phần này được chia thành bốn phần để hiển thị cho bạn các bước để thêm địa chỉ email, (các) người nhận Cc, dòng chủ đề và nội dung riêng biệt vào công thức Siêu kết nối. Hãy làm như sau.
Cú pháp và đối số của SIÊU LIÊN KẾT chức năng như sau.
cú pháp
HYPERLINK(link_location, [friendly_name])
Lập luận
1.1.1.1 Thêm địa chỉ email vào công thức Siêu liên kết
Ở đây chúng tôi sử dụng "mailto:" như một phần của công thức để thêm người nhận email. Trong ví dụ này, địa chỉ email của người nhận đầu tiên nằm trong ô B2, vì vậy chúng ta cần thêm "mailto:" và tham chiếu nó đến ô B2.
“Mailto:” & B2
1. Chọn một ô để hiển thị siêu kết nối. Trong trường hợp này, tôi chọn ô F2.
2. Sau đó nhập công thức sau vào đó.
=HYPERLINK("mailto:"&B2)
Chú thích: Nếu bạn nhấn đăng ký hạng mục thi , một siêu liên kết sẽ được tạo như thể hiện trong ảnh chụp màn hình bên dưới. Khi bạn nhấp vào liên kết, một email Outlook sẽ được tạo và địa chỉ email của người nhận sẽ tự động được điền vào trường Tới.
Địa chỉ email của người nhận hiện đã được thêm vào công thức Siêu kết nối. Vui lòng tiếp tục với các bước sau để thêm dòng chủ đề, (các) người nhận Cc và nội dung khi bạn cần.
1.1.1.2 Thêm (các) người nhận Cc vào công thức Siêu kết nối
Để thêm (các) người nhận Cc vào chức năng Siêu kết nối, vui lòng thêm "? cc =" như một phần của công thức như sau.
Công thức trong ô F2 sẽ như sau:
=HYPERLINK("mailto:" & B2 & "?cc=" & C2)
1.1.1.3 Thêm dòng chủ đề vào công thức Siêu liên kết
Để thêm dòng chủ đề vào chức năng Siêu kết nối, vui lòng thêm "& chủ đề =" như một phần của công thức như sau.
Công thức trong ô F2 bây giờ sẽ giống như sau:
=HYPERLINK("mailto:" & B2 & "?cc=" & C2 & "&subject="& D2)
1.1.1.4 Thêm nội dung văn bản có ngắt dòng vào công thức Siêu kết nối
Bước cuối cùng là thêm nội dung vào công thức Siêu kết nối. Như bạn có thể thấy trong ví dụ, hai dòng văn bản trong E2 được phân tách bằng dấu ngắt dòng và bạn muốn giữ ngắt dòng trong nội dung email. Outlook có nhận ra ngắt dòng trong trường hợp này không? Hãy kiểm tra nó.
Để thêm văn bản nội dung vào công thức Siêu kết nối, bạn cần thêm “& Body =” như một phần của công thức như sau.
Công thức trong ô F2 hiện được hiển thị như sau:
=HYPERLINK("mailto:" & B2 & "?cc=" & C2 & "&subject="& D2 & "&body="& E2)
Lưu ý: Nếu bạn nhấn đăng ký hạng mục thi và nhấp vào liên kết. Bạn có thể thấy trong email mới rằng nội dung trong phần thân email được hiển thị trên cùng một dòng.
Để hiển thị nội dung email trong các dòng riêng biệt, bạn cần sửa đổi nội dung ô bằng cách thêm mã ký tự xuống dòng % 0A vào văn bản mà bạn cần chèn ngắt dòng. Xem ảnh chụp màn hình:
1.1.1.5 Chỉ định văn bản để hiển thị cho siêu kết nối
Trong các bước trên, chúng ta đã hoàn thành đối số Link_location với các trường email. Ở đây, trong phần này, chúng ta sẽ kết thúc đối số tiếp theo [tên_hắn_hạn].
Trong trường hợp này, tôi muốn ô siêu kết nối hiển thị văn bản là “Gửi email tới xx”, Trong đó xx là tên người nhận trong A2. Vì vậy, công thức trong F2 nên được thay đổi thành:
=HYPERLINK("mailto:" & B2 & "?cc=" & C2 & "&subject="& D2 & "&body="& E2, "Email to "&A2)
Nhấn đăng ký hạng mục thi phím để nhận kết quả.
Chọn ô công thức này và kéo Xử lý tự động điền xuống để tạo các siêu liên kết email khác. Xem ảnh chụp màn hình:
1.1.2 Gửi email từ Excel với chức năng Siêu kết nối
Ngoại trừ việc sử dụng công thức Siêu kết nối ở trên, bạn có thể tạo siêu kết nối email theo cách thủ công với Chèn Liên kết trong Excel. Phần này sẽ chỉ cho bạn các bước.
1. Nhấp chuột phải vào email mà bạn muốn chèn siêu kết nối, chọn liên kết từ menu chuột phải.
2. Trong cửa sổ bật lên Chèn siêu liên kết hộp thoại, bạn cần cấu hình như sau.
Khi nhấp vào siêu liên kết, một email Outlook sẽ được tạo với các trường Tới, Chủ đề và Nội dung được chỉ định như trong ảnh chụp màn hình bên dưới.
Chú ý:
1.2 Gửi email đến nhiều người nhận trong các ô bằng tập lệnh VBA
Trong ví dụ trên, bạn có thể thấy nhiều địa chỉ email được hiển thị trong một ô, được phân tách bằng dấu chấm phẩy. Nếu bạn có danh sách các địa chỉ email như được hiển thị trong ảnh chụp màn hình bên dưới và muốn gửi một email hoặc email độc lập cho tất cả chúng, mã VBA sau có thể giúp bạn.
1.2.1 Gửi email đến nhiều người nhận trong các ô có tập lệnh VBA
1. Trong trang tính có chứa tất cả các địa chỉ email bạn muốn gửi email đến. Nhấn nút Khác + F11 phím để mở Microsoft Visual Basic cho các ứng dụng cửa sổ.
2. bên trong Microsoft Visual Basic cho các ứng dụng cửa sổ, nhấp Chèn > mô-đun, và sau đó dán mã sau vào Mô-đun (Mã) cửa sổ.
Mã VBA: Gửi email đến một danh sách các địa chỉ email
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. Nhấn nút F5 phím để chạy mã và một Kutools cho Excel hộp thoại bật lên. Chọn danh sách địa chỉ email và nhấp vào OK.
Ghi chú:
.Body = "Dear " _
& vbNewLine & vbNewLine & _
"This is a test email " & _
"sending in Excel"
Sau khi chạy mã, tất cả các địa chỉ email trong phạm vi đã chọn được hiển thị trong trường Đến của cửa sổ thư. Xem ảnh chụp màn hình:
1.2.2 Gửi email riêng biệt đến từng người nhận được liệt kê trong các ô có tập lệnh VBA
Đoạn mã trên thêm tất cả các địa chỉ email trong phạm vi đã chọn vào trường Đến của cửa sổ thư. Nếu bạn muốn gửi email đến từng địa chỉ email được liệt kê trong các ô riêng biệt mà không để chúng nhìn thấy địa chỉ email của nhau, bạn có thể thử tập lệnh VBA sau đây.
1. Trong trang tính có chứa tất cả các địa chỉ email bạn muốn gửi email đến. Nhấn nút Khác + F11 chìa khóa để mở cửa sổ Microsoft Visual Basic for Applications.
2. bên trong Microsoft Visual Basic cho các ứng dụng cửa sổ, nhấp Chèn > Mô-đun, và sau đó dán mã sau vào cửa sổ Mô-đun (Mã).
Mã VBA: Gửi email đến từng địa chỉ email được liệt kê trong các ô riêng biệt
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. Sau đó nhấn vào CÔNG CỤ > Tài liệu tham khảo. Trong tạp chí Tài liệu tham khảo - VBAProject hộp thoại, tìm và kiểm tra Thư viện đối tượng Microsoft Outlook 16.0 hộp và sau đó nhấp vào OK để lưu các thay đổi.
4. Nhấn nút F5 phím để chạy mã và một Kutools cho Excel hộp thoại bật lên. Chọn danh sách địa chỉ email và nhấp vào OK.
Ghi chú:
.Subject = "Test"
.Body = "Dear " _
& vbNewLine & vbNewLine & _
"This is a test email " & _
"sending in Excel"
Trong ví dụ này, có sáu địa chỉ email trong phạm vi đã chọn, do đó, sáu cửa sổ thư Outlook sẽ được tạo tự động với địa chỉ email riêng biệt được liệt kê trong trường Đến như được hiển thị trong ảnh chụp màn hình bên dưới.
5. Cuối cùng, nhấp vào Gửi để gửi từng email một.
2. Chèn tệp đính kèm hoặc chữ ký Outlook trong email được gửi từ Excel (với tập lệnh VBA)
Phần này sẽ chỉ cho bạn cách chèn tệp đính kèm hoặc chữ ký mặc định của Outlook trong email được gửi từ Excel.
2.1 Chèn tệp đính kèm trong email được gửi từ Excel
Ở đây chúng tôi mô tả các trường hợp chèn tệp đính kèm khác nhau và bạn có thể chọn phương pháp tùy theo nhu cầu của mình. Trong phần này, bạn có thể tìm hiểu (nhấp vào bất kỳ liên kết nào sau đây để điều hướng đến phương pháp tương ứng):
2.1.1 Gửi email một tệp nhất định dưới dạng tệp đính kèm
Bạn có thể áp dụng mã VBA sau để gửi email một hoặc nhiều tệp trong thư mục dưới dạng tệp đính kèm từ Excel.
1. Nhấn nút Khác + F11 phím.
2. Trong phần mở đầu Microsoft Visual Basic cho các ứng dụng cửa sổ, nhấp Chèn > Mô-đun. Sau đó dán mã VBA sau vào cửa sổ Mô-đun (Mã).
Mã VBA: Gửi tệp qua email trong một thư mục dưới dạng tệp đính kèm từ 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
Chú ý:
3. Sau đó nhấn vào CÔNG CỤ > Tài liệu tham khảo. Trong tạp chí Tài liệu tham khảo - VBAProject hộp thoại, tìm và kiểm tra Thư viện đối tượng Microsoft Outlook 16.0 hộp và sau đó nhấp vào OK để lưu các thay đổi.
4. Nhấn nút F5 phím để chạy mã, sau đó Xem cửa sổ bật lên, vui lòng chọn các tệp bạn cần đính kèm trong email, sau đó nhấp vào OK.
Sau đó, một cửa sổ thông báo hiện lên. Bạn có thể thấy các tệp đã chọn được hiển thị dưới dạng tệp đính kèm trong trường Đính kèm.
2.1.2 Gửi bảng tính hiện tại qua email dưới dạng tệp đính kèm
Nếu bạn muốn gửi trang tính hiện tại qua email dưới dạng tệp đính kèm từ Excel, bạn có thể áp dụng tập lệnh VBA trong phần này.
1. Nhấn nút Khác + F11 phím.
2. Trong phần mở đầu Microsoft Visual Basic cho các ứng dụng cửa sổ, nhấp chèn > Mô-đun. Sau đó, dán mã VBA sau vào Mô-đun (Mã) cửa sổ.
Mã VBA: Gửi bảng tính hiện tại qua email dưới dạng tệp đính kèm
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
Ghi chú:
3. Nhấn nút F5 để chạy mã, sau đó trang tính hiện tại được lưu dưới dạng sổ làm việc Excel và tự động được chèn vào cửa sổ thông báo dưới dạng tệp đính kèm. Xem ảnh chụp màn hình:
Lưu ý: Sổ làm việc đính kèm chỉ chứa trang tính hiện tại có cùng tên với sổ làm việc gốc. Và thời gian bạn chạy mã cũng được thêm vào tên sổ làm việc.
2.1.3 Gửi sổ làm việc hiện tại qua email dưới dạng tệp đính kèm
Sau khi học mã VBA để gửi email trang tính hiện tại dưới dạng tệp đính kèm từ Excel, tại đây chúng tôi cung cấp một tập lệnh VBA khác để giúp bạn gửi email toàn bộ sổ làm việc dưới dạng tệp đính kèm. Hãy làm như sau.
1. Nhấn nút Khác + F11 phím.
2. Trong phần mở đầu Microsoft Visual Basic cho các ứng dụng cửa sổ, nhấp Chèn > Module. Sau đó dán mã VBA sau vào cửa sổ Mô-đun (Mã).
Mã VBA: Gửi sổ làm việc hiện tại qua email dưới dạng tệp đính kèm từ 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
Ghi chú:
3. Nhấn nút F5 để chạy mã, sau đó sổ làm việc hiện tại được tự động chèn vào cửa sổ thông báo dưới dạng tệp đính kèm. Xem ảnh chụp màn hình:
2.1.4 Gửi email toàn bộ sổ làm việc dưới dạng tệp đính kèm PDF
Đối với hầu hết mọi người, họ có xu hướng lưu sổ làm việc Excel dưới dạng tệp PDF và sau đó gửi nó dưới dạng tệp đính kèm cho người khác. Trong phần này, tôi sẽ chỉ cho bạn một cách để gửi email trực tiếp từ Excel với sổ làm việc đang mở hiện tại dưới dạng tệp đính kèm PDF mà không cần phải lưu sổ làm việc dưới dạng tệp PDF theo cách thủ công.
1. Nhấn nút Khác + F11 phím.
2. Trong phần mở đầu Microsoft Visual Basic cho các ứng dụng cửa sổ, nhấp Chèn > Module. Sau đó dán mã VBA sau vào cửa sổ Mô-đun (Mã).
Mã VBA: Gửi email toàn bộ sổ làm việc dưới dạng tệp đính kèm 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
Ghi chú:
3. Nhấn nút F5 phím để chạy mã. Sau đó, sổ làm việc hiện tại được tự động chèn vào cửa sổ thư mới dưới dạng tệp đính kèm PDF. Xem ảnh chụp màn hình:
2.1.5 Gửi bảng tính hiện tại qua email dưới dạng tệp đính kèm PDF
Ví dụ: có một sổ làm việc có tên là “Doanh số hàng tháng” và bạn đã hoàn thành bảng báo cáo bán hàng trong một trang tính có tên “báo cáo bán hàng” và muốn gửi trang tính này dưới dạng tệp PDF cho đồng nghiệp của mình. Mã VBA sau đây có thể giúp bạn.
1. Nhấn nút Khác + F11 phím.
2. Trong phần mở đầu Microsoft Visual Basic cho các ứng dụng cửa sổ, nhấp chèn > Module. Sau đó dán mã VBA sau vào cửa sổ Mô-đun (Mã).
Mã VBA: Gửi bảng tính hiện tại qua email dưới dạng tệp đính kèm 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
Ghi chú:
3. Nhấn nút F5 phím để chạy mã. Sau đó, trang tính hiện tại được tự động chèn vào cửa sổ thư mới dưới dạng tệp đính kèm PDF. Xem ảnh chụp màn hình:
2.2 Chèn chữ ký Outlook trong các email được gửi từ Excel
Lấy trường hợp trên làm ví dụ, bạn áp dụng mã VBA trên để gửi trang tính hiện tại dưới dạng tệp đính kèm PDF từ Excel, nhưng không thể thêm chữ ký Outlook vào cửa sổ thư. Để giữ lại chữ ký mặc định của Outlook trong email được gửi từ Excel, phương pháp sau sẽ hữu ích.
Hai mã VBA được liệt kê bên dưới.
Mã VBA 1: Mã giúp giữ lại chữ ký Outlook.
Mã VBA 2: Mã giúp gửi trang tính hiện tại qua email dưới dạng tệp đính kèm PDF.
Mã VBA 1: Giữ lại chữ ký Outlook
.HTMLBody = "Email body" & "
" & .HTMLBody
Mã VBA 2: Gửi bảng tính hiện tại qua email dưới dạng tệp đính kèm 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. Thông thường, bạn cần nhấn Khác + F11 phím để mở Microsoft Visual Basic cho các ứng dụng cửa sổ.
2. bên trong Microsoft Visual Basic cho các ứng dụng cửa sổ, nhấp Chèn > Mô-đun. Sau đó dán mã VBA 2 ở trên vào cửa sổ Mô-đun (Mã).
3. Để giữ lại chữ ký mặc định của Outlook trong email được gửi từ Excel, bạn cần sửa đổi mã VBA 2 như sau:
Đây là mã hoàn chỉnh sau khi sửa đổi.
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. Nhấn nút F5 phím để chạy mã. Sau đó, bạn sẽ nhận được một cửa sổ thư mới với trang tính hiện tại được đính kèm dưới dạng tệp PDF, trong khi chữ ký mặc định của Outlook sẽ tự động được chèn vào cuối nội dung email.
3. Tự động gửi email từ Excel khi một điều kiện được đáp ứng (với tập lệnh VBA)
Trong các ví dụ trên, bạn cần chạy mã theo cách thủ công để gửi email. Nếu bạn muốn tự động kích hoạt mã khi một điều kiện nhất định được đáp ứng, chẳng hạn như khi ô đạt đến một giá trị nhất định, khi giá trị của ô thay đổi, khi đến ngày, v.v., email sẽ được gửi tự động. Phần này liệt kê các điều kiện mà người dùng Excel thường tìm kiếm trong Google để giúp bạn tự động gửi email từ Excel khi một điều kiện nhất định được đáp ứng.
3.1 Tự động gửi email khi một ô đạt đến một giá trị nhất định
Như được hiển thị trong ảnh chụp màn hình bên dưới, giả sử bạn có một bảng bán hàng với ô D6 chứa tổng doanh số. Bạn muốn tự động gửi email cho sếp của mình dựa trên tổng doanh số, ví dụ: tạo hoặc gửi email tự động khi tổng doanh số vượt quá 10000 nhưng nếu tổng doanh thu bằng hoặc nhỏ hơn 10000, bạn không cần thực hiện hành động nào.
1. Trong trang tính có bảng bán hàng, hãy nhấp chuột phải vào tab trang tính và nhấp vào Xem mã từ menu chuột phải.
2. Trong phần mở đầu Microsoft Visual Basic cho các ứng dụng , dán mã VBA sau vào Trang tính (Mã) cửa sổ.
Mã VBA: Tự động gửi email khi một ô đạt đến một giá trị nhất định trong 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
Chú ý:
xMailBody = "Hi boss" & vbNewLine & vbNewLine & _
"Total sales of over $10,000 in January: " & Range("D6")
Từ bây giờ, khi giá trị trong ô D6 vượt quá 10000, một email sẽ được tạo như thể hiện trong ảnh chụp màn hình bên dưới.
3.2 Tự động gửi email khi giá trị ô thay đổi
Như được hiển thị trong ảnh chụp màn hình bên dưới, giả sử bạn nhận được một sổ làm việc có chứa doanh số hàng tháng trong các trang tính khác nhau và tổng doanh số trong một trang tính. Bạn cần xác minh tổng doanh số và nếu tổng doanh số được sửa đổi, hãy gửi lại sổ làm việc cho người gửi và thông báo cho người gửi rằng ô đã được sửa đổi.
1. Trong trang tính có bảng bán hàng, hãy nhấp chuột phải vào tab trang tính và nhấp vào Xem mã từ menu chuột phải.
2. Trong phần mở đầu Microsoft Visual Basic cho các ứng dụng , dán mã VBA sau vào cửa sổ Trang tính (Mã).
Mã VBA: Tự động gửi email khi giá trị ô được chỉ định thay đổi
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
Chú ý: Trong mã,
Từ bây giờ, khi giá trị trong ô B14 thay đổi, một thông báo Outlook sẽ được tạo tự động như trong ảnh chụp màn hình bên dưới.
3.3 Tự động gửi email khi sổ làm việc được lưu
Nếu bạn có sổ làm việc cần chia sẻ với người khác sau khi sửa đổi, thông thường bạn cần lưu sổ làm việc, khởi chạy ứng dụng email, tạo email mới có đính kèm sổ làm việc này, soạn các trường tương ứng rồi gửi email. Phần này sẽ chỉ cho bạn phương pháp tạo email tự động mỗi khi bạn lưu sổ làm việc. Hãy làm như sau.
1. Nhấn nút Khác + F11 phím để mở Microsoft Visual Basic cho các ứng dụng cửa sổ.
2. Trong cửa sổ này, nhấp đúp vào Sổ làm việc này trong Dự án , sau đó dán mã VBA sau vào ThisWorkbook (Mã) cửa sổ.
Mã VBA: Tự động gửi email khi sổ làm việc được lưu
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
Chú ý: Trong mã,
3. Từ bây giờ, khi lưu sổ làm việc bằng cách nhấn Ctrl + S phím hoặc nhấp vào Lưu , một email Outlook sẽ được tạo tự động. Bạn có thể thấy rằng sổ làm việc hiện tại được đính kèm dưới dạng tệp đính kèm và các trường được điền với nội dung được chỉ định. Xem ảnh chụp màn hình:
Lời khuyên: Nếu bạn thường xuyên sử dụng sổ làm việc này, ở đây khuyên bạn nên lưu sổ làm việc dưới dạng Sổ làm việc hỗ trợ macro Excel để lưu tập lệnh VBA để sử dụng trong tương lai. Các bước thực hiện như sau.
3.4 Tự động gửi email vào một thời điểm cụ thể
Giả sử bạn cần gửi email có sổ làm việc phân công nhiệm vụ cho ai đó mỗi sáng thứ sáu lúc 9 giờ sángvà muốn thực hiện việc này tự động trong Excel mà không cần phải vận hành ứng dụng email khách theo cách thủ công. Phần này sẽ chỉ cho bạn phương pháp để hoàn thành công việc đó.
1. Nhấn nút Khác + F11 phím để mở Microsoft Visual Basic cho các ứng dụng cửa sổ.
2. bên trong Microsoft Visual Basic cho các ứng dụng cửa sổ, nhấp Chèn > Module. Sau đó dán mã VBA sau vào cửa sổ Mô-đun.
Mã VBA1: Gửi sổ làm việc hiện tại qua email dưới dạng tệp đính kèm từ 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. Trong cửa sổ này, nhấp đúp vào Sổ làm việc này trong Dự án , sau đó dán mã VBA sau vào ThisWorkbook (Mã) cửa sổ.
Mã VBA 2: Tự động gửi email vào một thời điểm cụ thể
Private Sub Workbook_Open()
Application.OnTime TimeValue("09:00:00"), "Timer"
End Sub
Chú ý:
4. Lưu mã và sau đó lưu sổ làm việc dưới dạng sổ làm việc hỗ trợ macro Excel như sau.
5. Mở sổ làm việc hỗ trợ macro đã lưu của bạn, sau đó một email sẽ được tạo hoặc gửi tự động khi đến ngày và giờ.
4. Chủ đề bổ sung
Phần này thu thập các chủ đề khác mà bạn có thể gặp phải khi gửi email từ Excel.
4.1 Gửi email một loạt ô từ Excel (với tập lệnh VBA)
Giả sử có một bảng doanh số hàng tháng trong một bảng tính Excel như được hiển thị trong ảnh chụp màn hình bên dưới và bạn cần gửi bảng doanh số hàng tháng này cho những người khác dưới dạng nội dung của email hoặc dưới dạng tệp đính kèm trực tiếp. Ở đây chúng tôi cung cấp cho bạn hai phương pháp để hoàn thành việc đó.
4.1.1 Gửi email một dải ô như một phần của nội dung nội dung từ Excel
Bạn có thể chạy mã VBA sau để gửi một dải ô như một phần của nội dung email từ Excel
1. Nhấn nút Khác + F11 phím để mở Microsoft Visual Basic cho các ứng dụng cửa sổ.
2. bên trong Microsoft Visual Basic cho các ứng dụng cửa sổ, nhấp CÔNG CỤ > dự án. Và sau đó kiểm tra Thư viện đối tượng Microsoft Outlook 16.0 hộp và nhấp vào OK trong Tài liệu tham khảo - VBAProject hộp thoại.
3. nhấp chuột Chèn > Mô-đun, sau đó dán mã VBA sau vào Mô-đun (Mã) cửa sổ.
Mã VBA: Gửi một dải ô như một phần của nội dung nội dung email từ 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
Chú ý: Trong mã,
4. Nhấn nút F5 phím để chạy mã. Trong cửa sổ bật lên Kutools cho Excel hộp thoại, chọn phạm vi ô bạn cần gửi như một phần của nội dung nội dung email, sau đó nhấp vào OK. Xem ảnh chụp màn hình:
Sau đó, một email Outlook sẽ được tạo tự động. Bạn có thể thấy rằng phạm vi bạn đã chọn trong trang tính được chèn vào nội dung email. Xem ảnh chụp màn hình:
4.1.2 Gửi một dải ô qua email dưới dạng tệp đính kèm từ Excel
Nếu bạn cần gửi email một loạt ô trong trang tính dưới dạng tệp đính kèm từ Excel. Bạn có thể thử mã VBA sau.
1. Nhấn nút Khác + F11 phím.
2. Trong phần mở đầu Microsoft Visual Basic cho các ứng dụng cửa sổ, nhấp Chèn > Mô-đun. Sau đó, dán mã VBA sau vào Mô-đun (Mã) cửa sổ.
Mã VBA: Gửi một dải ô qua email dưới dạng tệp đính kèm từ 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
Chú ý:
3. Nhấn nút F5 phím để chạy mã. Trong cửa sổ bật lên Kutools cho Excel hộp thoại, chọn phạm vi ô bạn cần gửi dưới dạng tệp đính kèm trong email, sau đó nhấp vào OK. Xem ảnh chụp màn hình:
Sau đó, một email Outlook sẽ được tạo tự động. Và phạm vi ô bạn đã chọn trong trang tính được lưu dưới dạng sổ làm việc Excel và được đính kèm trong cửa sổ Thư. Xem ảnh chụp màn hình:
4.2 Gửi email khi một nút được nhấp trong Excel
Ví dụ: nếu bạn cần bấm vào nút lệnh để kích hoạt macro để gửi email từ Excel, hãy gửi sổ làm việc hiện tại dưới dạng tệp đính kèm cho người khác bằng cách bấm vào nút lệnh trong trang tính. Bạn có thể làm theo các bước như sau để hoàn thành.
1. nhấp chuột Nhà phát triển > Chèn > Nút lệnh (Điều khiển ActiveX). Sau đó, vẽ một nút lệnh trong trang tính.
Lời khuyên: Nếu bạn đã có nút lệnh, hãy bỏ qua bước này.
2. Nhấn nút Khác + F11 phím để mở Microsoft Visual Basic cho các ứng dụng cửa sổ. Trong cửa sổ, nhấp vào Chèn > thời gian, sau đó dán mã VBA (mã được sử dụng để gửi email sổ làm việc hiện tại dưới dạng tệp đính kèm từ Excel) trong cửa sổ Mô-đun (Mã).
Chú thích: Đây là tên của macro bạn đã tạo ở bước 2 là Gửi Sổ làm việc.
3. Nhấn nút Khác + Q chìa khóa để đóng Microsoft Visual Basic cho các ứng dụng cửa sổ.
4. Bây giờ bạn cần gán macro cho nút lệnh. Nhấp chuột phải vào nút lệnh, chọn Mã Chế độ xem từ menu chuột phải.
5. Sau đó Microsoft Visual Basic cho các ứng dụng cửa sổ bật lên, bạn có thể thấy hai dòng sau được liệt kê trong Trang tính (Mã) cửa sổ.
Private Sub CommandButton1_Click()
End Sub
6. Nhập tên của macro hiện có bên trong quy trình con cho nút lệnh.
7. Nhấn nút Khác + Q chìa khóa để đóng Trình soạn thảo Visual Basic, Và nhấp vào Nhà phát triển > Chế độ thiết kế để tắt chế độ thiết kế.
Bây giờ bạn có thể bấm vào nút lệnh để gửi email với sổ làm việc hiện tại dưới dạng tệp đính kèm trong email.
4.3 Gửi email từ một tài khoản email cụ thể
Thông thường, khi khởi chạy email từ Excel với mã VBA, tài khoản email của người gửi là tài khoản mặc định trong Outlook. Giả sử bạn đã định cấu hình một số tài khoản email trong Outlook của mình và muốn sử dụng một tài khoản nhất định để gửi email từ Excel thay vì sử dụng tài khoản mặc định. Mã VBA sau đây có thể giúp bạn.
Các mã sau đây là cần thiết trong trường hợp này.
Mã VBA 1:
Dim OutlookMail As Outlook.MailItem
Mã 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
Làm thế nào để sử dụng mã VBA trên?
Trong ví dụ này, chúng tôi sẽ chỉ định một tài khoản email nhất định để gửi sổ làm việc hiện tại dưới dạng tệp đính kèm từ Excel. Hãy làm như sau.
1. Nhấn nút Khác + F11 chìa khóa. bên trong Microsoft Visual Basic cho các ứng dụng cửa sổ, nhấp CÔNG CỤ > dự án. Và sau đó kiểm tra Thư viện đối tượng Microsoft Outlook 16.0 hộp và nhấp vào OK trong Tài liệu tham khảo - VBAProject hộp thoại.
2. nhấp chuột Chèn > Mô-đun. Sau đó, dán mã VBA sau vào Mô-đun (Mã) cửa sổ.
Mã VBA: Gửi sổ làm việc hiện tại dưới dạng tệp đính kèm email từ Excel thông qua tài khoản Outlook được chỉ định
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. Nhấn nút F5 phím để chạy mã. Sau đó, một thông báo email Outlook bật lên, bạn có thể thấy rằng Từ trường được điền với tài khoản email bạn đã chỉ định trong mã.
4.4 Gửi email khi đến ngày
Ví dụ: nếu bạn cần gửi email dựa trên một ngày đến hạn cụ thể, như được hiển thị trong ảnh chụp màn hình bên dưới, có một bảng dự án, khi ngày đến hạn trong phạm vi E2: E7 bằng hoặc ít hơn 7 ngày kể từ hôm nay (giả sử ngày hiện tại là 2022/8/4), một email sẽ được gửi tự động đến những người đứng đầu dự án tương ứng và thông báo cho họ rằng dự án sắp hết hạn.
1. Trong trang tính có chứa bảng dự án, hãy nhấp chuột phải vào tab trang tính và nhấp vào Xem mã từ menu chuột phải.
2. Trong phần mở đầu Microsoft Visual Basic cho các ứng dụng , dán mã VBA sau vào Trang tính (Mã) cửa sổ.
Mã VBA: Tự động gửi email khi gặp ngày đến hạn
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
Chú ý: Trong mã,
3. Nhấn nút F5 phím để chạy mã. Sau đó, nếu ngày hết hạn phù hợp với các điều kiện, email tương ứng sẽ được tạo. Trong trường hợp này, hai email sẽ được tạo như trong ảnh chụp màn hình bên dưới.
5. Một công cụ tiện dụng giúp bạn dễ dàng gửi email từ Excel
Nếu bạn là người mới sử dụng VBA, các phương pháp trên có thể không dễ dàng để bạn xử lý. Ở đây chúng tôi khuyên bạn nên Kutools cho Excel'S Gửi email , với tính năng này, bạn có thể dễ dàng gửi email từ Excel chỉ với vài cú nhấp chuột. Hãy làm như sau.
Trước khi áp dụng Kutools cho Excel, Xin vui lòng tải xuống và cài đặt nó trước tiên.
5.1 Dễ dàng tạo danh sách gửi thư bao gồm các trường email bạn cần
Trước khi áp dụng tính năng Gửi Email, bạn cần tạo một danh sách gửi thư có chứa các trường email bạn cần. Tại đây, tính năng Tạo danh sách gửi thư có thể giúp ích.
1. nhấp chuột Kutools Plus > Tạo danh sách gửi thư.
2. Trong phần mở đầu Tạo danh sách gửi thư cửa sổ, bạn cần phải cấu hình như sau.
Sau đó, một bảng danh sách gửi thư mẫu được tạo như thể hiện trong ảnh chụp màn hình bên dưới.
3. Bây giờ bạn cần thay thế dữ liệu gốc trong mẫu bằng dữ liệu trường của riêng bạn.
Bây giờ bạn đã tạo một bảng danh sách gửi thư. Vui lòng tiếp tục để áp dụng Gửi email tính năng gửi email từ Excel dựa trên các trường bạn đã tạo.
Nếu bạn muốn dùng thử miễn phí (30 ngày) tiện ích này, vui lòng nhấp để tải xuống, và sau đó đi đến áp dụng hoạt động theo các bước trên.
5.2 Dễ dàng gửi email bao gồm các trường bạn đã tạo trong danh sách gửi thư
Sau khi tạo danh sách gửi thư (bấm để biết làm thế nào) có chứa các trường bạn có thể cần trong email của mình, bây giờ bạn có thể gửi email từ Excel với các trường này.
1. Chọn toàn bộ danh sách gửi thư, nhấp vào Kutools Plus > Gửi email.
2. bên trong Gửi email hộp thoại, vui lòng thực hiện cấu hình sau.
3. Sau đó a Kutools cho Excel hộp thoại bật lên để cho bạn biết có bao nhiêu email được gửi, hãy nhấp vào OK để đóng hộp thoại này.
Lời khuyên: Bạn có thể đi tới Các mục đã gửi trong Outlook của bạn để kiểm tra các email bạn đã gửi.
5.3 Dễ dàng gửi email với nội dung HTML (bao gồm siêu liên kết, hình ảnh, v.v.)
Tính năng Gửi Email này cho phép bạn tạo một email html, bao gồm siêu liên kết, hình ảnh, các kích thước phông chữ và màu phông chữ khác nhau, v.v.
Sau tạo một danh sách gửi thư bao gồm các trường email bạn cần,
Khi bạn định cấu hình hộp thoại Gửi Email, bạn có thể làm cho nội dung nội dung phong phú bằng cách sử dụng các tùy chọn trên thanh công cụ.
Xem ảnh chụp màn hình bên dưới:
5.4 Dễ dàng chèn chữ ký mặc định của Outlook khi gửi email
Trong phương pháp trên, chúng tôi đã trình bày mã VBA để giúp bạn gửi email với chữ ký mặc định của Outlook. Ở đây với tính năng Gửi Email, bạn chỉ cần đánh dấu vào một tùy chọn, sau đó chữ ký mặc định của Outlook sẽ được chèn vào các email bạn đã gửi từ Excel.
Sau tạo một danh sách gửi thư bao gồm các trường email bạn cần,
Thời Gian định cấu hình hộp thoại Gửi Email, bạn cần nhấp vào Các lựa chọn > Sử dụng cài đặt chữ ký của Outlook.
Chú thích: Hãy đảm bảo rằng có một dấu kiểm hiển thị trước tùy chọn Sử dụng cài đặt chữ ký của Outlook.
Khi người nhận nhận được email, họ có thể thấy chữ ký mặc định của Outlook được hiển thị ở cuối nội dung email.
5.5 Dễ dàng gửi email từ một tài khoản email cụ thể
Để sử dụng một tài khoản email nhất định để gửi email từ Excel thay vì sử dụng tài khoản mặc định, tính năng Gửi email cũng có thể giúp bạn dễ dàng thực hiện.
Sau tạo một danh sách gửi thư bao gồm các trường email bạn cần,
Thời Gian định cấu hình hộp thoại Gửi Email, bạn cần nhấp vào Các lựa chọn > Đã được gửi từ, sau đó nhấp vào tài khoản email bạn cần để gửi email.
Chú thích: Sau khi chọn tài khoản email, một dấu kiểm sẽ được hiển thị trước nó.
Nhấp chuột Ở đây để biết thêm về tính năng Gửi Email này.
Nếu bạn muốn dùng thử miễn phí (30 ngày) tiện ích này, vui lòng nhấp để tải xuống, và sau đó đi đến áp dụng hoạt động theo các bước trên.
Kết lại, gửi email từ Excel khá hữu ích trong công việc hàng ngày của chúng ta. Bài viết này bao gồm các chủ đề tổng hợp hơn về các email gửi từ Excel, nếu có chủ đề khác hoặc các giải pháp dễ dàng hơn, vui lòng để lại bình luận cho tôi biết.
Công cụ năng suất văn phòng tốt nhất
Nâng cao kỹ năng Excel của bạn với Kutools for Excel và trải nghiệm hiệu quả hơn bao giờ hết. Kutools for Excel cung cấp hơn 300 tính năng nâng cao để tăng năng suất và tiết kiệm thời gian. Bấm vào đây để có được tính năng bạn cần nhất...
Tab Office mang lại giao diện Tab cho Office và giúp công việc của bạn trở nên dễ dàng hơn nhiều
- Cho phép chỉnh sửa và đọc theo thẻ trong Word, Excel, PowerPoint, Publisher, Access, Visio và Project.
- Mở và tạo nhiều tài liệu trong các tab mới của cùng một cửa sổ, thay vì trong các cửa sổ mới.
- Tăng 50% năng suất của bạn và giảm hàng trăm cú nhấp chuột cho bạn mỗi ngày!