Hi Ross,
I've been working on this very problem. Here's the code:
Private Sub Print_Click()
Dim NoOfCopies As Integer, CollatePrint As Boolean
Dim OldPrinter as string
On Error GoTo Print_Click_Err
NoOfCopies = 1
CollatePrint = True
' Open Word application in Memory
If AppWord Is Nothing Then
Set AppWord = CreateObject("Word.Application"

End If
' Open the correct document and print it
Documents.Open FileName:= "c:\my documents\my.doc"
OldPrinter = ActivePrinter
' Replace with your filepath & name
ActivePrinter = "HP Deskjet 500"
ActiveDocument.PrintOut False, , , , , , , NoOfCopies, , , , CollatePrint
ActivePrinter = OldPrinter
' Close the document and quit word
ActiveDocument.Close savechanges:=wdDoNotSaveChanges
AppWord.Quit
Set AppWord = Nothing
Print_Click_end:
Exit Sub
Print_Click_Err:
MsgBox Err.Description, vbOKOnly
Resume Print_Click_end
End Sub
If you only want to print from the default windows printer you can remove the lines refering to ActivePrinter. If you want to print from a named printer (as shown here) must replace the "HP Deskjet 500" with the name of the printer you want to print to (as it's shown in windows). The code changes the printer to this for the print job then changes it back to the windows default afterwards.
You can of course prompt the user for the number of copies and whether they want to collate the printouts. If you want to check the other options on the printout command you can find it in access help.
For this code to work you will need the microsoft word 8.0 object libarary reference set in access.
I Hope this helps, if you have any questions regarding any of the code don't hesitate to ask
Richard