Menu

Tự động hóa gửi email báo cáo hàng ngày bằng Excel & VBA

Võ Chính Vy 09/03/2026 15:06 218 lượt xem 2 trả lời

Chào các anh em trong diễn đàn,

Dạo này công việc của mình cứ lặp đi lặp lại việc gửi báo cáo qua email mỗi ngày. Thật sự tốn thời gian ghê gớm. Sau mấy hôm vật lộn, mình cũng mò mẫm ra cách tự động hóa việc này bằng Excel VBA. Chia sẻ lại cho anh em nào đang gặp tình cảnh tương tự.

Về cơ bản, mình sẽ làm 3 bước chính:

  • Tạo báo cáo tự động: Dùng các hàm và công thức Excel để tổng hợp dữ liệu cần thiết. Cái này thì chắc nhiều anh em đã quen rồi.
  • Tạo email mẫu: Chuẩn bị sẵn nội dung email, có thể chèn thêm dữ liệu động từ Excel vào.
  • Viết VBA để gửi email: Đây là phần chính. Code VBA sẽ tự động mở Outlook (hoặc ứng dụng email khác), đính kèm file báo cáo (hoặc file Excel hiện tại), điền người nhận, tiêu đề, nội dung rồi gửi đi.

Ví dụ một đoạn code đơn giản để gửi email:

Sub SendReportEmail() 
    Dim OutApp As Object 
    Dim OutMail As Object 
 
    Set OutApp = CreateObject("Outlook.Application") 
    Set OutMail = OutApp.CreateItem(0) 
 
    With OutMail 
        .To = "nguoinhan@example.com" 
        .Subject = "Bao cao ngay " & Format(Date, "dd/mm/yyyy") 
        .Body = "Kinh gui anh/chi, " & vbCrLf & vbCrLf & _ 
                "Day la bao cao ngay hom nay. Vui long xem dinh kem." & vbCrLf & vbCrLf & _ 
                "Trân trọng," 
        .Attachments.Add ThisWorkbook.FullName ' Đính kèm file Excel hiện tại 
        .Display ' Hoặc .Send để gửi trực tiếp 
    End With 
 
    Set OutMail = Nothing 
    Set OutApp = Nothing 
End Sub

Lưu ý: Đoạn code trên giả định bạn đang dùng Outlook. Nếu dùng ứng dụng khác, có thể cần điều chỉnh chút xíu.

Cách này giúp mình tiết kiệm được kha khá thời gian mỗi ngày, không còn phải ngồi copy-paste hay thao tác thủ công nữa. Anh em nào cần chi tiết hơn về cách xử lý dữ liệu hay tùy chỉnh email thì cứ hỏi nhé!

5

Hay quá bạn ơi! Tự động hóa gửi báo cáo hàng ngày đúng là cứu cánh cho nhiều anh em văn phòng. Mình cũng đang đau đầu với vụ này. Bạn có thể chia sẻ cụ thể hơn về phần "Tạo email mẫu" không? Ý mình là làm sao để chèn dữ liệu từ Excel vào email một cách linh hoạt, ví dụ như tên người nhận, số liệu báo cáo,... ấy. Cảm ơn bạn nhiều!

0

Cái vụ tự động hóa gửi báo cáo này đúng là "cứu tinh" thật bạn nhỉ! Mình cũng từng mất kha khá thời gian cho việc này. Về phần "Tạo email mẫu" mà bạn hỏi, mình thấy có nhiều cách lắm.

Một cách khá phổ biến là dùng MailItem của Outlook Object Library. Bạn có thể lấy địa chỉ email người nhận, tiêu đề, và nội dung từ các ô trong sheet Excel rồi gán vào các thuộc tính tương ứng của MailItem, ví dụ:


Dim OutApp As Object
Dim OutMail As Object

Set OutApp = CreateObject("Outlook.Application")
Set OutMail = OutApp.CreateItem(0) ' 0 = olMailItem

With OutMail
    .To = Range("A1").Value ' Lấy email người nhận từ ô A1
    .Subject = "Báo cáo ngày " & Format(Date, "dd/mm/yyyy")
    .Body = "Chào " & Range("B1").Value & vbCrLf & vbCrLf & _
            "Số liệu báo cáo hôm nay là: " & Range("C1").Value
    .Display ' Hoặc .Send
End With

Cách này cho phép bạn tùy chỉnh nội dung email rất linh hoạt. Không biết bạn đang dùng Outlook hay phần mềm gửi email nào khác?

3

Bạn cần đăng nhập để trả lời chủ đề này.

Đăng nhập Đăng ký