Mail merge (trộn thư) trong Word là gì?
Mail merge, tiếng Việt gọi là trộn thư, là chức năng có sẵn trên thẻ Mailings của Word. Bạn có một file Word mẫu chứa các trường trộn dạng «Ten_cot» và một bảng Excel, mỗi dòng là một bộ dữ liệu. Word thay từng trường bằng giá trị ở dòng tương ứng và tạo ra một văn bản cho mỗi dòng.
Với hồ sơ hiện trường, trộn thư hợp với các biểu mẫu lặp lại nhiều lần mà chỉ khác vài thông tin: biên bản nghiệm thu công việc, phiếu yêu cầu nghiệm thu, biên bản lấy mẫu, giấy mời nghiệm thu.
Chuẩn bị file Excel để trộn thư
Phần lớn lỗi trộn thư đến từ bảng Excel. Làm đúng mấy điểm dưới đây trước khi mở Word:
- Dòng 1 là tên cột, dữ liệu bắt đầu từ dòng 2. Không để tiêu đề lớn, logo hay dòng trống phía trên.
- Tên cột không dấu, không khoảng trắng, ví dụ
So_bien_ban,Ngay_nghiem_thu. Tên này hiện nguyên trong danh sách trường ở Word nên đặt dễ đọc. - Mỗi biên bản một dòng, không gộp ô (Merge Cells), không để dòng trống xen giữa.
- Cột ngày, số hiệu, số điện thoại nên định dạng Text trước khi nhập (xem mục 5). Dữ liệu dán từ nơi khác thì gõ dấu
'trước giá trị hoặc định dạng lại cột. - Mỗi cột một kiểu dữ liệu. Cột vừa có số vừa có chữ dễ bị Word đọc thiếu (xem mục 7).
- Lưu file rồi đóng Excel trước khi nối từ Word.
Các bước trộn thư trong Word từ Excel
- Mở file Word mẫu. Trên thẻ Mailings, chọn Start Mail Merge › Letters. Kiểu Letters cho mỗi dòng dữ liệu một văn bản, bắt đầu ở trang mới.
- Select Recipients › Use an Existing List…, chọn file Excel. Hộp Select Table hiện các sheet có dấu
$ở cuối, ví dụDuLieu$. Chọn sheet chứa dữ liệu, tích First row of data contains column headers, bấm OK. - Đặt con trỏ vào chỗ cần điền, bấm Insert Merge Field và chọn cột. Word chèn trường dạng
«So_bien_ban». Lặp lại cho các chỗ khác; một trường có thể chèn nhiều lần. - Bấm Preview Results, dùng mũi tên để xem lần lượt từng biên bản với dữ liệu thật.
- Cần bỏ bớt dòng: Edit Recipient List, bỏ tích các dòng không in lần này. Có thể lọc (Filter) theo một cột, ví dụ chỉ lấy biên bản của tháng 10.
- Finish & Merge › Edit Individual Documents › All. Word tạo một văn bản mới chứa toàn bộ biên bản, mỗi biên bản là một phần (section) riêng, bắt đầu ở trang mới. Lưu văn bản này thành file mới, đọc lại trước khi in.
- Muốn in ngay không cần xem: Finish & Merge › Print Documents. Nên dùng Edit Individual Documents để còn soát lỗi.
Lưu file mẫu lại. Lần sau mở mẫu, Word hỏi có chạy lệnh SQL để lấy dữ liệu không; chọn Yes nếu đó là file của bạn. Word giao diện tiếng Việt có các lệnh tương ứng trên cùng thẻ.
Ví dụ: in hàng loạt biên bản nghiệm thu công việc
Biên bản nghiệm thu công việc xây dựng là loại lặp nhiều nhất trên công trường: cùng công trình, cùng người ký, chỉ khác công việc, vị trí, ngày và kết quả thí nghiệm. Bảng Excel chỉ cần mỗi đợt nghiệm thu một dòng.
| So_bien_ban | Cong_viec | Vi_tri | Ngay_nghiem_thu |
|---|---|---|---|
| 01/BBNT-CV | Đào khuôn đường, vét hữu cơ | Km0+000 – Km0+300 | 05/10/2026 |
| 02/BBNT-CV | Đắp nền đường lớp K95, dày 30 cm | Km0+000 – Km0+300, lớp 1 | 08/10/2026 |
| 03/BBNT-CV | Lắp đặt ống cống tròn D1000 | Cống tại Km0+450 | 12/10/2026 |
Dữ liệu ví dụ, không phải số liệu công trình thật.
Trong mẫu Word, phần đầu biên bản đặt trường như sau:
Số: «So_bien_ban»
«Dia_danh», ngày «Ngay_nghiem_thu»
BIÊN BẢN NGHIỆM THU CÔNG VIỆC XÂY DỰNG
Công việc: «Cong_viec»
Vị trí (lý trình, trục, cao độ, cấu kiện): «Vi_tri»
Tải bộ mẫu đã gắn sẵn trường trộn5 mẫu biên bản nghiệm thu Word soạn theo nội dung chủ yếu tại Nghị định 207/2026/NĐ-CP, 1 mẫu trộn thư đã chèn sẵn 25 trường, file Excel 26 cột có dòng ví dụ, và hướng dẫn 3 trang. Bạn chỉ cần nhập dữ liệu, nối file Excel ở bước 2 rồi bấm Finish & Merge.
Nhận bộ mẫu biên bản ↗Mẫu là tài liệu tham khảo: đối chiếu hợp đồng, chỉ dẫn kỹ thuật và yêu cầu của chủ đầu tư trước khi dùng. Dữ liệu sai ở một dòng Excel sẽ sai ở biên bản dùng dòng đó, nên kỹ sư vẫn đọc lại từng biên bản trước khi ký.
Định dạng ngày và số khi trộn thư
Word đọc giá trị gốc trong ô Excel, không đọc định dạng hiển thị. Vì vậy ngày 05/10/2026 có thể ra 10/5/2026 (kiểu Mỹ), số 1.250,50 có thể ra 1250.5 hoặc 12.300000001. Có hai cách xử lý.
Cách 1: để cột ở dạng Text trong Excel
Chọn cột, Format Cells › Text, rồi mới nhập dữ liệu. Word lấy đúng chuỗi chữ bạn gõ. Đây là cách đơn giản nhất cho ngày nghiệm thu, số biên bản, lý trình. Nhược điểm: Excel không tính toán, sắp xếp theo ngày được trên cột Text. Bộ mẫu biên bản ở trên dùng cách này.
Với số cần làm tròn, tạo cột phụ bằng hàm TEXT, ví dụ =TEXT(D2;"0,00") trên máy đặt dấu phẩy thập phân, rồi trộn cột phụ.
Cách 2: thêm switch định dạng vào trường trộn
Giữ ngày, số thật trong Excel và bảo Word định dạng lại khi trộn:
- Nhấn Alt+F9 để hiện mã trường. Trường
«Ngay_nghiem_thu»hiện thành{ MERGEFIELD Ngay_nghiem_thu }. - Gõ switch vào trong ngoặc nhọn, trước dấu
}. Không gõ tay dấu ngoặc nhọn; chỉ sửa bên trong. - Nhấn Alt+F9 để trở về, bấm Preview Results để xem kết quả.
{ MERGEFIELD Ngay_nghiem_thu \@ "dd/MM/yyyy" }
→ 05/10/2026
{ MERGEFIELD Ngay_nghiem_thu \@ "'ngày' dd 'tháng' MM 'năm' yyyy" }
→ ngày 05 tháng 10 năm 2026
{ MERGEFIELD Khoi_luong \# "#,##0.00" }
→ 1,250.50 (máy đặt dấu chấm thập phân)
{ MERGEFIELD Khoi_luong \# "#.##0,00" }
→ 1.250,50 (máy đặt dấu phẩy thập phân kiểu Việt Nam)
- Trong switch ngày,
MMviết hoa là tháng;mmviết thường là phút. Viết nhầm sẽ ra số phút thay cho tháng. - Chữ cố định trong switch ngày đặt trong dấu nháy đơn, như
'ngày'. - Ký hiệu phân cách nghìn và thập phân trong switch số
\#đi theo cài đặt vùng (Region) của Windows. Thử một trường trên máy của bạn trước khi làm cả bộ. - Switch
\@chỉ dùng cho cột là ngày thật trong Excel. Cột đã để Text theo cách 1 thì không cần switch.
Xuất mỗi biên bản thành một file riêng
Finish & Merge gom mọi biên bản vào một file. Word không có sẵn nút lưu mỗi biên bản thành một file. Có ba cách, tùy số lượng.
Vài biên bản: làm tay theo từng số thứ tự
Chọn Finish & Merge › Edit Individual Documents, chọn From 1 To 1, bấm OK, lưu file với tên số biên bản. Lặp lại với 2–2, 3–3…
Nhiều biên bản: dùng macro VBA
Macro dưới đây trộn từng dòng một và lưu thành file .docx đặt tên theo cột So_bien_ban, trong cùng thư mục với file mẫu. Ký tự không được phép trong tên file như / được đổi thành -, nên 01/BBNT-CV thành 01-BBNT-CV.docx.
- Lưu file mẫu, làm xong bước 1–3 ở mục 3 (đã nối Excel). Không bỏ tích dòng nào trong Edit Recipient List; muốn bớt dòng thì xóa dòng trong một bản sao file Excel.
- Nhấn Alt+F11. Trong khung Project, chọn Normal, vào Insert › Module, dán đoạn mã, đóng cửa sổ VBA.
- Quay lại file mẫu, nhấn Alt+F8, chọn
TronThu_MoiBienBanMotFile, bấm Run.
Sub TronThu_MoiBienBanMotFile()
' Tron thu: luu moi dong Excel thanh 1 file .docx, dat ten theo cot So_bien_ban
Dim mau As Document, kq As Document
Dim thuMuc As String, ten As String
Dim i As Long, tong As Long, kyTu As Variant
Set mau = ActiveDocument
If mau.Path = "" Then
MsgBox "Hay luu file mau truoc khi chay.", vbExclamation
Exit Sub
End If
If mau.MailMerge.State <> wdMainAndDataSource Then
MsgBox "File mau chua noi voi du lieu Excel (Select Recipients).", vbExclamation
Exit Sub
End If
thuMuc = mau.Path & Application.PathSeparator
With mau.MailMerge
.Destination = wdSendToNewDocument
.DataSource.ActiveRecord = wdLastRecord
tong = .DataSource.ActiveRecord
For i = 1 To tong
.DataSource.ActiveRecord = i
ten = Trim(.DataSource.DataFields("So_bien_ban").Value)
If ten = "" Then ten = "ban-ghi-" & i
For Each kyTu In Array("/", "\", ":", "*", "?", """", "<", ">", "|")
ten = Replace(ten, kyTu, "-")
Next kyTu
.DataSource.FirstRecord = i
.DataSource.LastRecord = i
.Execute Pause:=False
Set kq = ActiveDocument
kq.SaveAs2 FileName:=thuMuc & ten & ".docx", FileFormat:=wdFormatXMLDocument
kq.Close SaveChanges:=wdDoNotSaveChanges
Next i
End With
MsgBox "Da luu " & tong & " file vao " & thuMuc, vbInformation
End Sub
Muốn ra PDF, đổi dòng SaveAs2 thành kq.SaveAs2 FileName:=thuMuc & ten & ".pdf", FileFormat:=wdFormatPDF. Hai dòng Excel cùng số biên bản sẽ ghi đè lên nhau, nên kiểm tra cột So_bien_ban không trùng trước khi chạy. Chạy thử với bản sao thư mục trước.
Giao việc cho AI viết script
Nếu mẫu công ty phức tạp hơn (nhiều bảng, nhiều phụ lục), có thể giao cho AI viết một script Python đọc Excel, điền mẫu và lưu mỗi biên bản một file. Hướng dẫn trong bộ mẫu có sẵn câu giao việc cho Codex làm đúng việc này, kèm yêu cầu tự mở lại từng file để báo chỗ còn sót.
Lỗi hay gặp khi trộn thư và cách sửa
| Hiện tượng | Nguyên nhân | Cách sửa |
|---|---|---|
Ngày ra 10/5/2026 hoặc số 46300 | Cột ngày là ngày thật, Word dùng định dạng mặc định | Đổi cột sang Text, hoặc thêm switch \@ "dd/MM/yyyy" |
Số ra 12.300000001, mất phân cách nghìn | Word lấy giá trị gốc, bỏ định dạng Excel | Switch \#, hoặc cột phụ dùng hàm TEXT |
| Ô có dữ liệu trong Excel nhưng trộn ra trống | Cột trộn lẫn số và chữ, Word đoán kiểu theo các dòng đầu và bỏ giá trị khác kiểu | Định dạng cả cột là Text rồi nhập lại, hoặc gõ ' trước giá trị |
| Mất số 0 ở đầu (số điện thoại, mã hiệu) | Excel lưu thành số | Định dạng Text trước khi nhập |
| Ra thêm biên bản trống | Có dòng trống xen giữa hoặc cuối vùng dữ liệu | Xóa hẳn các dòng trống trong Excel, hoặc bỏ tích trong Edit Recipient List |
Hiện { MERGEFIELD … } thay vì dữ liệu | Đang bật hiện mã trường | Nhấn Alt+F9 |
Chữ «Ten_cot» không đổi khi Preview | Chữ được gõ tay, không phải trường thật | Xóa, chèn lại bằng Insert Merge Field |
| Mở lại mẫu, Word hỏi lệnh SQL rồi báo không tìm thấy dữ liệu | File Excel đã đổi tên hoặc chuyển thư mục | Chọn Yes, rồi Select Recipients chọn lại file |
| Nội dung dài làm biên bản tràn trang | Một ô Excel quá dài | Rút gọn ô, chuyển phần dài (bảng kết quả thí nghiệm) thành phụ lục |
Câu hỏi thường gặp
Mail merge trong Word là gì?
Mail merge (trộn thư) là chức năng trên thẻ Mailings của Word, lấy từng dòng trong một bảng dữ liệu như Excel điền vào các trường của một văn bản mẫu. Mỗi dòng dữ liệu tạo ra một văn bản, nên in được hàng loạt thư, phiếu hay biên bản chỉ khác nhau vài thông tin.
Vì sao ngày tháng bị đảo khi trộn thư từ Excel?
Word đọc giá trị ngày gốc trong Excel và hiển thị theo kiểu tháng/ngày/năm. Cách sửa: định dạng cột ngày là Text trong Excel trước khi nhập, hoặc thêm switch \@ "dd/MM/yyyy" vào trường trộn (MM viết hoa là tháng).
Làm sao lưu mỗi biên bản trộn thư thành một file riêng?
Word không có sẵn nút này. Với vài biên bản, dùng Finish & Merge, Edit Individual Documents, chọn From và To cùng một số rồi lưu từng file. Với nhiều biên bản, dùng macro VBA trộn từng dòng và lưu file theo cột số biên bản, hoặc nhờ AI viết script làm việc đó.
Trộn thư có điền được bảng nhiều dòng trong một biên bản không?
Trộn thư kiểu Letters lấy một dòng Excel cho một văn bản, nên không điền trực tiếp được một bảng chi tiết nhiều dòng như bảng khối lượng trong cùng một biên bản. Nên để bảng chi tiết thành phụ lục riêng, hoặc dùng script, AI để điền bảng.