在word中可以通过“审阅”选项卡下的“保护”组中的“限制编辑”命令限制对word文档内容的修改,如下图所示:
如果要将某个word内容区域添加为可以编辑的区域,可以用Range对象的Editors属性返回Editors对象,然后用Editors对象的Add方法添加一个可以编辑的用户。
Editors对象的Add方法语法如下:
expression.Add (EditorID)
其中EditorID参数为要添加的用户的邮箱或者以下常量:
wdEditorCurrent | -6 | 当前文档的当前用户 |
wdEditorEditors | -5 | Represents the Editors group for documents that use Information Rights Management. |
wdEditorEveryone | -1 | 所有可以打开这个文档的用户 |
wdEditorOwners | -4 | Represents the Owners group for documents that use Information Rights Management. |
同一个Range对象如果添加了同样EditorID的Editor对象,则该Range对象的Editors集合对象的Count值不会增加,除非添加了不同的用户。
利用这个方法,可以为相同的用户(具有相同的EditorID)添加不同的可以编辑的Range区域。
如果要选中某个用户类型的所有可以编辑的Range区域,可以使用Range对象的 GoToEditableRange 找到第一个可以编辑的Range区域,然后通过返回的Range区域的Editors属性返回其中的一个Editor对象,最后通过Editor对象的SelectAll方法选中该用户的所有可以编辑区域,也可以用DeleteAll方法删除该用户的所有可以编辑区域。
根据上述的知识,可以通过如下的代码为word文档中的不同Range对象添加不同的可以编辑的区域:
Sub QQ1722187970() Const wdEditorEveryone = -1 Const wdEditorCurrent = -6 Dim oDoc As Document Set oDoc = Word.ActiveDocument Dim oEditor As Editor Dim oRng As Range With oDoc '为wdEditorEveryone这个用户组添加可以编辑的区域 .Range(1, 10).Editors.Add (wdEditorEveryone) .Range(15, 25).Editors.Add (wdEditorEveryone) .Range(58, 75).Editors.Add (wdEditorEveryone) Set oEditor = .Content.GoToEditableRange(wdEditorEveryone).Editors(1) '选中所有该用户类型的可以编辑的区域 oEditor.SelectAll '删除所有该用户类型的可以编辑的区域 oEditor.DeleteAll .Range(2, 8).Editors.Add (wdEditorCurrent) .Range(21, 28).Editors.Add (wdEditorCurrent) .Range(12, 18).Editors.Add (wdEditorCurrent) Set oEditor = .Content.GoToEditableRange(wdEditorCurrent).Editors(1) oEditor.SelectAll oEditor.DeleteAll End With End Sub
发表评论