2016-02-13 2 views
4

Когда я называю Thisworkbook.Protect в VBA, защита рабочей книги фактически переключает из статуса защиты текущей книги, а не просто защищает книгу.Workbook.Protect ошибка с переключением защиты

Thisworkbook.Unprotect этого не делает.

Кто-нибудь знает, почему это так или как обойти его?

+3

Я никогда не замечал этого. Это правда в Excel 2016 на моем компьютере. Вы можете протестировать, используя 'If Thisworkbook.ProtectStructure' или' If Thisworkbook.ProtectWindows'. Кроме того, посмотрели ли вы на UserInterfaceOnly, что может устранить необходимость защиты и снятия защиты с кода? –

+1

UserInterfaceOnly не работает для меня, поскольку у меня есть код, который изменяет все, что по-прежнему требует снятия защиты. Я сделал небольшое исследование, и это, похоже, известная проблема. Проверка состояния защиты действительно работает. – KingKong

ответ

3

Не уверен, если это дизайн или ошибка ... Если вы предоставите параметры, она отлично работает:

ActiveWorkbook.Protect ,true,true 

или

ActiveWorkbook.Protect Structure:= true 

Какой вам нужен/хотите. Таким образом он не отключит защиту, только включен.

Чтобы отключить защиту от, вы можете использовать это (assumning вы обратились только на защиту структуры):

ActiveWorkbook.Protect Structure:= false 

Параметры являются:

.Protect(Password, Structure, Windows) 
Смежные вопросы