Hướng dẫn 03 cách gửi phiếu lương hàng loạt cho từng email an toàn / tiện lợi / cập nhật mới nhất 2026
Cuối tháng, bạn đã chốt xong bảng lương và việc cuối cùng là gửi phiếu lương cho từng người. Với 20 nhân viên, bạn còn làm tay được. Với 100 người thì khác hẳn: copy từng dòng, dán vào từng email vừa mất hàng giờ, vừa dễ gửi nhầm địa chỉ, mà phiếu lương lại là thông tin rất nhạy cảm.
Nếu file bảng lương Excel của bạn đã có cột Email, bạn có thể tự động hóa việc gửi ngay trên máy tính bằng công cụ miễn phí. Bài viết này hướng dẫn 3 cách phổ biến nhất tại Việt Nam, kèm ưu nhược điểm, lỗi thường gặp và cách giữ an toàn cho dữ liệu lương.
Trả lời nhanh: Để gửi phiếu lương hàng loạt từ file Excel cho từng nhân viên mà không tốn phí, bạn có thể dùng Mail Merge (Word + Excel + Outlook), Google Sheets + Apps Script (qua Gmail) hoặc Excel VBA (qua Outlook). Mail Merge dễ nhất nhưng phiếu nằm trong thân email. Apps Script và VBA linh hoạt hơn nhưng cần chỉnh code. Khi gửi số lượng lớn dễ chạm hạn mức hoặc vào spam, bạn có thể tách bước gửi sang một hạ tầng chuyên dụng như Zozo EMA, trong khi vẫn tự kiểm soát dữ liệu lương.
Nên chọn cách nào? Gợi ý nhanh theo tình huống
Nếu bạn chỉ có ít thời gian, hãy chọn theo công cụ đang dùng và quy mô nhân sự:
| Tình huống của bạn | Nên chọn | Lý do |
|---|---|---|
| Dưới khoảng 50 nhân viên, phiếu lương đơn giản, đã có Outlook | Mail Merge | Không cần code, dùng Word và Excel có sẵn |
| Công ty dùng Gmail hoặc Google Workspace | Google Apps Script | Chạy trên trình duyệt, ghi trạng thái gửi vào Sheet |
| Kế toán quen Excel, mẫu phiếu phức tạp, muốn PDF đính kèm | Excel VBA | Tùy biến cao, xuất file riêng từng người |
| Trên khoảng 100 nhân viên, cần báo cáo và gửi lại có chọn lọc | Hạ tầng gửi chuyên dụng (ví dụ Zozo EMA) | Tránh dồn vào một hộp thư, có báo cáo kết quả |
Chuẩn bị file bảng lương trước khi gửi
Dù chọn cách nào, 5 việc sau giúp bạn tránh phần lớn lỗi:
- Mỗi dòng là một nhân viên, gồm các cột như Mã NV, Họ tên, Email, Lương cơ bản, Phụ cấp, BHXH, Thuế TNCN, Thực lĩnh.
- Tiêu đề cột nằm trên một dòng duy nhất, không gộp ô (merge). Mail Merge và nhiều công cụ khác đọc lỗi khi tiêu đề bị gộp.
- Chuyển công thức thành giá trị (Copy, rồi Paste Values) trong file dùng để gửi, để dữ liệu không đổi khi bạn đóng mở file.
- Rà soát cột Email: không trùng, không thừa khoảng trắng, đúng định dạng.
- Đặt tên sheet không dấu, không khoảng trắng (ví dụ BangLuong, PhieuLuong) để macro và script tham chiếu không lỗi.
Cách 1: Gửi phiếu lương bằng Mail Merge (Word + Excel + Outlook)
Mail Merge là gì?
Mail Merge (trộn thư) là tính năng có sẵn trong Microsoft Word. Bạn soạn một mẫu phiếu lương duy nhất, chèn các trường dữ liệu lấy từ file Excel, rồi gửi qua Outlook. Mỗi nhân viên nhận một email mang đúng số liệu của mình.
Các bước thực hiện
Bước 1. Chuẩn hóa file Excel theo phần chuẩn bị ở trên và đóng file lại trước khi trộn thư.
Bước 2. Soạn mẫu phiếu lương trong Word: tiêu đề, họ tên, bảng các khoản lương. Chưa cần điền số liệu.
Bước 3. Chọn kiểu trộn thư. Vào thẻ Mailings (Thư), chọn Start Mail Merge, rồi chọn E-mail Messages.
Bước 4. Nối với file Excel. Chọn Select Recipients, rồi Use an Existing List, chọn file bảng lương và đúng sheet dữ liệu.
Bước 5. Chèn trường dữ liệu. Đặt con trỏ đúng vị trí, chọn Insert Merge Field rồi chọn cột tương ứng. Tên cột có khoảng trắng sẽ hiển thị với dấu gạch dưới.
Bước 6. Xem trước từng người. Bấm Preview Results và duyệt qua vài nhân viên để chắc rằng số liệu đúng chỗ.
Bước 7. Gửi. Chọn Finish & Merge, rồi Send E-mail Messages. Ở hộp thoại, mục To chọn cột Email, nhập tiêu đề (ví dụ “Phiếu lương tháng 09/2026”), chọn định dạng thư và phạm vi gửi. Nên chọn Current record để gửi thử một người trước khi gửi All.
Nhân viên sẽ nhận được email với nội dung phiếu lương của riêng mình:
Ưu điểm
- Dễ làm nhất, không cần biết lập trình.
- Dùng ngay bộ Microsoft Office có sẵn.
- Mẫu phiếu trực quan, chỉnh sửa như soạn văn bản.
Nhược điểm
- Cần Outlook cài trên máy và đã đăng nhập tài khoản gửi.
- Nội dung nằm trong thân email. Word không có sẵn cách xuất PDF có mật khẩu riêng cho từng người.
- Khó theo dõi ai đã nhận, ai bị lỗi.
Lỗi thường gặp
- Số tiền mất định dạng (hiện 15000000 thay vì 15.000.000): thêm định dạng số vào mã trường, ví dụ
{ MERGEFIELD Thuc_linh \# "#,##0" }, dấu phân cách hiển thị theo cài đặt vùng của Windows. Hoặc tạo sẵn cột văn bản bằng hàm TEXT trong Excel. - Không đọc được tiêu đề cột: tiêu đề đang bị gộp ô hoặc nằm ở dòng thứ hai.
- Không gửi được email: kiểm tra Outlook đã mở và đăng nhập. Outlook bản mới hoặc bản web có thể không phối hợp được với Word, khi đó hãy dùng Outlook bản cài trên máy.
Giới hạn khi gửi nhiều
Mail Merge gửi qua chính tài khoản Outlook của bạn, nên chịu hạn mức và giới hạn tốc độ của tài khoản đó. Với danh sách lớn, hãy gửi theo từng đợt (dùng mục From/To) và hỏi quản trị viên email về hạn mức cụ thể.
Phù hợp với: doanh nghiệp nhỏ, dưới khoảng 50 nhân viên, phiếu lương đơn giản.
Cách 2: Gửi phiếu lương bằng Google Sheets + Google Apps Script
Cách này hoạt động thế nào?
Bạn đưa bảng lương lên Google Sheets, rồi dùng Google Apps Script (công cụ lập trình tích hợp sẵn, miễn phí) để đọc từng dòng và gửi email qua Gmail. Script có thể ghi “Đã gửi” vào bảng tính để lần chạy sau bỏ qua những người đã nhận.
Các bước thực hiện
- Đưa dữ liệu lên Google Sheets và chỉ giữ các cột cần gửi: Mã NV, Họ tên, Email, Thực lĩnh, kèm một cột Trạng thái.
- Mở menu Tiện ích mở rộng, chọn Apps Script.
- Dán script và chỉnh tiêu đề, thứ tự cột cho khớp bảng của bạn.
- Bấm Chạy. Lần đầu, Google yêu cầu cấp quyền gửi email. Vì script do chính bạn viết, Google có thể hiện cảnh báo chưa xác minh. Chỉ cấp quyền khi bạn hiểu rõ nội dung script.
- Xem Nhật ký thực thi và cột Trạng thái để biết ai đã được gửi.
Dưới đây là đoạn script rút gọn để bạn hình dung cấu trúc. Bản đầy đủ có xuất PDF và xử lý lỗi sẽ có ở bài hướng dẫn chi tiết.
function guiPhieuLuong() {
const sheet = SpreadsheetApp.getActiveSheet();
const data = sheet.getDataRange().getValues();
for (let i = 1; i < data xss=removed xss=removed>
Hạn mức gửi email của Apps Script
Theo tài liệu hạn mức của Google Apps Script, hạn mức email tính theo số người nhận mỗi ngày:
| Loại tài khoản | Hạn mức người nhận mỗi ngày |
|---|---|
| Gmail cá nhân (gmail.com) | Khoảng 100 |
| Google Workspace | Khoảng 1.500 (nội bộ cùng tên miền có thể cao hơn) |
Google ghi rõ hạn mức có thể thay đổi mà không báo trước. Bạn có thể dùng hàm MailApp.getRemainingDailyQuota() để xem số còn lại trong ngày.
Ưu điểm
- Miễn phí, chạy trên trình duyệt, không cần cài phần mềm.
- Ghi được trạng thái gửi ngay trong bảng tính, chạy lại chỉ gửi người còn thiếu.
- Xuất được phiếu lương thành PDF và đính kèm.
- Hợp với công ty đã dùng Google Workspace.
Nhược điểm
- Cần dán và chỉnh code (có thể nhờ công cụ AI hỗ trợ viết rồi tự kiểm tra kỹ).
- Hạn mức người nhận mỗi ngày khá thấp với Gmail cá nhân.
- Apps Script không có sẵn tính năng đặt mật khẩu cho PDF.
- Phải cấp quyền cho script và đưa dữ liệu lương lên dịch vụ đám mây, cần kiểm soát chia sẻ chặt chẽ.
Lỗi thường gặp
- Hết hạn mức trong ngày: script dừng và báo lỗi. Chờ hạn mức làm mới hoặc chia làm nhiều ngày.
- Gửi lặp lại: quên ghi cột Trạng thái nên chạy lần hai gửi trùng.
- Sai thứ tự cột: script lấy nhầm cột nên số liệu lệch. Luôn gửi thử một người trước.
Phù hợp với: doanh nghiệp vừa và nhỏ dùng Gmail hoặc Google Workspace.
Cách 3: Gửi phiếu lương bằng Excel VBA (macro) qua Outlook
Cách này hoạt động thế nào?
Bạn tạo một sheet PhieuLuong làm mẫu, có ô chọn mã nhân viên và các ô lấy dữ liệu bằng VLOOKUP. Macro sẽ lần lượt đổi mã nhân viên, xuất phiếu thành file, rồi gọi Outlook gửi kèm cho đúng người.
Các bước thực hiện
- Tạo sheet mẫu PhieuLuong. Ô chọn mã NV dùng Data Validation dạng danh sách, các ô còn lại lấy dữ liệu từ sheet BangLuong bằng VLOOKUP.
- Lưu file dưới dạng Excel Macro-Enabled Workbook (.xlsm).
- Nhấn Alt + F11 mở cửa sổ VBA, chọn Insert > Module và dán macro.
- Chạy thử ở chế độ xem trước: dùng lệnh
.Displayđể email mở ra cho bạn kiểm tra mà chưa gửi. - Khi mọi thứ đúng, đổi thành
.Sendvà chạy cho toàn bộ danh sách.
Đoạn macro rút gọn để bạn hình dung cấu trúc (bản đầy đủ có ghi trạng thái và xử lý lỗi sẽ có ở bài chi tiết):
Sub GuiPhieuLuong()
Dim ol As Object, mail As Object
Dim ws As Worksheet, wsP As Worksheet
Dim i As Long, lastRow As Long, pdfPath As String
Set ws = Sheets("BangLuong")
Set wsP = Sheets("PhieuLuong")
Set ol = CreateObject("Outlook.Application")
lastRow = ws.Cells(ws.Rows.Count, 1).End(xlUp).Row
For i = 2 To lastRow
wsP.Range("C4").Value = ws.Cells(i, 1).Value 'Ma NV
pdfPath = ThisWorkbook.Path & "\" & ws.Cells(i, 1).Value & ".pdf"
wsP.ExportAsFixedFormat Type:=xlTypePDF, Filename:=pdfPath
Set mail = ol.CreateItem(0)
mail.To = ws.Cells(i, 3).Value
mail.Subject = wsP.Range("B2").Value
mail.Attachments.Add pdfPath
mail.Display 'doi thanh .Send sau khi da kiem tra
Next i
End Sub
Ưu điểm
- Đính kèm file riêng cho từng người (PDF hoặc Excel).
- Tùy biến cao, xử lý được mẫu phiếu lương phức tạp.
- Làm ngay trong Excel, quen thuộc với kế toán.
Nhược điểm
- Cần kiến thức VBA cơ bản để sửa khi mẫu thay đổi.
- Cần Outlook bản cài trên máy và phải cho phép chạy macro.
- Khó bảo trì nếu người viết macro nghỉ việc.
- PDF xuất từ Excel không có mật khẩu sẵn.
Lưu ý quan trọng
- Ký tự tiếng Việt trong code: trình soạn VBA xử lý Unicode kém, nên viết code và tên sheet không dấu, còn tiêu đề email đọc từ một ô trong Excel.
- Nếu gửi file Excel đính kèm, hãy sao chép giá trị sang file mới rồi mới gửi. Nếu gửi cả sheet còn công thức tham chiếu, file có thể chứa dữ liệu của cả bảng lương.
- Bật macro có chọn lọc: chỉ cho phép macro của file bạn tự tạo hoặc tin cậy.
Phù hợp với: kế toán thành thạo Excel, cần phiếu lương dạng file đính kèm.
So sánh nhanh 3 cách gửi phiếu lương
| Tiêu chí | Mail Merge | Apps Script | Excel VBA |
|---|---|---|---|
| Độ khó | Dễ nhất | Trung bình | Khó hơn |
| Công cụ cần có | Word, Excel, Outlook | Google Sheets, Gmail | Excel, Outlook |
| Nội dung trong thân email | Có | Có | Có |
| Đính kèm file riêng từng người | Hạn chế | Có (PDF) | Có (PDF, Excel) |
| Mật khẩu file đính kèm | Không có sẵn | Không có sẵn | Excel: có, PDF: không có sẵn |
| Theo dõi trạng thái gửi | Hạn chế | Ghi vào Sheet | Ghi vào Excel |
| Hạn mức gửi | Theo tài khoản Outlook | 100 / 1.500 người nhận mỗi ngày | Theo tài khoản Outlook |
| Chi phí | Miễn phí (đã có Office) | Miễn phí | Miễn phí (đã có Office) |
Mật khẩu file: cách nào làm được gì?
Rất nhiều kế toán muốn gửi phiếu lương dạng file có mật khẩu riêng cho từng người. Thực tế, các công cụ miễn phí có sẵn hỗ trợ khác nhau:
| Cách | Nội dung trong thân email | File Excel có mật khẩu | PDF có mật khẩu |
|---|---|---|---|
| Mail Merge | Có | Không áp dụng | Không có sẵn |
| Apps Script | Có | Không có sẵn | Không có sẵn (cần dịch vụ hoặc công cụ ngoài) |
| Excel VBA | Có | Có (đặt mật khẩu khi lưu file) | Không có sẵn (cần công cụ ngoài) |
Nếu bạn cần đính kèm PDF có mật khẩu, hãy cân nhắc công cụ bổ sung hoặc phần mềm chuyên dụng. Nếu dùng mật khẩu, đừng gửi mật khẩu cùng email chứa file. Hãy thông báo qua kênh khác hoặc dùng quy ước chỉ nhân viên biết.
Gửi số lượng lớn bị giới hạn hoặc vào spam: xử lý thế nào?
Cả ba cách trên đều gửi qua một hộp thư cụ thể. Khi số người nhận tăng, bạn có thể gặp những vấn đề sau:
- Chạm hạn mức số người nhận mỗi ngày hoặc giới hạn tốc độ gửi của tài khoản.
- Bị đánh dấu spam khi nhiều thư giống nhau được gửi dồn dập.
- Email sai địa chỉ bị trả về, làm giảm uy tín của hộp thư gửi.
- Có nguy cơ bị tạm khóa tài khoản gửi nếu bị hệ thống đánh giá là gửi bất thường.
- Khó gửi lại cho riêng những người chưa nhận được.
Việc bạn có thể tự làm để giảm rủi ro
- Chia danh sách thành nhiều đợt nhỏ và giãn thời gian giữa các lần gửi (trong Apps Script có thể dùng
Utilities.sleep). - Dùng email doanh nghiệp đã được bộ phận IT cấu hình xác thực tên miền (SPF, DKIM, DMARC).
- Làm sạch danh sách email trước khi gửi.
- Dùng tiêu đề rõ ràng, tránh đính kèm file quá nặng.
Khi nào nên tách bước gửi sang hạ tầng chuyên dụng?
Nếu công ty đông người hoặc bạn thường xuyên gặp các vấn đề trên, một lựa chọn là dùng nền tảng gửi email chuyên dụng như Zozo EMA cho bước gửi. Nền tảng này hỗ trợ quản lý danh sách, cá nhân hóa nội dung theo từng người nhận, xác thực danh sách email, xem trước và gửi thử, báo cáo kết quả và gửi lại cho người chưa nhận. Nội dung phiếu lương được đặt trong thân email cá nhân hóa. Nếu bạn cần đính kèm file riêng cho từng người, hãy xác nhận với nhà cung cấp trước khi triển khai.
Quan trọng: bạn vẫn là người chủ động về dữ liệu. Bạn quyết định đưa cột nào lên hệ thống, gửi cho ai và xóa khi nào. Trước khi đưa dữ liệu lương lên bất kỳ hệ thống bên thứ ba nào, hãy đối chiếu với quy chế bảo mật của công ty.
Checklist bảo mật khi gửi phiếu lương qua email
- Rà soát cột Email. Chỉ cần sai một địa chỉ là lộ lương của người khác.
- Chỉ đưa cột cần thiết vào file dùng để gửi, không để lộ cả bảng lương gốc.
- Đặt mật khẩu file khi gửi đính kèm, mỗi người một mật khẩu riêng, gửi mật khẩu qua kênh khác.
- Gửi thử cho chính mình và 1-2 người tin cậy trước khi gửi hàng loạt.
- Bảo vệ tài khoản gửi: dùng email công ty, bật xác thực hai lớp, hạn chế người truy cập và không chia sẻ công khai bằng đường liên kết.
- Dọn dẹp sau khi gửi: xóa hoặc lưu trữ file, danh sách theo quy định nội bộ.
Câu hỏi thường gặp về gửi phiếu lương hàng loạt
Cách nào gửi phiếu lương hàng loạt miễn phí, dễ làm nhất?
Mail Merge (trộn thư) là cách dễ nhất vì dùng ngay Word, Excel và Outlook cài trên máy, không cần viết code. Đổi lại, nội dung phiếu lương nằm trong thân email và bạn khó theo dõi ai đã nhận.
Mail Merge có gửi được PDF có mật khẩu cho từng người không?
Word không có sẵn tính năng xuất PDF và đặt mật khẩu riêng cho từng nhân viên khi trộn thư. Nếu cần file đính kèm có mật khẩu, bạn phải dùng cách khác như macro Excel hoặc công cụ bổ sung.
Apps Script gửi được bao nhiêu email mỗi ngày?
Theo tài liệu Google, hạn mức email của Apps Script là khoảng 100 người nhận mỗi ngày với tài khoản gmail.com và khoảng 1.500 người nhận mỗi ngày với Google Workspace. Google có thể thay đổi hạn mức mà không báo trước, nên hãy kiểm tra trang tài liệu mới nhất.
Excel VBA gửi phiếu lương có cần Outlook không?
Macro trong bài này gọi Outlook nên cần Outlook bản cài trên máy và đã đăng nhập tài khoản gửi. Bạn cũng phải cho phép chạy macro và lưu file dạng .xlsm.
Gửi 200 phiếu lương cùng lúc có bị vào spam không?
Có rủi ro. Hộp thư cá nhân hoặc hộp thư công ty thường có hạn mức và giới hạn tốc độ gửi, nhiều thư giống nhau gửi dồn dập hoặc địa chỉ sai làm tăng nguy cơ bị chặn. Bạn nên chia lô, giãn thời gian, làm sạch danh sách email, hoặc chuyển bước gửi sang hạ tầng chuyên dụng.
Làm sao biết ai chưa nhận được phiếu lương?
Với Apps Script hoặc VBA, bạn ghi trạng thái gửi vào một cột trong bảng tính. Với Mail Merge, bạn phải đối chiếu hộp thư Đã gửi và thư báo lỗi. Nền tảng gửi chuyên dụng thường có báo cáo email gửi thành công, lỗi và cho phép gửi lại người chưa nhận.
Khi nào nên dùng nền tảng gửi email chuyên dụng như Zozo EMA?
Khi số nhân viên lớn, khi bạn thường xuyên chạm hạn mức hoặc bị vào spam, hoặc khi cần báo cáo và gửi lại có chọn lọc. Bạn vẫn nên tự quyết định dữ liệu nào đưa lên hệ thống, và chỉ đưa các cột cần thiết.
Đưa bảng lương lên Google Sheets có an toàn không?
An toàn hơn khi bạn không chia sẻ công khai bằng đường liên kết, chỉ cấp quyền cho đúng người, bật xác thực hai lớp cho tài khoản Google và xóa hoặc lưu trữ file sau khi gửi xong.
Hướng dẫn chi tiết từng cách
- Hướng dẫn gửi phiếu lương bằng Mail Merge từ A đến Z
- Hướng dẫn gửi phiếu lương bằng Google Apps Script kèm code mẫu
- Hướng dẫn gửi phiếu lương bằng Excel VBA kèm macro mẫu
- Hướng dẫn gửi phiếu lương hàng loạt bằng Zozo EMA
Kết luận
Không có cách nào tốt nhất cho mọi doanh nghiệp. Mail Merge phù hợp khi bạn cần làm nhanh và đơn giản. Apps Script hợp với công ty dùng Google Workspace. Excel VBA hợp với kế toán quen Excel và cần file đính kèm. Khi số lượng nhân viên tăng và bạn cần vượt qua giới hạn của hộp thư, bạn có thể tách bước gửi sang hạ tầng chuyên dụng, nhưng luôn nhớ giữ quyền kiểm soát dữ liệu lương trong tay mình.
Nguồn tham khảo
Để lại ý kiến
Cho chúng tôi và cộng đồng biết quan điểm của bạn
