Skydda alla kalkylblad med ett klick

Så skyddar du alla kalkylblad med lösenord

I dagens VBA-tips – signerat Dag Kihlman – skall vi se på hur vi kan skapa en kod för att skydda alla blad i arbetsboken på samma gång. Koden i filen är omfattande och förklaringen skulle lång och ta tid att förklara i sin helhet. Koden är istället kommenterad. I tipset nedan kommenterar och förklarar vi de viktigare delarna som kräver ytterligare förklaring.

För att hänga med i förklaringen kan du hämta hem denna fil:

Ladda ner exempelfilen här

Vi rekommenderar dessa Excelkurser:
www.infocell.se – lärarledda kvalitetskurser i Excel
www.officekurs.se – oslagbar e-Learning i Excel & Office-paketet

För att öppna VBA-editorn i Excel klickar du på Alt+F11 och kan där se och använda koden. (Använd koden i filen – inte koden i texten nedan – om du ska kopiera in koden i dina egna Excelfiler).

Metoden för att låsa upp arken och låsa arken börjar båda på samma sätt. Det gäller att ta in ett lösenord och se att angivet lösenord inte är tomt, som det till exempel blir om användaren avbryter försöket att ange lösen. Det är endast om lösenord angivits som vi skall låsa eller låsa upp arken.

Kod för att skydda alla bladflikar

Koden för att låsa upp arken är ganska enkel. En ”for each-loop” går igenom listan med samtliga ark. Variabeln sh kommer att peka på ett ark i taget. Vi kan dock inte låsa ett ark som redan är låst. Därför granskar vi i en if-sats att arket inte är låst. Om det inte är låst så låser vi det med lösenordet.

For Each sh In ThisWorkbook.Sheets
If Not sh.ProtectContents = True Then
Call sh.Protect(sPassWord)
End If
Next

Koden för att låsa upp arken är rätt så lik fram till for each-loopen. Men när vi försöker låsa upp arken finns en risk att något av arken är låst med annat lösenord eller att lösenordet är felaktigt för alla ark. Vi skulle kunna ge ett felmeddelande för varje ark, men det blir tjatigt om lösenordet är helt fel. Av det skälet lägger vi istället in en variabel, bWrongPassWord, som vi sätter till Falskt till att börja med. Vi antar helt enkelt att det skall gå väl:

bWrongPassword = False

Om arket är låst försöker vi låsa upp det. Vi stänger av felbevakningen, så att inte koden kraschar vid fel lösenord:

On Error Resume Next
Call sh.Unprotect(sPassWord)
On Error GoTo 0 ’ Vi stänger av On Error Resume Next

Om lösenordet inte fungerade så är arket fortfarande låst. Det innebär att vi stött på minst en sida med ett annat lösenord.

If sh.ProtectContents = True Then
bWrongPassword = True
End If

Efter loopen meddelar vi med en MessageBox om allt gått väl eller om minst ett ark var låst med annat lösenord.

Använda filen för att låsa och låsa upp bladflikarna

I filen finns två knappar som är kopplade till vår VBA-kod. Klicka på knappen Lås för att låsa alla kalkylblad i arbetsboken. I dialogrutan som dyker upp väljer du önskat lösenord. Klicka sedan på Lås upp – och ange rätt lösenord – för att ta bort kalkylbladsskyddet för samtliga arbetsböcker.

Associerad kurs: Excel VBA och makron

Associerad e-kurs: VBA & makron

Du gillar kanske också...

Börja prenumerera på Excelbrevet

Ta del av tips & tricks i Excel och Office en gång i månaden helt kostnadsfritt.

Grattis du kommer nu att få Excelbrevet varje månad helt gratis!