ACC: How to Create a Word 97 Merge Document Using Automation

Last reviewed: November 13, 1997
Article ID: Q170988
The information in this article applies to:
  • Microsoft Access versions 7.0, 97
  • Microsoft Word 97 for Windows

SUMMARY

Advanced: Requires expert coding, interoperability, and multiuser skills.

This article demonstrates how to use Automation to create a Microsoft Word 97 mail merge document, to insert merge fields, and then to execute the merge.

This article assumes that you are familiar with Visual Basic for Applications and with creating Microsoft Access applications using the programming tools provided with Microsoft Access. For more information about Visual Basic for Applications, please refer to your version of the "Building Applications with Microsoft Access" manual.

MORE INFORMATION

In Microsoft Access, you can use Automation to execute a mail merge in a Microsoft Word 97 document. The sample procedure in this article uses the OpenDataSource and Execute methods of the MailMerge object that is available in Microsoft Word 97.

The following example creates a procedure called CreateMergeDoc, which takes two arguments:

   Argument      Value
   --------      ------------------------------------------------------
   UseDDE        True if you want to use DDE
                 False if you want to use ODBC

   PrintDoc      True if you want to print the result of the merge
                 False if you only want to view the result of the merge

To create the sample procedure, follow these steps:

  1. Open the sample database Northwind.mdb.

  2. Create a module and type the following line in the Declarations section if it is not already there:

          Option Explicit
    

  3. On the Tools menu, click References.

  4. In the References box, make sure the Microsoft Word 8.0 Object Library check box is selected, and then click OK.

    NOTE: If the Microsoft Word 8.0 Object Library does not appear in the Available References box, browse your hard drive for the file MsWord8.olb. If you cannot locate this file, you must run the Microsoft Word 97 Setup program to install it before you proceed with this example.

  5. Type the following procedure:

          Sub CreateMergeDoc(UseDDE As Boolean, PrintDoc As Boolean)
             Dim WordApp As Word.Application
             Dim WordDoc As Word.Document
             Dim strLetter As String
             Dim strConnect As String
    
             ' Create an instance of Microsoft Word 97.
             Set WordApp = CreateObject("Word.Application")
    
             ' Create a new, empty document.
             Set WordDoc = WordApp.Documents.Add
             With WordDoc.MailMerge
                If UseDDE Then
                   strConnect = "TABLE Customers"
                Else
                   ' Note that on your computer the path
                   ' to Northwind.mdb may be different.
                   ' You can set DSN=MS Access 97
                   ' in Microsoft Access 7.0.
                   strConnect = "DSN=MS Access 97 " _
                   & "Database;DBQ=C:\Program Files\Microsoft Office\" _
                   & "Office\Samples\Northwind.mdb;" _
                   & "FIL=MS Access;"
                End If
                ' Note that on your computer the path
                ' to Northwind.mdb may be different.
                .OpenDataSource _
                    Name:="C:\Program Files\Microsoft Office\Office\" _
                    & "\Samples\Northwind.mdb", _
                    ReadOnly:=True, LinkToSource:=True, _
                    Connection:=strConnect, _
                    SQLStatement:="SELECT * FROM [Customers]"
    
                ' Define the Merge fields in the document.
                With .Fields
                   .Add Range:=WordApp.Selection.Range, Name:="CompanyName"
                   WordApp.Selection.TypeParagraph
                   .Add Range:=WordApp.Selection.Range, Name:="Address"
                   WordApp.Selection.TypeParagraph
                   .Add Range:=WordApp.Selection.Range, Name:="City"
                   WordApp.Selection.TypeText Text:=", "
                   .Add Range:=WordApp.Selection.Range, Name:="Region"
                   WordApp.Selection.TypeText Text:="  "
                   .Add Range:=WordApp.Selection.Range, Name:="PostalCode"
                   WordApp.Selection.TypeParagraph
                   .Add Range:=WordApp.Selection.Range, Name:="Country"
                End With
             End With
    
             ' Define the body of the letter in the merge document.
             strLetter = "Thank you for your business during the past year."
             With WordApp.Selection
                .TypeParagraph
                .TypeParagraph
                .TypeText Text:=strLetter
                .TypeParagraph
                .TypeParagraph
                .TypeText Text:="Sincerely,"
                .TypeParagraph
                .TypeParagraph
                .TypeText Text:="Northwind Traders"
             End With
             With WordDoc.MailMerge
                ' Only merge records 1-10 from the table.
                .DataSource.FirstRecord = 1
                .DataSource.LastRecord = 10
    
                ' Merge the data to a new document.
                .Destination = wdSendToNewDocument
    
                ' Execute the mail merge.
                .Execute
    
                ' If user specified to print the document, disable
                ' background printing, and then print the merged document.
                If PrintDoc Then
                   .Application.Options.PrintBackground = False
                   .Application.ActiveDocument.PrintOut
                End If
             End With
    
             ' Show the instance of Microsoft Word.
             WordApp.Visible = True
          End Sub
    
    

  6. To test this procedure, type the following line in the Debug window, and then press ENTER:

          CreateMergeDoc UseDDE:=False, PrintDoc:=False
    

    Note that Microsoft Word opens with a new mail merge document.

REFERENCES

For more information about using Automation to open an existing Microsoft Word 97 mail merge document, please see the following article in the Microsoft Knowledge Base:

   ARTICLE-ID: Q159328
   TITLE     : ACC: Using Automation to Run Word 97 Mail Merge from MS
               Access

For information about using Automation to run a Microsoft Word 7.0 mail merge from Microsoft Access 7.0, please see the following article in the Microsoft Knowledge Base:

   ARTICLE-ID: Q154571
   TITLE     : ACC95: Running Word Mail Merge from Access Using OLE
               Automation
Keywords          : IntpOlea kbcode kbinterop
Technology        : kbole
Version           : 7.0 97
Platform          : WINDOWS
Hardware          : x86
Issue type        : kbhowto


================================================================================


THE INFORMATION PROVIDED IN THE MICROSOFT KNOWLEDGE BASE IS PROVIDED "AS IS" WITHOUT WARRANTY OF ANY KIND. MICROSOFT DISCLAIMS ALL WARRANTIES, EITHER EXPRESS OR IMPLIED, INCLUDING THE WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. IN NO EVENT SHALL MICROSOFT CORPORATION OR ITS SUPPLIERS BE LIABLE FOR ANY DAMAGES WHATSOEVER INCLUDING DIRECT, INDIRECT, INCIDENTAL, CONSEQUENTIAL, LOSS OF BUSINESS PROFITS OR SPECIAL DAMAGES, EVEN IF MICROSOFT CORPORATION OR ITS SUPPLIERS HAVE BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. SOME STATES DO NOT ALLOW THE EXCLUSION OR LIMITATION OF LIABILITY FOR CONSEQUENTIAL OR INCIDENTAL DAMAGES SO THE FOREGOING LIMITATION MAY NOT APPLY.

Last reviewed: November 13, 1997
© 1998 Microsoft Corporation. All rights reserved. Terms of Use.