Making users fill in the form in Word

L

lorican

Hello, I've got a form that I send out to our partners, but the proble
is that more often than not, they return the form not fully completed
How can I make it that, if they don't fill in part of the form it wil
not let them save it? or an 'alert' message will pop up? Various othe
companies do similarl things in various online forms, where you can no
submit the form if you have not filled in all the parts. I know there i
also a way of doing it in Excel, but I don't know how. If someone coul
tell me how to do it in Word and/or Excel, I'd be very greatful.

Thank you
 
M

macropod

Hi lorican,

If you place the following vba code in the 'ThisDocument' module, it will prevent the document being closed if it contains any
formfields that have not been filled in.

Private Sub Document_Close()
Dim oFld As FormField
For Each oFld In ActiveDocument.FormFields
If Trim(oFld.Result) = "" Then
MsgBox "Please complete all the items"
ThisDocument.Reload
Exit Sub
End If
Next aField
End Sub

Note: If the user disables macros upon loading the document or their macro security setting is too high, the code won't work and
they'll be able to close the document without filling in all the formfields.
 
L

lorican

thanks for the reply. sadly i'm not very good with advanced word.

I've found 'ThisDocument' module in the 'MicroSoft Objects' folder and
I've copied your marco in to it and clicked on save. To test it, when I
try to close the word document down the macro screen opens up and a
"compile error" message appears. Is that supposed to happen?


'macropod[_2_ said:
;359490']Hi lorican,

If you place the following vba code in the 'ThisDocument' module, it
will prevent the document being closed if it contains any
formfields that have not been filled in.

Private Sub Document_Close()
Dim oFld As FormField
For Each oFld In ActiveDocument.FormFields
If Trim(oFld.Result) = "" Then
MsgBox "Please complete all the items"
ThisDocument.Reload
Exit Sub
End If
Next aField
End Sub

Note: If the user disables macros upon loading the document or their
macro security setting is too high, the code won't work and
they'll be able to close the document without filling in all the
formfields.
 
G

Graham Mayor

Macropod's macro does have the odd bug, including the use of oFld and aField
to reference the same thing (clearly a typo) but even with that fixed, the
reload function doesn't work as intended.

Take a look at http://www.gmayor.com/formfieldmacros.htm the validation
method shown will not allow you to leave a form field that has not been
filled.

Both methods do, however, require that the user allows any macros saved with
the document to be run, and you cannot rely on that.

--
<>>< ><<> ><<> <>>< ><<> <>>< <>><<>
Graham Mayor - Word MVP


<>>< ><<> ><<> <>>< ><<> <>>< <>><<>

thanks for the reply. sadly i'm not very good with advanced word.

I've found 'ThisDocument' module in the 'MicroSoft Objects' folder and
I've copied your marco in to it and clicked on save. To test it, when
I try to close the word document down the macro screen opens up and a
"compile error" message appears. Is that supposed to happen?


'macropod[_2_ said:
;359490']Hi lorican,

If you place the following vba code in the 'ThisDocument' module, it
will prevent the document being closed if it contains any
formfields that have not been filled in.

Private Sub Document_Close()
Dim oFld As FormField
For Each oFld In ActiveDocument.FormFields
If Trim(oFld.Result) = "" Then
MsgBox "Please complete all the items"
ThisDocument.Reload
Exit Sub
End If
Next aField
End Sub

Note: If the user disables macros upon loading the document or their
macro security setting is too high, the code won't work and
they'll be able to close the document without filling in all the
formfields.


--
Cheers
macropod
[MVP - Microsoft Word]

--
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Top