List VBA UnProtect | K odblokování listu aplikace Excel použijte kód VBA
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
Tuto šablonu aplikace VBA Unprotect Sheet Excel si můžete stáhnout zde - šablonu aplikace VBA Unprotect Sheet ExcelPří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 o prodeji“, 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áme přístup 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 se zruší ochrana 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. V heslech 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 psát kódy 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 uvedli, a zároveň je chránit. 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é. Když je zadané heslo špatné, dostaneme 1004: Chyba doby běhu.
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 stejné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 „Chybné heslo“.
Situace 2: Když je list chráněn bez hesla a pokud zadáte náhodné heslo, bude i nadále zrušena ochrana listu bez zobrazení jakýchkoli chyb.
Situace 3: Pokud 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.