Generating personalized documents in bulk
Same document, different name and numbers, forty times a month. Contracts, invoices, statements, offer letters, certificates, delivery notes. This page compares every method people actually use, so you can pick once instead of trying all six.
Short answer: if this is a one-off or a monthly chore, use a web tool — Docs from Excel takes the spreadsheet alone and gives back one named file per row. If it needs to run unattended inside a bigger system, write it in code or build a Power Automate flow. Everything else is a compromise between those two.
The job, stated plainly
Every method below solves the same three-part problem, and they differ only in how much of it they solve:
- Fill — put the right values in the right places in a template.
- Split — produce one file per record rather than one long document.
- Name — call each file something meaningful, taken from the data.
Word's mail merge solves part 1 and stops. Most of the frustration people report comes from discovering that parts 2 and 3 were never included.
The six methods
1. Word mail merge
Free, built in, everyone has it. Reads Excel directly, handles complex layouts, keeps your formatting. Solves fill only: the output is a single document with every record inside it, and there is no naming step at all. Good when you are printing or emailing straight away, and nobody needs individual files.
2. A VBA macro
Free and unlimited. Solves all three parts, and once it works it works forever. The costs are real though: you have to write and maintain it, plain find-and-replace misses headers, footers and text boxes, and macros are disabled by policy on a great many corporate machines. Choose it if you are comfortable with code and allowed to run it.
3. A Word add-in
A well-known free add-in from a Word MVP adds "Merge to Individual Documents" to the ribbon, with filenames from a merge field. Solves all three parts with no coding. The limit is where it runs: Windows desktop Word only. Not on a Mac, not on Word for the web, not on a laptop where you cannot install software.
4. Power Automate
The Microsoft 365 answer. Reads a table, populates a Word template, converts to PDF, files the result in SharePoint. Solves all three and runs unattended on a schedule, which none of the desktop options do. In exchange: the conversion connectors are premium on most plans, files must live in OneDrive or SharePoint, and the first flow takes an afternoon. Worth it when the process belongs to a team, not a person.
5. A script
Python with docxtpl, or Node with docxtemplater, both loop a spreadsheet and stamp out named files in a few dozen lines. Total control, no per-document cost, and it drops straight into an existing pipeline. Only sensible if someone will still be around to maintain it.
6. A web tool
Upload template plus list, download the files. Solves all three parts, needs nothing installed and nothing authorised, works the same on Windows, Mac and Chromebook. The trade-off is that it is not automated — somebody has to upload the files each time — and your documents pass through someone else's server, so it matters what that server does with them.
Side by side
| Method | One file per record | Names from data | Install needed | Runs unattended | Cost |
|---|---|---|---|---|---|
| Mail merge | No | No | Office | No | Free |
| VBA macro | Yes | Yes | Office + macros on | No | Free + your time |
| Word add-in | Yes | Yes | Windows Word | No | Free |
| Power Automate | Yes | Yes | None | Yes | Usually premium plan |
| Script | Yes | Yes | Python or Node | Yes | Free + maintenance |
| Web tool | Yes | Yes | None | No | Varies |
How to choose in one minute
- Needed today, will happen again next month. Web tool. Nothing to install, nothing to learn, no approval to request.
- Runs on a schedule with no human involved. Power Automate if you are on Microsoft 365, otherwise a script.
- You write code and the data is already in a system. Script.
- Windows desktop, allowed to install, want it free. The Word add-in.
- Printing or emailing immediately and individual files do not matter. Plain mail merge is fine. Do not over-engineer it.
Mistakes that cost people a reprint
- Number and date formatting. Merge fields carry the underlying value, not the cell's display format. Put the finished text in its own column and you will never think about it again.
- Duplicate names. Two rows producing the same filename means the second silently replaces the first, and the count looks right. Always name from a unique column.
- Illegal characters. A slash in
ACME 10/2026is not allowed in a filename on Windows and will fail mid-run. - Checking only the first file. Problems show up on the long names and the empty cells, never on row one. Check the longest and the emptiest.
The one-minute version
Your spreadsheet in, one file per row out, named from a column you choose. No template needed — though a Word, PowerPoint or Excel one with {{placeholders}} is used as-is if you have it.
Free to run and inspect every file. Downloading a batch is a one-time US$9.90 — no subscription, no account.
Step-by-step guides
- Creating multiple Word documents from Excel
- Separate PDF files from Excel rows
- Mail merge to separate Word documents
- Saving a mail merge as individual PDFs
- Naming files automatically from Excel
- Doing it without Word at all
- Populating a Word template from Excel
- Why numbers and dates come out wrong
- Mail merge not working: the eight real causes
- Certificates in bulk from a list of names