Thanks to some of the threads here, I have managed to automate inputting form data from a record into bookmarks in a word document template (a letter). What I am trying to do is to lock the letter allowing modification only to the form fields in that template. If the original template is locked (allowing entry only in the fields), the data does not flow through. So I was trying to accomplish this through the "ProtectedForForms" property. However, it does not work. The letter gets locked before the information flows through. Here's the code I am trying to use (borrowed from one of the users here):
Private Sub cmd_letWarn_Click()
' Check for empty fields and unsaved record.
If IsNull(occupant) Then
MsgBox "Occupant Name cannot be empty"
Me.occupant.SetFocus
Exit Sub
End If
If IsNull(propad_no) Then
MsgBox "Building Number cannot be empty"
Me.propad_no.SetFocus
Exit Sub
End If
If IsNull(prop_ZIP) Then
MsgBox "ZIP Code cannot be empty"
Me.prop_ZIP.SetFocus
Exit Sub
End If
If Me.Dirty Then
If MsgBox("Record has not been saved. " & Chr(13) & _
"Do you want to save it?", vbInformation + vbOKCancel) = vbOK Then
DoCmd.RunCommand acCmdSaveRecord
Else
Exit Sub
End If
End If
' Create a Word document from template.
Dim WordApp As Word.Application
Dim strTemplateLocation As String
' Specify location of template
strTemplateLocation = "T:\Planning\Planning\EnforcementLog\suppfiles\tempwarn.dot"
On Error Resume Next
Set WordApp = GetObject(, "Word.Application")
If Err.Number <> 0 Then
Set WordApp = CreateObject("Word.Application")
End If
On Error GoTo ErrHandler
WordApp.Visible = True
WordApp.WindowState = wdWindowStateMaximize
WordApp.Documents.Add Template:=strTemplateLocation, NewTemplate:=False
' Replace each bookmark with field contents.
With WordApp.Selection
.Goto what:=wdGoToBookmark, Name:="ownername"
.TypeText [occupant]
.Goto what:=wdGoToBookmark, Name:="bnum"
.TypeText [propad_no]
.Goto what:=wdGoToBookmark, Name:="stname"
.TypeText [propad_street]
.Goto what:=wdGoToBookmark, Name:="zipcode"
.TypeText [prop_ZIP]
.Goto what:=wdGoToBookmark, Name:="pbnum"
.TypeText [propad_no]
.Goto what:=wdGoToBookmark, Name:="pstname"
.TypeText [propad_street]
.Goto what:=wdGoToBookmark, Name:="ppn"
.TypeText [parcel_no]
.Goto what:=wdGoToBookmark, Name:="ordinance"
.TypeText [code_sections]
.Goto what:=wdGoToBookmark, Name:="orddesc"
.TypeText [complaint_typ]
.Goto what:=wdGoToBookmark, Name:="ownername2"
.TypeText [occupant]
.Goto what:=wdGoToBookmark, Name:="officer"
.TypeText [officer_name]
End With
DoEvents
WordApp.Activate
WordApp.ActiveDocument.ProtectedForForms = True
Set WordApp = Nothing
Exit Sub
ErrHandler:
Set WordApp = Nothing
End Sub
Thanks in adavance for any help.
Private Sub cmd_letWarn_Click()
' Check for empty fields and unsaved record.
If IsNull(occupant) Then
MsgBox "Occupant Name cannot be empty"
Me.occupant.SetFocus
Exit Sub
End If
If IsNull(propad_no) Then
MsgBox "Building Number cannot be empty"
Me.propad_no.SetFocus
Exit Sub
End If
If IsNull(prop_ZIP) Then
MsgBox "ZIP Code cannot be empty"
Me.prop_ZIP.SetFocus
Exit Sub
End If
If Me.Dirty Then
If MsgBox("Record has not been saved. " & Chr(13) & _
"Do you want to save it?", vbInformation + vbOKCancel) = vbOK Then
DoCmd.RunCommand acCmdSaveRecord
Else
Exit Sub
End If
End If
' Create a Word document from template.
Dim WordApp As Word.Application
Dim strTemplateLocation As String
' Specify location of template
strTemplateLocation = "T:\Planning\Planning\EnforcementLog\suppfiles\tempwarn.dot"
On Error Resume Next
Set WordApp = GetObject(, "Word.Application")
If Err.Number <> 0 Then
Set WordApp = CreateObject("Word.Application")
End If
On Error GoTo ErrHandler
WordApp.Visible = True
WordApp.WindowState = wdWindowStateMaximize
WordApp.Documents.Add Template:=strTemplateLocation, NewTemplate:=False
' Replace each bookmark with field contents.
With WordApp.Selection
.Goto what:=wdGoToBookmark, Name:="ownername"
.TypeText [occupant]
.Goto what:=wdGoToBookmark, Name:="bnum"
.TypeText [propad_no]
.Goto what:=wdGoToBookmark, Name:="stname"
.TypeText [propad_street]
.Goto what:=wdGoToBookmark, Name:="zipcode"
.TypeText [prop_ZIP]
.Goto what:=wdGoToBookmark, Name:="pbnum"
.TypeText [propad_no]
.Goto what:=wdGoToBookmark, Name:="pstname"
.TypeText [propad_street]
.Goto what:=wdGoToBookmark, Name:="ppn"
.TypeText [parcel_no]
.Goto what:=wdGoToBookmark, Name:="ordinance"
.TypeText [code_sections]
.Goto what:=wdGoToBookmark, Name:="orddesc"
.TypeText [complaint_typ]
.Goto what:=wdGoToBookmark, Name:="ownername2"
.TypeText [occupant]
.Goto what:=wdGoToBookmark, Name:="officer"
.TypeText [officer_name]
End With
DoEvents
WordApp.Activate
WordApp.ActiveDocument.ProtectedForForms = True
Set WordApp = Nothing
Exit Sub
ErrHandler:
Set WordApp = Nothing
End Sub
Thanks in adavance for any help.