Защитить весь документ Word, кроме одной закладки

Я работаю над проектом надстройки 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);

Который не держит закладку1 разблокированной. Есть ли что-то еще, что я могу попробовать, чтобы разблокировать только одну закладку, в то время как другие заблокированы?


person user40987    schedule 05.10.2015    source источник


Ответы (2)


Я поставил непрерывные разрывы разделов до и после закладки, которую я хотел сохранить редактируемой. Затем в моей функции 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);
    }
person user40987    schedule 06.10.2015

Дополнение к предыдущему ответу:

Подход «Редакторы» не работает с защитой форм и полями формы. Если бы вы использовали элементы управления содержимым вместо полей формы, вы могли бы использовать редакторы и тип защиты «Только для чтения». Также обратите внимание, что защита только для чтения обеспечивает гораздо больше возможностей Word, чем защита форм.

Обратите внимание, что каждое поле формы также является закладкой: имя, которое вы даете полю формы, является именем закладки. Непонятно, зачем нужна незащищенная закладка, но если эта информация поможет...

person Cindy Meister    schedule 07.10.2015