Email là một trong những công cụ mạnh mẽ nhất cho giao tiếp. Tự động hóa tạo email có thể tiết kiệm thời gian và đảm bảo tính nhất quán trong giao tiếp. Excel VBA có thể tạo trình tạo email động cho phép bạn tự động tạo email cá nhân hóa từ các mẫu.
Trong bài viết này, chúng ta sẽ tạo trình tạo email động với mẫu trong Excel.
Điều Kiện Tiên Quyết:
- Microsoft Excel (2016 hoặc mới hơn).
- Hiểu biết cơ bản về Excel.
- Truy cập trình soạn thảo VBA (tab Developer được bật).
Bước 1: Thiết Lập Sổ Làm Việc Excel Của Bạn
Tạo Sheet Dữ Liệu:
- Thêm sheet mới tên là Data.
- Tạo cột cho thông tin người nhận:
- First Name (Tên)
- Last Name (Họ)
- Company (Công ty)
- Department (Phòng ban)
- Role (Vai trò)
- Meeting Topic (Chủ đề họp)
- Action Item (Hành động)
- Sender Name (Tên người gửi)

Tạo Sheet Mẫu:
- Tạo sheet khác tên là Template.
- Tạo các cột sau:
- Template ID
- Template Name
- Subject Line (Tiêu đề)
- Email Body (Nội dung email)
Bước 2: Tạo Mẫu Email
Tạo mẫu email chèn động giá trị bằng placeholder như {{FirstName}}, {{Company}}, {{Department}}, {{Role}}, v.v.
Mẫu 1:
Hãy tạo mẫu cho email onboarding tự động.
Dear {{FirstName}},
Welcome to {{Company}}! We're excited to have you on board.
Your account has been set up with the following details:
Department: {{Department}}
Role: {{Role}}
Best regards,
HR Team
Mẫu này dùng cho email onboarding tự động, nơi giá trị thực tế thay thế placeholder trước khi gửi, đảm bảo thông điệp cá nhân hóa cho mỗi người nhận.
Giải Thích:
- {{FirstName}}: Placeholder cho tên nhân viên.
- {{Company}}: Placeholder cho tên công ty.
- {{Department}}: Placeholder cho phòng ban nơi nhân viên mới được phân công.
- {{Role}}: Placeholder cho vai trò công việc của nhân viên.
Mẫu 2:
Chúng ta tạo mẫu khác cho giao tiếp sau cuộc họp.
Hi {{FirstName}},
Thank you for your time during our discussion about {{Meeting Topic}}.
As discussed, I'm following up on {{Action Item}}.
Let me know if you have any questions.
Best regards,
{{Sender Name}}

Bước 3: Chèn Mã VBA
Để mở trình soạn thảo VBA:
- Chuyển đến tab Developer >> chọn Visual Basic.
- Nhấp Insert >> chọn Module.
- Sao chép và dán mã sau:

Option Explicit
Public Sub GenerateEmails()
Dim ws As Worksheet
Dim templateWs As Worksheet
Dim lastRow As Long
Dim i As Long
Dim emailBody As String
Dim subjectLine As String
Dim templateID As Long
' Thiết lập tham chiếu worksheet
Set ws = ThisWorkbook.Sheets("Data")
Set templateWs = ThisWorkbook.Sheets("Templates")
' Tìm hàng cuối có dữ liệu
lastRow = ws.Cells(ws.Rows.Count, "A").End(xlUp).Row
' Lấy Template ID từ người dùng
templateID = InputBox("Enter the Template ID number:", "Select Template")
' Lấy văn bản mẫu
subjectLine = GetTemplate("Subject_Line", templateID)
emailBody = GetTemplate("Email_Body", templateID)
' Chuyển ký tự đặc biệt thành xuống dòng đúng
emailBody = Replace(emailBody, "\n", vbNewLine)
' Tạo mục Outlook
Dim outlookApp As Object
Dim emailItem As Object
Set outlookApp = CreateObject("Outlook.Application")
' Lặp qua từng hàng dữ liệu
For i = 2 To lastRow
' Tạo email mới
Set emailItem = outlookApp.CreateItem(0)
With emailItem
' Thay thế placeholder bằng dữ liệu thực
.Subject = ReplaceFields(subjectLine, i, ws)
.Body = ReplaceFields(emailBody, i, ws)
' Đã thay đổi từ .HTMLBody sang .Body
.To = ws.Cells(i, 3).Value
' Email ở cột C
.Display
' Hiển thị email (thay bằng .Send để gửi tự động)
End With
Next i
Set outlookApp = Nothing
End Sub
Private Function GetTemplate(field As String, templateID As Long) As String
Dim templateWs As Worksheet
Dim templateRow As Range
Set templateWs = ThisWorkbook.Sheets("Templates")
' Tìm hàng mẫu
Set templateRow = templateWs.Columns(1).Find(What:=templateID, LookIn:=xlValues, LookAt:=xlWhole)
If Not templateRow Is Nothing Then
Select Case field
Case "Subject_Line"
GetTemplate = templateWs.Cells(templateRow.Row, 3).Value
Case "Email_Body"
GetTemplate = templateWs.Cells(templateRow.Row, 4).Value
End Select
End If
End Function
Private Function ReplaceFields(text As String, rowNum As Long, ws As Worksheet) As String
Dim result As String
result = text
' Thay thế tất cả placeholder trường bằng dữ liệu thực
result = Replace(result, "{{FirstName}}", ws.Cells(rowNum, 1).Value)
result = Replace(result, "{{LastName}}", ws.Cells(rowNum, 2).Value)
result = Replace(result, "{{Company}}", ws.Cells(rowNum, 4).Value)
result = Replace(result, "{{Department}}", ws.Cells(rowNum, 5).Value)
result = Replace(result, "{{Role}}", ws.Cells(rowNum, 6).Value)
result = Replace(result, "{{Meeting Topic}}", ws.Cells(rowNum, 7).Value)
result = Replace(result, "{{Action Item}}", ws.Cells(rowNum, 8).Value)
result = Replace(result, "{{Sender Name}}", ws.Cells(rowNum, 9).Value)
ReplaceFields = result
End Function
Bước 4: Chạy Trình Tạo Email
- Trên tab Developer >> nhấp Macros.
- Chọn GenerateEmails >> nhấp Run.

- Trong Message Box >> nhập Template ID: 1.
- Nó sẽ gửi tất cả email theo mẫu 1.

- Lại Run mã.
- Trong Message Box >> nhập Template ID: 2.

Nó sẽ gửi tất cả email theo mẫu 2.

- Xem lại email đã tạo trước khi gửi.
- Nếu không cần xem lại, dùng thuộc tính .Send thay vì .Display để gửi tất cả email.
Mẹo Tùy Chỉnh
Thêm Placeholder Mới:
- Thêm cột mới trong sheet Data.
- Cập nhật hàm ReplaceFields trong mã VBA để bao gồm trường mới.
- Thêm placeholder mới vào mẫu email dùng định dạng {{FieldName}}.
Định Dạng HTML:
Bạn có thể bao gồm định dạng HTML trong mẫu email:
<p style="color: blue;">This text will be blue</p>
<strong>This text will be bold</strong>
Kết Luận
Hướng dẫn này sẽ giúp bạn thiết lập tạo email động trong Excel với mẫu định sẵn và tự động hóa VBA. Bạn có thể dùng các mẫu này cho giao tiếp kinh doanh, theo dõi khách hàng và nhắc nhở tự động. Trình tạo email này sẽ làm nền tảng, bạn có thể tùy chỉnh dựa trên yêu cầu cụ thể. Chỉ cần tạo mẫu, cập nhật sheet dữ liệu và placeholder trong mã VBA. Hãy nhớ kiểm tra kỹ trước khi dùng trong môi trường sản xuất.
Nhận Bài Tập Excel Nâng Cao Miễn Phí Kèm Giải Pháp!