VBA — отключить ограничение изменений стиля в Microsoft Word 2016

Я хочу отключить это ограничение изменений стиля в защищенных документах Microsoft Word с кодом VBA.

https://helpdeskgeek.com/office-tips/restrict-editing-on-word-documents/

Этот код не работает для меня:

Sub DisableCheckBox()
    ActiveDocument.Unprotect
    ActiveDocument.Protect Type:=wdAllowOnlyFormFields, noreset:=True, enforcestylelock:=False
End Sub

Есть идеи?

Большое спасибо.

Редактировать:

OK. Я пытаюсь объяснить свою проблему.

У меня много документов. У них есть текстовые и формулярные поля для заполнения переменным коротким текстом. Документы защищены для заполнения только формулярных полей и дополнительно — и в этом проблема — активируется «ограничить форматирование выбором стилей».

Полный текст с формульными полями форматируется в Arial 10 pt. Некоторые формульные поля имеют размер Arial 12 pt.

Когда пользователь заполняет текст в защищенном документе, текст имеет размер Verdana 12 pt, потому что это стиль по умолчанию. Именно поэтому я хочу деактивировать параметр «ограничить форматирование набором стилей».

Следующий шаг, я пробую свой код vba в новом текстовом документе:

https://docs.microsoft.com/en-us/office/vba/api/word.document.protect

ActiveDocument.Protect Type:=wdAllowOnlyFormFields, noreset:=True, forcestylelock:=False Результат: «ограничить форматирование выбранными стилями» не активировано

Затем я пытаюсь в другом новом документе:

ActiveDocument.Protect Type:=wdAllowOnlyFormFields, noreset:=True, forcestylelock:=True Результат: активировано «ограничить форматирование выбранными стилями».

Код работает для новых документов (галочка «ограничить форматирование выбором стилей» включена или выключена).

Теперь я пробую код для своих существующих защищенных документов с активированной опцией «ограничить форматирование набором стилей».

ActiveDocument.Unprotect

ActiveDocument.Protect Type:=wdAllowOnlyFormFields, noreset:=True, forcestylelock:=False

Результат: «ограничить форматирование выбранными стилями» НЕ деактивировано.

Я не знаю, почему?

Мне нужно только отключить опцию флажка «ограничить форматирование выбором стилей». с VBA (флажок виден на картинке).

Спасибо.

введите здесь описание изображения


person Jörg Burzeja    schedule 26.03.2021    source источник
comment
Код не работает для меня, ничего не говорит нам о вашей проблеме. Пожалуйста, опишите симптомы. Поскольку вы защищаете формы, применение стиля невозможно в защищенных областях. Вы по-прежнему сможете применять стили в незащищенных разделах.   -  person John Korchok    schedule 26.03.2021


Ответы (1)


Кажется, есть ошибка со снятием ограничений стиля. Вы можете обойти это с помощью кода, например:

Sub DisableCheckBox()
Dim Stl As Style
With ActiveDocument
  On Error Resume Next
  .Unprotect
  On Error GoTo 0
  For Each Stl In .Styles
    Stl.Locked = False
  Next
  .Protect NoReset:=True, Type:=wdAllowOnlyFormFields
End With
End Sub

Обратите внимание, что если вы не захватите и не сохраните имена ранее разрешенных или запрещенных стилей, процесс не может быть отменен в коде позже.

person macropod    schedule 26.03.2021
comment
Спасибо, макропод. Этот обходной путь работает для меня. - person Jörg Burzeja; 27.03.2021