Hi
I'm a complete Access programming newbie. I have used Databases before but this is the first time of trying to do some really cool stuff. Essentially i'd like to merge Access field names into a Word document with bookmarks. I'm using Access and Word 2003. Eventually i'd like to attach this to a form button to automate the creation of new letters. Now i've tried some stuff with not much success so i tried using an example from the Micosoft support pages. It involved starting a new document, adding bookmarks to it then adding a command button to a form in the existing sample 'Northwind' database and using the following code as an event procedure (on click):
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"
DoCmd.RunCommand acCmdCopy
'Start Microsoft Word 97.
Set objWord = CreateObject("Word.Application")
With objWord
'Make the application visible.
.Visible = True
'Open the document.
.Documents.Open ("C:\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 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 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
Now, i must be doing really daft if i can't even get this to work!! On clicking the command button i get an error box saying 'compile error: User defined type not defined'. When i click OK, Private Sub MergeButton_Click() is highlighted in yellow and objWord As Word.Application just highlighted in blue. I've read similar posts which suggest to make sure i reference the object library, which i think i've done (Tools>References>Microsoft Word 11.0 Object Library) and is selected. Help!
I'm a complete Access programming newbie. I have used Databases before but this is the first time of trying to do some really cool stuff. Essentially i'd like to merge Access field names into a Word document with bookmarks. I'm using Access and Word 2003. Eventually i'd like to attach this to a form button to automate the creation of new letters. Now i've tried some stuff with not much success so i tried using an example from the Micosoft support pages. It involved starting a new document, adding bookmarks to it then adding a command button to a form in the existing sample 'Northwind' database and using the following code as an event procedure (on click):
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"
DoCmd.RunCommand acCmdCopy
'Start Microsoft Word 97.
Set objWord = CreateObject("Word.Application")
With objWord
'Make the application visible.
.Visible = True
'Open the document.
.Documents.Open ("C:\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 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 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
Now, i must be doing really daft if i can't even get this to work!! On clicking the command button i get an error box saying 'compile error: User defined type not defined'. When i click OK, Private Sub MergeButton_Click() is highlighted in yellow and objWord As Word.Application just highlighted in blue. I've read similar posts which suggest to make sure i reference the object library, which i think i've done (Tools>References>Microsoft Word 11.0 Object Library) and is selected. Help!