Tek-Tips is the largest IT community on the Internet today!

Members share and learn making Tek-Tips Forums the best source of peer-reviewed technical information on the Internet!

  • Congratulations Mike Lewis on being selected by the Tek-Tips community for having the most helpful posts in the forums last week. Way to Go!

Opening a Word Document and filling it with data from an Access Form

How to

Opening a Word Document and filling it with data from an Access Form

by  grtammi  Posted    (Edited  )
Hope this helps you all ... I had originally made this post in thread702-242141 ... made a couple of revisions over the months! :)
Code:
Public Function CreateWordLetter(strDocPath As String)

   'function returns nothing, but I created this as a 
   'function so all those macro users out there could
   'use it also. :P
   'if no path is passed to function, exit - no further
   'need to do anything
   
   If IsNull(strDocPath) Or strDocPath = "" Then
      Exit Function
   End If

   Dim dbs As Database
   Dim objWord As Object
   Dim PrintResponse
   Set dbs = CurrentDb
   
   'create reference to Word Object
   
   Set objWord = CreateObject("Word.Application")  
   
   'Word Object is created - now let's fill it with data.
   
   With objWord
       .Visible = True
       .Documents.Open(strDocPath)
       'move to each bookmark, and insert correct text.
       .ActiveDocument.Bookmarks("<bookmark name>".Select
       .Selection.Text=(Cstr(Forms!<form name>!<field 
        name>))
       .ActiveDocument.Bookmarks.Add Name:=<bookmark name>, 
       Range = Selection.Range

** continue the ActiveDocument and Selection statements for each bookmark that you have on the Word Document **
      
   End With

   'find out if the user would like to print the document
   'at this time.

   PrintResponse = MsgBox("Print this document?", vbyesno)
   If PrintResponse = vbYes Then
      objWord.ActiveDocument.PrintOut Background:=False
   End If

   'release all objects
         
   Set objWord = nothing
   Set dbs = nothing

End Function
Ok, now the function is written - however, this is only half the battle. Now we have to create/edit the document you are using so the above code actually works! :)

1) Open your document. If you do not have a current
document that you are not using, create a new one.

2) In the places where the values will change based on
information in the record, create a bookmark and name
it appropriately. i.e. If you have a field in Access
called FirstName, then make the bookmark name "First
Name", etc etc

3) After creating / editing your document, save it.
Remember the file name.

4) Back to Access! Create a button on a form somewhere,
and name it appropriately (ie cmdMerge, cmdMakeLetter,
etc)

5) In the On_Click event of your button, use an event
procedure and add the following line of code:

CreateWordLetter "<path to your document>"

6) Watch everything kick into action! :)

Hope this helps - leave me a note if you have any questions regarding this FAQ.

Greg

PS: Also, if you would like the Word document to stay open for editing, comment out the Set objWord = Nothing line. By releasing the objWord variable into digital oblivion, you also release the reference to the document you have open. :)
Register to rate this FAQ  : BAD 1 2 3 4 5 6 7 8 9 10 GOOD
Please Note: 1 is Bad, 10 is Good :-)

Part and Inventory Search

Back
Top