Telefonszámunk: 1-472-0679

Lapvédelem több munkalapra egyszerre

2013-01-10 - horvimi - Kategória: Macro-VBA, Munkalapok műveletei
Hivatkozott Excel verzio: Excel 2007 Excel 2010 Excel 2013

Az Excel egészen a 2013-as verzióig (de elképzelhető, hogy a további verziókra is igaz lesz) nem képes arra, hogy több munkalapot kijelölve egyszerre bekapcsolhassuk a lapvédelmet ugyanazzal a jelszóval.

Tehát több, sok munkalap esetén hosszas kattintgatás előtt állunk, ha ezt meg szeretnénk oldani, mivel egyesével kell bekapcsolni a lapvédelmet.

A jó hír az, hogy van megoldás a problémára, a rossz hír pedig az, hogy csak VBA kóddal oldható meg.

Igaz, a kódot nem kell a védendő dokumentumba tenni, elég, ha nyitva van egy olyan munkafüzet, amiben benne van az alábbi makró, és azt lefuttatjuk. Akár be is tehetjük a PERSONAL makró munkafüzetbe, és akkor bármikor rendelkezésünkre áll.

Nyissuk meg a PERSONAL makró füzetet. Ha nincs ilyen vagy nem tudjuk miről van szó,
akkor nézzük meg itt. A PERSONAL (Egyéni) makró füzet (link)

  1. Illesszünk be egy új modult, vagy ugorjunk egy létező modul végére
  2. Másoljuk be a lenti kódot
  3. Mentsük el
  4. Nyissuk meg a több védendő lapot tartalmazó dokumentumot
  5. ALT+F8 (Makró futtatás)
  6. Adjuk meg, hogy a PERSONAL makrófüzetben lévő makrókat mutassa
  7. Válasszuk ki a „Protect_Unprotect” makrót, és futtassuk

Lapvédelem ki/bekapcsolása több munkalapra makró

[vb]

Sub Protect_Unprotect( )

Dim wSheet As Worksheet
Dim pw as string

pw = inputbox("Add meg a jelszót:")
For Each wSheet In Worksheets

With wSheet

If .ProtectContents = True Then

.Unprotect Password:=pw

Else

.Protect Password:=pw

End If

End With

Next wSheet

End Sub

[/vb]

A makró bekéri a jelszót, majd végiglép minden munkalapon, és ha nincs bekapcsolva a védelem, akkor bekapcsolja, ha be volt kapcsolva, akkor pedig feloldja a védelmet.

A kódot bátran próbáljuk  módosítani, hogy pl. csak bekapcsolja vagy csak kikapcsolja. Ezeket akár külön makróba is lehet tenni.

Vigyázat! A jelszót ne felejtsük el, mert ez a kód nem tárolja le sehová!

7 hozzászólás
  1. Kipróbáltam, rendben működik, de lenne 2 észrevételem (jelzem: nem vagyok egy MS/macro stb. guru):

    – A jelszót 1:1-ben megjeleníti az inputbox-ban 🙂
    – Lezáráskor jó lenne a jelszót bekérni még egyszer, és a két inputbox értékén megvizsgálni (hogy azonos-e), mert ha valaki elgépeli a jelszót (értsd: nem azt gépeli amit szeretett volna), akkor sosem (vagy legalábbis nehezen) fogja tudni feloldani a zárolt lapokat (mivel nem tudja mit gépelt el).

    Thx!

  2. A fenti kód nyilván gondolatébresztő. Ezer továbbfejlesztési lehetősége van, pl. az, hogy nem inputbox-ban, hanem userform textboxban kérjük be a jelszót, ahol password karaktert is be tudunk állítani. vagy kétszer bekérni és ellenőrizni. Esetleg letárolni a jelszót egy rejtett helyen. Stb…
    Azt nem tudom eldönteni, hogy kérdezel, vagy csak észrevételezel?
    Az egészet azért csinálom, hogy ha lennének még páran olyanok, akik az észrevétel mellett javítási, fejlesztési ötleteket is adnának egy problémához, akkor ne fogják vissza magukat.

  3. Nekem egy olyan kérdésem lenne, hogy lehet olyan lapvédelmet kreálni, amellyel semmilyen más műveletet nem lehet a munkafüzetben kezdeményezni (mondjuk új munkalap létrehozása, csak egy adott munkalapon függvények segítségével értékeket számolni.

  4. lenne egy olyan kérdésem, mert nem találtam hozzá infót sehol. Hogyan lehetne megoldani, hogy felhasználói csoportok más-más adatokat láthassanak az excel táblába, persze szerkeszteni, módosítani nem lenne joguk. Tudsz valami módszert, hogy különböző jelszóval belépve különböző adatok legyenek láthatóak?
    Köszönöm

Vélemény, hozzászólás?