Article ID: 131583
Article Last Modified on 1/19/2007
124862 ACC: Sending the Current Record to Word with OLE Automation
First Last
Address
City, Region, PostalCode
Dear Greeting,
Northwind Traders would like to thank you for
your employment during the past year. Below
you will find your photo. If this is not your
most current picture, please let us know.
Photo
Sincerely,
Northwind Traders
Command Button:
Name: MergeButton
Caption: Send to Word
OnClick: [Event Procedure]
Private Sub MergeButton_Click()
On Error GoTo MergeButton_Err
Dim objWord As Word.Application
' Copy the Photo control on the Employees form.
DoCmd.GoToControl "Photo"
' Remove the following comment in Microsoft Access 97.
' DoCmd.RunCommand acCmdCopy
' Remove the following comment in Microsoft Access 7.0.
' DoCmd.DoMenuItem acFormBar, acEditMenu, acCopy, , acMenuVer70
' Start Microsoft Word 97.
Set objWord = CreateObject("Word.Application")
With objWord
' Make the application visible.
.Visible = True
' Open the document.
.Documents.Open ("c:\my documents\mymerge.doc")
' Move to each bookmark and insert text from the form.
.ActiveDocument.Bookmarks("First").Select
.Selection.Text = (CStr(Forms!Employees!FirstName))
.ActiveDocument.Bookmarks("Last").Select
.Selection.Text = (CStr(Forms!Employees!LastName))
.ActiveDocument.Bookmarks("Address").Select
.Selection.Text = (CStr(Forms!Employees!Address))
.ActiveDocument.Bookmarks("City").Select
.Selection.Text = (CStr(Forms!Employees!City))
.ActiveDocument.Bookmarks("Region").Select
.Selection.Text = (CStr(Forms!Employees!Region))
.ActiveDocument.Bookmarks("PostalCode").Select
.Selection.Text = (CStr(Forms!Employees!PostalCode))
.ActiveDocument.Bookmarks("Greeting").Select
.Selection.Text = (CStr(Forms!Employees!FirstName))
' Paste the photo.
.ActiveDocument.Bookmarks("Photo").Select
.Selection.Paste
End With
' Print the document in the foreground so Microsoft Word 97
' will not close until the document finishes printing.
objWord.ActiveDocument.PrintOut Background:=False
' Close the document without saving changes.
objWord.ActiveDocument.Close SaveChanges:=wdDoNotSaveChanges
' Quit Microsoft Word 97 and release the object variable.
objWord.Quit
Set objWord = Nothing
Exit Sub
MergeButton_Err:
' If a field on the form is empty
' remove the bookmark text and continue.
If Err.Number = 94 Then
objWord.Selection.Text = ""
Resume Next
' If the Photo field is empty.
ElseIf Err.Number = 2046 Then
MsgBox "Please add a photo to this record and try again."
Else
MsgBox Err.Number & vbCr & Err.Description
End If
Exit Sub
End Sub
.ActiveDocument.Bookmarks("Last").Select
.Selection.Text = (CStr(Forms!Employees!LastName))
'add this line to reapply the bookmark name to the selection
.ActiveDocument.Bookmarks.Add Name:="Last",Range:=Selection.Range
This macro could be used to simulate a mailmerge with Word that includes
the picture field from an Access record, by placing the above code in
a "For...Next", While...Wend, or "For...Each" Loop.
167223 OFF97: Microsoft Office 97 Automation Help File Available
Keywords: kbfaq kbhowto kbmacro kbprogramming KB131583