VBA UnProtect Sheet - Za odstranitev zaščitnega lista Excel uporabite kodo VBA

Excel VBA Unprotect Sheet

V nekaterih primerih zaščitimo svoje delovne liste, da uporabniku preprečimo manipulacijo z delovnimi listi. Medtem ko ščitimo delovni list, običajno ohranjamo isto geslo. V tem članku vam bomo pokazali način odstranjevanja zaščite lista s kodiranjem VBA.

Primeri

Primer # 1

Odstranitev zaščite lista je 99% preprostejša kot zaščita. Za odstranitev zaščite delovnega lista potrebujemo samo geslo.

Najprej moramo omeniti ime delovnega lista, ki ga bomo zaščitili. Če želite na primer odstraniti zaščito lista z imenom »Prodajni podatki«, mora biti koda VBA taka.

Delovni listi (»Podatki o prodaji«)

Nato odprite metodo Unprotect.

Kot lahko vidimo na zgornji sliki, ne vidimo nobenega seznama IntelliSense, ki bi nam pomagal. Zaradi tega je delo težje, zlasti za novega učenca.

Da bi to premagal, se običajno zanesem na razglasitev spremenljivke VBA kot »Delovni list«.

Koda:

Sub Unpretect_Example1 () Dim Ws as Worksheet End Sub

Zdaj nastavite deklarirano spremenljivko na ustrezen list.

Koda:

Sub Unpretect_Example1 () Dim Ws As Worksheet Set Ws = Worksheets ("Sales Data") End Sub

Zdaj uporabite spremenljivko za dostop do vseh lastnosti in metod deklarirane spremenljivke.

Kot lahko vidite na zgornji sliki, imamo dostop do vseh lastnosti in metod. Na seznamu IntelliSense izberite metodo »Unprotect«.

Zahteva geslo za odstranitev zaščite lista. Geslo sem nastavil kot "Excel @ 1234", zato ga bom navedel enako.

S tem boste odstranili zaščito delovnega lista z imenom »Prodajni podatki«.

Koda:

Sub Unpretect_Example1 () Dim Ws As Worksheet Set Ws = Worksheets ("Sales Data") Ws.Unprotect Password: = "Excel @ 1234" End Sub

Če ni gesla, moramo uporabiti samo metodo »Unprotect« in prezreti parameter »Password«.

Koda:

Sub Unpretect_Example1 () Dim Ws As Worksheet Set Ws = Worksheets ("Sales Data") 'Spremenite ime delovnega lista po vaši zahtevi Ws.Unprotect' Če ni gesla, samo posredujte metodo "UnProtect" End Sub

Če obstaja kakšno geslo, ga moramo vnesti v dvojne narekovaje. Geslo razlikuje med velikimi in malimi črkami, zato si jih natančno zapomnite.

2. primer - Z enim samim klikom odstranite zaščito vseh Excelovih listov

Videli smo, kako odstranimo zaščito določenega delovnega lista. Predstavljajte si, da imate veliko delovnih listov in so vsi delovni listi zaščiteni z istim geslom, zato ne moremo več pisati kod za vsak delovni list posebej.

V teh primerih moramo z zankami prečkati zbirko predmetov delovnega lista in jih z lahkoto odstraniti.

Spodnja koda bo zavila skozi vse delovne liste in odstranila zaščito lista.

Koda:

Sub Unpretect_Example2 () Zatemni W kot delovni list za vsak Ws v ActiveWorkbook.Worksheets Ws.Unprotect Password: = "Excel @ 1234" 'Spremenite geslo, kot ste ga omenili, hkrati pa jih zaščitite. Naprej Ws End Sub

3. primer - posebne razmere

Situation 1: Have ever imagined when the supplied password is wrong. When the supplied password is wrong, we will get the 1004: Run Time Error.

To handle these errors, we can use the “On Error GoTo Label” option. The below code is an example of the same.

Code:

Sub Unpretect_Example3() Dim Ws As Worksheet For Each Ws In ActiveWorkbook.Worksheets On Error GoTo Errormessage Ws.Unprotect Password:="Excel@1234" 'Change the password as you have mentioned while protecting them. Errormessage: MsgBox "Wrong Password" Next Ws End Sub

The above code will show a nice message box saying, “The wrong Password.”

Situation 2: When the sheet is protected without a password, and if you supply a random password, it will still unprotect the worksheet without showing any kind of errors.

Primer 3: Ko je list zaščiten z geslom, če pa ne navedete nobenega gesla, se bo VBA pojavil kot polje za vnos gesla za vnos gesla.

V zgornje polje za vnos moramo vnesti geslo, da odstranimo zaščito delovnega lista. Če kliknete gumb Prekliči, bo izstopil iz podprocedure VBA, ne da bi ničesar prikazal, razen če je v polju uporabniško sporočilo.

Zanimive Članki...