Защитен лист на Excel VBA
Можем да защитим Excel листа, използвайки vba код, който не позволява на потребителя да прави промени в данните на работния лист, всичко, което могат да направят, е само да прочете отчета. За това имаме вграден vba метод, наречен „Защита“.
Както защитаваме работните си листове в Excel, по подобен начин можем да използваме VBA, за да защитим нашите работни листове, това се прави с помощта на .protect оператор, има два метода за защита на листа, единият е с парола, а другият е без парола, синтаксисът за защита работен лист е както следва Работни листове (). Защита на паролата.
Обикновено споделяме окончателния краен отчет с потребителя или читателя. Когато споделяме окончателния краен отчет с потребителя, желаем потребителят да не прави никакви промени или да манипулира крайния отчет. При такъв сценарий всичко е свързано с доверието, нали?

Синтаксис
Защитният лист включва различни параметри за подаване. Това е различно от премахването на защитата на листа. Нека разгледаме синтаксиса на метода Protect с парола.

Еха!!! Не се плашете, гледайки синтаксиса. Погледнете обяснението на всеки аргумент по-долу.
- Име на работния лист: Първо, трябва да споменем кой работен лист ще защитим.
- Парола: Трябва да въведем паролата, която използваме за защита. Ако пренебрегнем този параметър, Excel ще заключи листа без парола и докато премахва защитата на листа, той ще премахне защитата, без да иска парола.
- Забележка: Запомнете паролата, която давате, защото ако сте забравили, трябва да преминете през различни трудни начини.
- Рисуване на обект: Ако искате да защитите обекти в работния лист, тогава можете да предадете аргумента като TRUE или FALSE. Стойността по подразбиране е TRUE.
- Съдържание: За да защитите съдържанието на работния лист, задайте параметъра като TRUE или иначе FALSE. Стойността по подразбиране е FALSE. Това ще защити само заключените клетки. Стойността по подразбиране е TRUE.
- Сценарии: Ако в сценариите на excel има какъвто и да е анализ, можем да ги защитим и тях. За защита на TRUE или иначе FALSE. Стойността по подразбиране е TRUE.
- Само потребителски интерфейс: Ако искате да защитите потребителския интерфейс, различен от макроса, той трябва да е ИСТИНСКИ. Ако този аргумент е пропуснат, той ще защити както макросите, така и потребителския интерфейс. Ако зададете аргумента на TRUE, той ще защити само потребителския интерфейс. Стойността по подразбиране е FALSE.
- Разрешаване на форматиране на клетки: Ако искате да разрешите на потребителя да форматира клетката, тогава можете да зададете параметъра на TRUE или FALSE. Стойността по подразбиране е FALSE.
- Разрешаване на форматиране на колони: Ако искате да разрешите на потребителя да форматира която и да е колона в защитения лист, тогава можете да зададете параметъра на TRUE или FALSE. Стойността по подразбиране е FALSE.
- Разрешаване на форматиране на редове: Ако искате да разрешите на потребителя да форматира всеки ред в защитения лист, тогава можете да зададете параметъра на TRUE или FALSE. Стойността по подразбиране е FALSE.
- Разрешаване на вмъкване на колони във VBA: искате да разрешите на потребителя да вмъква нови колони, след което трябва да зададете това на TRUE. Стойността по подразбиране е FALSE.
- Разрешаване на вмъкване на редове: Ако искате да разрешите на потребителя да вмъква нови редове, тогава трябва да зададете това на TRUE. Стойността по подразбиране е FALSE.
- Разрешаване на вмъкване на хипервръзки: Ако искате да разрешите на потребителя да вмъква хипервръзки, тогава трябва да зададете това на TRUE. Стойността по подразбиране е FALSE.
- Разрешаване на изтриване на колони: Ако искате да разрешите на потребителя да изтрива колони във VBA, тогава трябва да зададете това на TRUE. Стойността по подразбиране е FALSE.
- Разрешаване на изтриване на редове: Ако искате да разрешите на потребителя да изтрива редове, тогава трябва да зададете това на TRUE. Стойността по подразбиране е FALSE.
- Разрешаване на сортирането: Ако искате да разрешите на потребителя да сортира данните, тогава трябва да зададете това на TRUE. Стойността по подразбиране е FALSE.
- Разрешаване на филтриране: Ако искате да разрешите на потребителя да филтрира данните, тогава трябва да зададете това на TRUE. Стойността по подразбиране е FALSE.
- Разрешаване на използването на обобщени таблици : Ако искате да разрешите на потребителя да използва обобщени таблици, тогава трябва да зададете това на TRUE. Стойността по подразбиране е FALSE.
Как да защитя лист чрез VBA код?
Стъпка 1: Изберете лист, който трябва да бъде защитен
За да защитим листа, първата стъпка е да решим кой лист трябва да защитим с помощта на парола и трябва да извикаме листа с името му, като използваме VBA Worksheet Object.
Например, приемете, че искате да защитите листа с име „Основен лист“, тогава трябва да споменете името на работния лист, както е показано по-долу.

Стъпка 2: Определете променливата на работния лист
След като споменете името на работния лист, поставете точка, но не виждаме списък с IntelliSense, с който да работим. Това затруднява работата. За да получите достъп до списъка IntelliSense, дефинира променливата като работен лист.
Код:
Sub Protect_Example1 () Dim Ws As Worksheet End Sub

Стъпка 3: Дайте справка за работния лист
Сега задайте препратката към работния лист към променливата като Работни листове („Основен лист“) .
Код:
Sub Protect_Example1 () Dim Ws As Worksheet Set Ws = Worksheets ("Master Sheet") End Sub

Сега променливата „Ws“ съдържа препратката към работния лист, наречен „Основен лист“. Използвайки тази променлива, можем да получим достъп до списъка IntelliSense.

Стъпка 4: Изберете Защитен метод
Изберете метода “Protect” от списъка IntelliSense.

Стъпка 5: Въведете парола
Посочете паролата в двойни кавички.
Код:
Sub Protect_Example1 () Dim Ws As Worksheet Set Ws = Worksheets ("Master Sheet") Ws.Protect Password: = "MyPassword" End Sub

Стъпка 6: Стартирайте кода
Стартирайте кода ръчно или с помощта на клавишната комбинация F5, след което той ще защити листа, наречен „Основен лист“.
Когато листът е защитен, ако искаме да направим някаква модификация, той показва съобщение за грешка, както е показано по-долу.

В случай, че искате да защитите повече от един лист, тогава трябва да използваме цикли. По-долу е примерен код за защита на листа.
Sub Protect_Example2 () Затъмняване на Ws като работен лист за всеки Ws в ActiveWorkbook.Worksheets Ws.Protect Password: = "My Passw0rd" Next Ws End Sub
Забележка: Използвайте други параметри, за да експериментирате.