Using Access Visual Basic to perform Microsoft Word mail merge give you the ultimate control and alleviates the need to jump to
Microsoft Word to perform the mail merge. To accomplish this task you'll need to create a Word template document with bookmarks inserted in the database field
locations. These bookmarks will represent the variable part of the document.
We also have 100's of programming examples from simple to complex. You can jump to our Access tutorials here.
Next create an Access form with a button called Envelope. And, create an on click event as shown below.
You'll need to customize the PathDocu line to match you particular setup.
Private Sub Enveloppe_Click()
Dim MyWord As Word.Application
Dim PathDocu As String
If Me.NomPers <> "" And Me.Prnom <> "" Then
Set MyWord = New Word.Application
PathDocu = "C:\Documents and Settings\BENOIT\Mes documents\Word\IFFC\BaseDeDonne\Documents\"
.Documents.Open (PathDocu & "Env22x10.doc")
'.ActiveDocument.Bookmarks("date").Range.Text = & _
Format(Date, "dd mmmm yyyy")
.ActiveDocument.Bookmarks("nom").Range.Text = Me.NomPers
.ActiveDocument.Bookmarks("prnom").Range.Text = Me.Pr�nom
If Me.Adresse <> "" Then
If Me.Adresse2 <> "" Then
MyWord.ActiveDocument.Bookmarks("adresse2").Range.Text & _
If Me.CodePostal <> "" Then
If Me.Ville <> "" Then MyWord.ActiveDocument.Bookmarks("ville").Range.Text =Me.Ville
If Me.Pays <> "" Then MyWord.ActiveDocument.Bookmarks("pays").Range.Text = Me.Pays
' si vous dsirez utiliser plusieurs fois les mmes donnes, vous devez
' crer des signets diff�rents
.Visible = True
Set MyWord = Nothing
On Error GoTo Err_Enveloppe_Click
Contributed by Benoit Mann
Access Mail Merge
Using VBA Only to Create a Mail Merge Report
Access mail merge to a database or spreadsheet is a very common in the RFPs we receive.
For one or two page letters we recommend using Microsoft Access Visual Basic totally -
bypassing the activation of Microsoft Word and performing the merge operation directly in Access.
The end result of using Access directly to mail merge is that
you can provide a much simpler user interface and don't have the complications
of linking to the Access database from Word and don't have problems having to
filter the records or trying to figure out table names, query names and field
names to place into the mail merge Word document. Steps are fairly simple:
1) Create a Microsoft Word document (two pages max) and format
it exactly as you want the resulting letter or document to appear.
2) In Word pick the Edit menu and then choose 'Select All',
then Edit again and select Copy. This will place of copy of the document
into your clipboard
3) Open up Microsoft Access and create a new blank report.
4) With the Edit menu choose Paste. This will place a
copy of the Word document into the Access report. The document will
retain the formatting and other characteristics since it is still a Word
Document. In the Access report the document will be an OLE field and
will likely be called OLE1
5) You can then assign the record source for the report using
either a table or query.
6) After the record source is defined you then can select the
database fields and simply drop them on top of the text in the Word Document.
Setting the Background field property to Normal will completely hide the Word
document text underneath the database field.
7) After aligning and sizing the database fields appropriately
you are ready to run the report.
Usually you want to filter to select some subset of your
database table. We use a little parameter form and filter a query or the
Use the Site Search menu choice at the top of the page
to locate examples of
Using Form Fields to Filter Reports.
To see an advanced technique try search for
Using Global Variable as Parameters.