是否可以在word文档中的单个单词上设置密码?
我想要的是从我们的IT结构中编写系统文档。我也想把密码放在文档中。现在我希望您必须输入“MASTER”密码才能解锁文档中的密码。如果您没有输入密码,则文档中的密码应该是不可见的或类似的。
这可能吗?
答案 0 :(得分:1)
是的,这是可能的。为了完成这项工作,我们必须结合使用Word的固有文档保护,隐藏文本属性和一些VBA技巧。
首先,将文档中的所有密码格式化为隐藏文本。 (对于那些不熟悉的人,隐藏文本只有在显示/隐藏功能设置为true时才可见。)
然后添加代码以确保隐藏文本不会显示,并保护文档在打开文档时不被编辑:
Private Sub Document_Open()
AddProtection
End Sub
Sub AddProtection()
With ActiveDocument
.ActiveWindow.View.ShowAll = False
.ActiveWindow.View.ShowHiddenText = False
.Application.Options.PrintHiddenText = False
.Protect Type:=wdAllowOnlyReading, NoReset:=True, Password:="DesiredPassword"
End With
End Sub
由于Word用户可以在任何给定时间正常显示隐藏文本,因此我们还需要控制此功能。通过创建包含为截获的命令命名的子例程的模块,可以拦截大多数菜单和功能区命令。命名子ShowAll
将允许我们控制此功能,并仅在输入密码时显示隐藏文本:
Sub ShowAll()
If ActiveDocument.ProtectionType = wdAllowOnlyReading Then
'Do nothing
Else 'restore the Ribbon's toggle function
If ActiveDocument.ActiveWindow.View.ShowAll = True Then
ActiveDocument.ActiveWindow.View.ShowAll = False
Else
ActiveDocument.ActiveWindow.View.ShowAll = True
End If
End If
End Sub
最后,我们添加一些代码来提示用户输入密码,如果输入正确,则显示以前隐藏的文本:
Sub RemoveProtection()
Dim strPassword As String
strPassword = InputBox("Enter document password.")
ActiveDocument.Unprotect Password:=strPassword
If ActiveDocument.ProtectionType = wdNoProtection Then
ActiveDocument.ActiveWindow.View.ShowHiddenText = True
End If
End Sub
输入所有VBA代码后,右键单击IDE中的模块,选择项目属性,然后在“保护”选项卡上分配单独的密码。这将阻止高级用户访问嵌入式密码或更改代码。
剩下要做的就是在Word中创建一个QAT按钮(仅对此文档可见)并为其分配RemoveProtection
子。无论何时打开文档,密码都将被隐藏并保护其免受编辑,但可以通过单击QAT按钮并输入正确的密码来显示密码。
修改强>
当我第一次回答这个问题时,我没有认为Word有一个隐藏文本选项,可以单独显示Show All选项。此外,可以通过打印选项打印隐藏文本。我在上面AddProtection
添加了代码以关闭这些设置。
进一步测试还显示,Word 2007中的用户可以通过更改显示所有格式标记手动进入 Office Orb |选项|显示以显示隐藏文本手动隐藏文字选项。为避免这种情况,需要创建功能区自定义并使用文档加载。
最后,值得注意的是,虽然为了使它完成这样的任务而将Word弯曲到一个人的意愿是非常有趣的,但保护级别不如单独加密密码然后在显示之前不加密。内容甚至使用Word的文档密码功能来加密文档的全部内容。