保护整个Word文档,但一个书签除外

时间:2015-10-05 18:18:30

标签: c# ms-word office-addins word-addins

我正在处理包含一些书签的Word加载项项目。要更新这些字段,代码会使用以下内容解锁文档:

_document.Unprotect(ref _password);

然后从服务器提取内容并锁定:

_document.Protect(WdProtectionType.wdAllowOnlyFormFields, ref _noReset, ref _password, ref _useIrm, ref _enforceStyleLock);

为了保持特定书签的解锁,我尝试使用代码:

_document.bookmark1.Range.Editors.Add (Microsoft.Office.Interop.Word.WdEditorType.wdEditorEveryone);

哪个不能保持bookmark1解锁。 还有什么我可以试着只让一个书签解锁而其他书面被锁定吗?

2 个答案:

答案 0 :(得分:0)

我在想要保持可编辑的书签之前和之后放置连续分节符。然后,在我的LockDocument()函数中,我把行:

_document.Sections[4].ProtectedForForms = false;

所以我的整个LockDocument函数看起来像:

 public void LockDocument()
    {
         _document.Sections[4].ProtectedForForms = false;

        // Locks the rest of the document
        _document.Protect(WdProtectionType.wdAllowOnlyFormFields, ref _noReset, ref _password, ref _useIrm, ref _enforceStyleLock);
    }

答案 1 :(得分:0)

补充上一个答案:

“编辑器”方法不适用于表单保护和表单字段。如果您要使用内容控件而不是表单字段,那么您可以使用编辑器和“只读”类型的保护。另请注意,只读保护可以实现比表单保护更多的Word功能。

请注意,每个表单字段也是书签:您为表单字段指定的名称是书签名称。目前尚不清楚为什么需要一个不受保护的书签,但如果这些信息有帮助......