Menu

Tự động hóa việc tạo email hàng loạt từ danh sách Excel bằng VBA

Lâm Vũ Hải 13/06/2026 01:15 252 lượt xem 2 trả lời

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

Dạo này mình có dự án cần gửi email thông báo đến hàng trăm khách hàng mỗi ngày, mà làm thủ công thì tốn quá nhiều thời gian. Sau một hồi mày mò, mình đã viết được một đoạn code VBA nho nhỏ để tự động hóa việc này. Nay chia sẻ lên đây để mọi người cùng tham khảo và đóng góp ý kiến.

Ý tưởng:

  • Đọc dữ liệu từ một bảng Excel (bao gồm Tên, Email, Nội dung tùy chỉnh).
  • Sử dụng Outlook để gửi email.
  • Có thể tùy chỉnh nội dung email cho từng người.

Code mẫu (phần chính):

Sub SendEmails()
    Dim OutApp As Object
    Dim OutMail As Object
    Dim ws As Worksheet
    Dim lRow As Long
    Dim i As Long

    Set ws = ThisWorkbook.Sheets("Sheet1") ' Đổi tên sheet nếu cần
    lRow = ws.Cells(Rows.Count, "A").End(xlUp).Row ' Lấy dòng cuối cùng của cột A

    On Error Resume Next
    Set OutApp = GetObject(, "Outlook.Application")
    If OutApp Is Nothing Then
        Set OutApp = CreateObject("Outlook.Application")
    End If
    On Error GoTo 0

    For i = 2 To lRow ' Bắt đầu từ dòng 2 để bỏ qua tiêu đề
        Set OutMail = OutApp.CreateItem(0) ' 0 = olMailItem

        With OutMail
            .To = ws.Cells(i, "B").Value ' Cột B chứa địa chỉ Email
            .Subject = "Thông báo quan trọng từ công ty" ' Tiêu đề email
            .HTMLBody = "<p>Kính gửi: " & ws.Cells(i, "A").Value & "</p>" & _ ' Cột A chứa Tên
                "<p>Đây là nội dung email được cá nhân hóa...</p>" & _
                "<p>Trân trọng,</p>"
            .Display ' Hoặc .Send để gửi trực tiếp
        End With

        Set OutMail = Nothing
    Next i

    Set OutApp = Nothing
    MsgBox "Hoàn thành gửi email!", vbInformation
End Sub

Lưu ý:

  • Bạn cần tham chiếu đến Microsoft Outlook Object Library trong VBA Editor (Tools -> References).
  • Code trên đang dùng `.Display` để hiển thị email trước khi gửi. Nếu muốn gửi tự động hoàn toàn, bạn đổi thành `.Send`. Tuy nhiên, hãy cẩn thận khi gửi tự động để tránh gửi nhầm hoặc gửi quá nhiều.
  • Cấu trúc file Excel cần có các cột Tên, Email, và có thể thêm các cột khác để tùy chỉnh nội dung email.

Anh em nào có kinh nghiệm xử lý email bằng VBA hoặc có cách tối ưu hơn thì chỉ giáo thêm nhé!

5
Hay quá bạn ơi! Tự động hóa gửi email hàng loạt bằng VBA là một kỹ năng rất hữu ích. Mình cũng từng làm qua dự án tương tự và gặp khá nhiều khó khăn lúc đầu. Bạn có thể chia sẻ thêm về cách bạn xử lý trường hợp email gửi đi bị lỗi hoặc không gửi được không? Mình tò mò không biết bạn có cơ chế kiểm tra hay thông báo lỗi gì không.

Cảm ơn bạn đã chia sẻ code rất hay!

1

Tuyệt vời! Tự động hóa gửi email bằng VBA đúng là cứu cánh cho những ai phải xử lý khối lượng lớn. Mình cũng đang tìm hiểu về mảng này.

Bạn cho mình hỏi thêm là với code của bạn, nếu trong danh sách có những email không hợp lệ (sai định dạng chẳng hạn), thì code có tự động bỏ qua hay có cách nào để báo lại không? Mình sợ gửi nhầm hoặc không gửi được thì lại phải ngồi sửa thủ công.

Cảm ơn bạn đã chia sẻ nhé!

0

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

Đăng nhập Đăng ký