VBA Protect / Unprotect работни листове

Този урок ще ви научи всичко за защитата на работния лист на Excel във VBA - Как да защитите или премахнете защитата на работни листове в Excel.

Премахнете защитата на работния лист на Excel без парола

За да премахнете защитата на работен лист, който не е защитен с парола, използвайте този прост ред код:

1 Работни листове („Лист1“). Премахнете защитата

Премахнете защитата на работния лист на Excel с парола

За да премахнете защитата на работен лист, защитен с парола, трябва също да въведете паролата:

1 Работни листове („Sheet1“). Премахнете защитата на „Password“

Премахване на защитата на листа - Забравена парола

За да премахнете защитата на работен лист, без да знаете паролата, трябва да използвате добавката за възстановяване на парола.

Защитете работни листове

Защитата на работния лист ви позволява да заключите някои аспекти на листа от редактиране.

Това меню се намира в Начало> Формат> Защитен лист или като щракнете с десния бутон върху името на раздела Sheet:

Най-често това се използва за защита на „заключени“ клетки от редактиране, като позволява само на крайния потребител да редактира определени клетки.

Можете да заключите клетки, като ги изберете и отворите Раздел за защита от Меню за форматиране на клетки (CTRL + 1).

Можете също така да попречите на потребителя да променя структурата на работния лист (вмъкване, изтриване или преоразмеряване на редове и колони) или да взаимодейства с автофилтри и много други.

Защита на работен лист - без парола

Може да искате да защитите работен лист, без да въвеждате парола. Това ще предотврати случайни промени в работния лист, като същевременно ще даде на потребителя достъп да прави промени, ако желае.

1 Работни листове („Лист1“). Защита

Защита на работен лист - Защита с парола

1 Работни листове („Лист1“). Защитете „Парола“

Защитете настройките на работния лист

Горните примери ще защитят работните листове със стандартните настройки за защита. Вместо това може да искате да персонализирате защитеното:

12345 Работни листове ("Sheet1"). Защита на паролата: = strPassword, DrawingObjects: = True, Съдържание: = True, Сценарии: = True, _UserInterfaceOnly: = True, AllowFormattingCells: = False, AllowFormattingColumns: = False, _AllowFormattingRows: = False, AllowInsertingColumns: = False, AllowInsertingRows: = False, _AllowInsertingHyperlinks: = False, AllowDeletingColumns: = False, AllowDeletingRows: = False, _AllowSorting: = False, AllowFiltering: = False, AllowUsingPivotTables: = False

Вместо да използвате горния синтаксис, препоръчвам да запишете макрос с желаните от вас настройки (избран с менюто Защита на работния лист по -горе) и да копирате + поставите записания код във вашата процедура.

Protect Sheet - Разрешете на VBA да прави промени

По подразбиране, когато защитавате лист, защитата се прилага за VBA операции в допълнение към действията на потребителя. Ако VBA се опита да промени заключена клетка, ще видите грешка по време на изпълнение 1004. За да избегнете това, можете да премахнете защитата и да защитите отново вашите работни листове винаги, когато VBA трябва да взаимодейства с тях:

123456789 Sub Edit_Sheet1 ()„Премахване на защитата на лист 1Работни листове („Лист1“). Премахнете защитата„Направете нещо за лист1„Презащитете листа1Работни листове („Лист1“). ЗащитаEnd Sub

Лесно е обаче да забравите да премахнете защитата и/или да защитите отново работните си листове. Това може да увеличи вероятността от грешка в кодирането.

Вместо това можете да използвате настройката UserInterFaceOnly. Когато е ИСТИНА, работните листове ще бъдат защитени САМО от потребители, НЕ от VBA.Вашият VBA код ще бъде свободен да редактира работния лист, както ако е отключен.

Две важни точки за UserInterFaceOnly:

  • Тази настройка не е налична от менюто Защита на работния лист (показано по -горе). Това е настройка, която трябва да бъде дефинирана във VBA.
  • Настройката не се запазва, когато затворите работна книга. Тя трябва да се предефинира всеки път, когато се отваря работна книга.

Така че, за да зададете свойството UserInterFaceOnly, трябва да поставите следната процедура за събитие Workbook_Open в модула ThisWorkbook:

1234567 Private Sub Workbook_Open ()Затъмнете като работен листЗа всеки ws в ThisWorkbook.Worksheetsws.Protect UserInterfaceOnly: = ВярноСледващата wsEnd Sub

Workbook_Open е специална процедура за събитие, която ще се изпълнява всеки път, когато работната книга е отворена. Той трябва да бъде поставен в модула ThisWorkbook. Като алтернатива можете да използвате процедурата за събитие Auto_Open (не е описана тук).

Премахнете защитата от всички макроси на листове

Този макрос ще премахне защитата на всички листове в работна книга:

123456789 „Премахнете защитата на всички работни листовеSub UnProtectAllSheets ()Затъмнете като работен листЗа всеки ws в работни листовеws. Премахнете защитата на „паролата“Следващата wsEnd Sub

Защитете макроса на всички листове

Този макрос ще защити всички листове в работна книга:

123456789 „Защитете всички работни листовеSub ProtectAllSheets ()Затъмнете като работен листЗа всеки ws в работни листовеws.Защитете "паролата"Следващата wsEnd Sub
wave wave wave wave wave