ВБА УнПротецт Схеет | Користите ВБА код за уклањање заштите Екцел листа

Екцел ВБА Унпротецт Схеет

Постоје ситуације у којима штитимо своје радне листове како бисмо спречили корисника да манипулише радним листовима. Док штитимо радни лист, обично држимо исту лозинку. У овом чланку ћемо вам показати начин уклањања заштите листа помоћу ВБА кодирања.

Примери

Можете да преузмете овај ВБА образац за уклањање заштите из Екцел-а овде - ВБА образац за уклањање заштите из Екцел-а

Пример # 1

Отклањање заштите листа је 99% једноставније од њихове заштите, само нам треба лозинка за уклањање заштите радног листа.

Прво што треба да урадимо је да поменемо назив радног листа који ћемо уклонити из заштите. На пример, ако желите да уклоните заштиту листа названог „Подаци о продаји“, онда би ваш ВБА код требао бити овакав.

Радни листови („Подаци о продаји“)

Затим приступите методи Унпротецт.

Као што видимо на горњој слици, не видимо ниједну врсту ИнтеллиСенсе листе која би нам помогла. Ово отежава посао, посебно за нове ученике.

Да бих то превазишао, обично се ослањам на декларацију ВБА променљиве као „радног листа“.

Шифра:

 Суб Унпретецт_Екампле1 () Дим Вс Ас Ворксхеет Енд Суб 

Сада поставите декларисану променљиву на одговарајући лист.

Шифра:

 Суб Унпретецт_Екампле1 () Дим Вс Ас Ворксхеет Сет Вс = Ворксхеетс ("Салес Дата") Енд Суб 

Сада користите променљиву за приступ свим својствима и методама декларисане променљиве.

Као што видите на горњој слици, можемо приступити свим својствима и методама. Изаберите методу „Опозовите заштиту“ са листе ИнтеллиСенсе.

Тражи лозинку за уклањање заштите листа. Лозинку сам поставио као „Екцел @ 1234“, тако да ћу је доставити исту.

Ово ће уклонити заштиту радног листа названог „Подаци о продаји“.

Шифра:

 Суб Унпретецт_Екампле1 () Дим Вс Ас Ворксхеет Сет Вс = Ворксхеетс ("Салес Дата") Вс.Унпротецт Пассворд: = "Екцел @ 1234" Енд Суб 

Ако нема лозинке, онда треба само да користимо методу „Унпротецт“ и занемаримо параметар „Пассворд“.

Шифра:

 Суб Унпретецт_Екампле1 () Дим Вс Ас Ворксхеет Сет Вс = Ворксхеетс ("Салес Дата") 'Промените назив радног листа према вашем захтеву Вс.Унпротецт' Ако нема лозинке, само проследите методу "УнПротецт" Енд Суб 

Ако постоји нека лозинка, тада је морамо унети у двоструке наводнике. Лозинка разликује велика и мала слова, зато их пажљиво запамтите.

Пример # 2 - Само једним кликом уклоните заштиту из свих Екцел листова

Видели смо како да уклонимо заштиту одређеног радног листа. Замислите да имате много радних листова и да су сви радни листови заштићени истом лозинком, тада не можемо даље писати кодове за сваки радни лист посебно.

У тим случајевима морамо да користимо петље да бисмо прошли кроз колекцију предмета радног листа и са лакоћом их уклонили.

Испод кода ће провући све радне листове и уклонити заштиту листа.

Шифра:

 Суб Унпретецт_Екампле2 () Затамни В као радни лист за сваки В у АцтивеВоркбоок.Ворксхеетс Вс.Унпротецт Пассворд: = "Екцел @ 1234" 'Промените лозинку као што сте поменули док их штитите. Следећи Вс Крај Суб 

Пример # 3 - Посебне ситуације

Ситуација 1: Да ли сте икада замислили када је наведена лозинка погрешна. Када је наведена лозинка погрешна, добићемо 1004: Грешка времена извођења.

За руковање овим грешкама можемо користити опцију „Он Еррор ГоТо Лабел“. Испод је пример истог.

Шифра:

 Суб Унпретецт_Екампле3 () Затамни В као радни лист за сваки Вс у АцтивеВоркбоок.Радни листови о грешци ГоТо Еррормессаге Вс.Унпротецт Пассворд: = "Екцел @ 1234" 'Промените лозинку као што сте поменули штитећи их. Порука о грешци: МсгБок „Погрешна лозинка“ Следећа завршава под 

Горњи код ће приказати леп оквир са поруком „Погрешна лозинка“.

Ситуација 2: Када је лист заштићен без лозинке и ако наведете насумичну лозинку, он ће и даље уклонити заштиту радног листа без показивања било каквих грешака.

Ситуација 3: Када је лист заштићен лозинком, али ако не наведете лозинку, тада ће се појавити ВБА као оквир за унос лозинке за унос лозинке.

У горње поље за унос морамо да унесемо лозинку да бисмо уклонили заштиту радног листа. Ако кликнете на дугме Откажи, он ће изаћи из ВБА потпроцедуре не приказујући ништа, осим ако нема корисничког оквира за поруке.