Dick, I looked for you. if I had found one, I would have posted it. I NEVER use mail merge so all I know is every time I tried to use it, I ran into something I couldn't solve. That is why I use OLE automation. Did you try suggestion #5? That is how I would handle it. Each time though the loop prints ONE document for ONE customer or whatever the uniqueID is.
Here is a very simplistic sample of using OLE automation. It prints one document at a time and hardcodes the bookmark names. To make it useful for more than ONE document type or ONE selected ID at a time, you need to modify it.
This database presents an example of using VBA to fill bookmarked fields in a Word document. The Database is A2003 format. However, the only version of Word installed on my PC is W2007 so before using the example, you may need to open any code module and change the Word reference to whatever...
www.access-programmers.co.uk
To print a document for each person, you need a loop. Create a query that selects the IDs of the customers (or whatever). for each iteration in the loop, run the print procedure.
The more complicated concept is how to abstract the bookmark filling. To do that, you need to create a few tables.
1. Document list. Name of the word dot file (safer to use templates) and the name of the query used to fill it.
2. List of all queries used to fill documents
3. List of all fields in each query
4. List of bookmarks in each document with a field that maps to a row in #3
This allows the users, themselves to create new documents and new mapping lists. You have to control #2 and #3 yourself. I have an app that handles all parts of this but it is a very special purpose and uses an ultra normalized table for the variable fields part of it. Essentially, each field becomes a row so the data storage is different from most normal schemas.
I'm working on a more sophisticated sample but it is not yet ready for prime time.