Article ID: 191028
Article Last Modified on 1/23/2007
290140 How to run the sample code for the Office XP programs from Knowledge Base articles
212536 How to run sample code from Knowledge Base articles in Office 2000
Sub ProtectForm()
' ******************************************
' ProtectForm Macro.
' Toggles protection for the active document
' when the Protect Form button on the forms
' toolbar is clicked.
' ******************************************
If ActiveDocument.ProtectionType = wdNoProtection Then
ActiveDocument.Protect Type:=wdAllowOnlyFormFields, _
NoReset:=True
Else
ActiveDocument.Unprotect Password:=""
End If
End Sub
The following sample Visual Basic macro protects the active document without displaying the Protect dialog box. When you run this macro, it reprotects the active document while maintaining previous form field values.
Sub ToolsProtectUnprotectDocument()
' ******************************************
' ToolsProtectUnprotectDocument Macro
' Sets protection for the active document
' when Protect Document or Unprotect Document
' is clicked on Tools menu
' ******************************************
If ActiveDocument.ProtectionType = wdNoProtection Then
ActiveDocument.Protect Type:=wdAllowOnlyFormFields, _
NoReset:=True
Else
ActiveDocument.Unprotect Password:=""
End If
End Sub
The following sample Visual Basic macro allows you to specify which sections to protect while maintaining previous form field values. You can assign this macro to a toolbar button or menu.
Sub ProtectNoReset()
Dim pDoc As Dialog
Dim x As Integer
On Error GoTo ProtectNoResetErr
' If the document is protected,
If ActiveDocument.ProtectionType <> wdNoProtection Then
' Unprotect the document.
ActiveDocument.Unprotect
End If
' Display the Protect Dialog box.
Set pDoc = Dialogs(wdDialogToolsProtectDocument)
x = pDoc.Display
' If Cancel was chosen, exit this procedure.
If x = 0 Then Exit Sub
' Protect the document.
ActiveDocument.Protect Password:=pDoc.DocumentPassword, _
NoReset:=True, Type:=2
ProtectNoResetErr: 'NOTE: This line MUST be left aligned.
If Err <> 0 Then MsgBox Err.Description
End Sub
If ActiveDocument.ProtectionType = wdNoProtection Then
ActiveDocument.Protect Type:=wdAllowOnlyFormFields, _
NoReset:=True
End If
Sub FormsSpellCheck()
' If document is protected, Unprotect it.
If ActiveDocument.ProtectionType <> wdNoProtection Then
ActiveDocument.Unprotect Password:=""
End If
' Set the language for the document.
Selection.WholeStory
Selection.LanguageID = wdEnglishUS
Selection.NoProofing = False
' Perform Spelling/Grammar check.
If Options.CheckGrammarWithSpelling = True Then
ActiveDocument.CheckGrammar
Else
ActiveDocument.CheckSpelling
End If
' ReProtect the document.
If ActiveDocument.ProtectionType = wdNoProtection Then
ActiveDocument.Protect Type:=wdAllowOnlyFormFields, _
NoReset:=True
End If
End Sub
ImportantThere are some differences in Visual Basic for Applications between Microsoft Word 97 and later versions because of the Enabled Language Settings feature in versions of Microsoft Office that are later than Microsoft Office 97. One of the differences is noted in the previous macro. To correctly check the spelling of a document after you set the LanguageID, you must set the NoProofing property in Word 97 and later versions. However, if you try to run this macro in Microsoft Word 97 for Windows, you will receive the following error message:
For additional information about how to do this in Microsoft Word 97 for Windows, click the following article number to view the article in the Microsoft Knowledge Base:
181108 WD97: Form fields lose text when protected for forms
212623 WD2000: Macro programming resources
305326 List of programming resources for Visual Basic for Applications
226118 List of resources that are available to help you learn Visual Basic for Applications programming
Additional query words: kbmacro vba checkspelling word form field protect spell check spellcheck WD2000
Keywords: kbhowto kbnofix kbprogramming KB191028