Excel VBA Unprotect Sheet
Existují situace, kdy chráníme naše listy, abychom zabránili tomu, aby uživatel manipuloval s listy. Při ochraně listu obvykle udržujeme stejné heslo. V tomto článku vám ukážeme způsob, jak zrušit ochranu listu pomocí kódování VBA.

Příklady
Příklad č. 1
Zrušení ochrany listu je o 99% jednodušší než jeho ochrana. K odemčení listu prostě potřebujeme heslo.
Úplně první věcí, kterou musíme udělat, je zmínit název listu, který chceme odemknout. Například pokud chcete zrušit ochranu listu s názvem „Data prodeje“, měl by váš kód VBA vypadat takto.
Pracovní listy („údaje o prodeji“)
Poté otevřete metodu Unprotect.

Jak vidíme na obrázku výše, nevidíme žádný druh seznamu IntelliSense, který by nám pomohl. Díky tomu je práce ještě obtížnější, zejména pro nové studenty.
Abych to překonal, obvykle se spoléhám na deklaraci proměnné VBA jako „listu“.
Kód:
Sub Unpretect_Example1 () Dim Ws jako list End End Sub

Nyní nastavte deklarovanou proměnnou na příslušný list.
Kód:
Sub Unpretect_Example1 () Dim Ws as Worksheet Set Ws = Worksheets ("Sales Data") End Sub

Nyní použijte proměnnou pro přístup ke všem vlastnostem a metodám deklarované proměnné.

Jak vidíte na obrázku výše, můžeme přistupovat ke všem vlastnostem a metodám. Ze seznamu IntelliSense vyberte metodu „Unprotect“.

K odblokování listu požaduje heslo. Nastavil jsem heslo jako „Excel @ 1234“, takže heslo zadám stejně.

Tím zrušíte ochranu listu s názvem „Údaje o prodeji“.
Kód:
Sub Unpretect_Example1 () Dim Ws As Worksheet Set Ws = Worksheets ("Sales Data") Ws.Unprotect Password: = "Excel @ 1234" End Sub
Pokud heslo neexistuje, stačí použít metodu „Odemknout“ a ignorovat parametr „Heslo“.
Kód:
Sub Unpretect_Example1 () Dim Ws As Worksheet Set Ws = Worksheets ("Sales Data") 'Změňte název listu podle svého požadavku Ws.Unprotect' Pokud neexistuje žádné heslo, stačí předat metodu "UnProtect" End Sub
Pokud existuje nějaké heslo, musíme heslo zadat v uvozovkách. U hesla se rozlišují velká a malá písmena, proto si je pečlivě pamatujte.
Příklad č. 2 - Zrušení ochrany všech listů aplikace Excel pouhým kliknutím
Viděli jsme, jak zrušit ochranu konkrétního listu. Představte si, že máte mnoho listů a všechny listy jsou chráněny stejným heslem, takže nemůžeme uchovávat psaní kódů pro každý list zvlášť.
V těchto případech musíme pomocí smyček procházet kolekcí objektů listu a snadno je odemknout.
Níže uvedený kód provede procházení všemi pracovními listy a zruší ochranu listu.
Kód:
Sub Unpretect_Example2 () Dim Ws jako pracovní list pro každou Ws v ActiveWorkbook.Worksheets Ws.Unprotect Password: = "Excel @ 1234" 'Změňte heslo, jak jste zmínili, a přitom je chráňte. Další Ws End Sub

Příklad č. 3 - Zvláštní situace
Situace 1: Dokázali jste si někdy představit, že zadané heslo není správné. Pokud je zadané heslo nesprávné, zobrazí se chyba 1004: Run Time.

K řešení těchto chyb můžeme použít možnost „Při chybě GoTo Label“. Níže uvedený kód je příkladem toho samého.
Kód:
Sub Unpretect_Example3 () Dim Ws jako pracovní list pro každou Ws v ActiveWorkbook.Worksheets při chybě GoTo Errormessage Ws.Unprotect Password: = "Excel @ 1234" 'Změňte heslo, jak jste uvedli, a zároveň je chránit. Chybová zpráva: MsgBox "Chybné heslo" Další Ws End Sub
Výše uvedený kód zobrazí pěkné okno se zprávou „Nesprávné heslo“.

Situace 2: Když je list chráněn bez hesla a pokud zadáte náhodné heslo, zruší ochranu listu bez zobrazení jakýchkoli chyb.
Situace 3: Když je list chráněn heslem, ale pokud žádné heslo nezadáte, zobrazí se VBA jako pole pro zadání hesla pro zadání hesla.

Ve výše uvedeném vstupním poli musíme pro odemknutí listu zadat heslo. Pokud kliknete na tlačítko Storno, ukončí se podproces VBA, aniž by se cokoli zobrazilo, pokud není k dispozici okno se zprávou uživatele.