【发布时间】:2010-09-29 15:57:49
【问题描述】:
有没有办法使用 VBA 将 Microsoft Word 2003 文档中的段落设为只读?
【问题讨论】:
有没有办法使用 VBA 将 Microsoft Word 2003 文档中的段落设为只读?
【问题讨论】:
我认为您只能通过选择将不受保护的段落来做到这一点。
下面是一个示例宏,它选择一段文本,启用它进行编辑,然后锁定文档的其余部分。您可以使用 IRM 或密码保护,下面的宏使用后者。您应该用更优雅的方式替换下面的选择方法
Selection.MoveLeft Unit:=wdCharacter, Count:=11, Extend:=wdExtend
Selection.Editors.Add wdEditorEveryone
ActiveDocument.protect Password:="password", NoReset:=False, Type:= _
wdAllowOnlyReading, UseIRM:=False, EnforceStyleLock:=False
【讨论】:
您可以通过将要保护的文本放入文本表单并对其进行保护来做到这一点。显然有点恶心。
【讨论】:
上面的答案将在可编辑区域留下黄色突出显示。
另一种方法是添加此 AutoOpen 代码 http://answers.microsoft.com/en-us/office/forum/office_2010-word/remove-highlighting-in-editable-areas-of-protected/bfe22585-c5d3-4c19-997f-092fc4aaaa7a
Sub AutoOpen()
ActiveWindow.View.ShadeEditableRanges = False
End Sub
在 Word 2007(已测试)中,更直接的方法是创建富文本内容控件并设置属性。这将很容易地使段落成为只读而不会突出显示。
Sub LockContent()
Dim objCC As ContentControl
Set objCC = ActiveDocument.ContentControls.Add(Type:=wdContentControlRichText)
With objCC
.Range.Text = "123123" 'Your text
.LockContentControl = True
.LockContents = True
End With
End Sub
更多 ContentControl.LockContentControl 属性 on https://msdn.microsoft.com/en-us/library/office/ff835775.aspx
希望这可以帮助任何有同样头痛的人! :D
【讨论】: