Ponekad trebate poslati svoju Excel radnu knjigu u svijet sa zaštićenim određenim radnim listovima. Ako ustanovite da neprestano štitite i uklanjate zaštitu listova prije nego što distribuirate svoje radne knjige, makronaredba ovdje može vam pomoći.
Kako makro funkcionira
Kod se pokreće događajem BeforeClose radne knjige. Kada pokušate zatvoriti radnu knjigu, ovaj se događaj aktivira, pokreće kod unutar njega. Makronaredba automatski štiti navedeni list s danom lozinkom, a zatim sprema radnu knjigu:
Privatna pod Radna knjiga_Prije zatvaranja(Odustani kao Boolean)
'Korak 1: Zaštitite list lozinkom
Sheets("Sheet1").Zaštitna lozinka:="RED"
'Korak 2: Spremite radnu bilježnicu
ActiveWorkbook.Save
Kraj Sub
U 1. koraku izričito određujete koji će list zaštititi — u ovom slučaju List1. Također dajete argument lozinke, Password:=”RED”, koji definira lozinku potrebnu za uklanjanje zaštite.
Ovaj argument lozinke nije obavezan. Ako ga izostavite, list će i dalje biti zaštićen, ali vam neće trebati lozinka da biste ga poništili.
Excel lozinke razlikuju velika i mala slova, pa ćete htjeti obratiti pažnju na točnu lozinku i velika slova koja koristite.
Korak 2 govori Excelu da spremi radnu knjigu. Ako ne spremite radnu knjigu, zaštita lista koju ste upravo primijenili neće biti na snazi sljedeći put kada se radna knjiga otvori.
Kako koristiti makro
Da biste implementirali ovu makronaredbu, trebate je kopirati i zalijepiti u prozor koda događaja Workbook_BeforeClose. Postavljanje makronaredbe ovdje omogućuje da se pokrene svaki put kada pokušate zatvoriti radnu knjigu:
Aktivirajte Visual Basic Editor pritiskom na Alt+F11.
U prozoru projekta pronađite naziv projekta/radne knjige i kliknite znak plus pored njega da biste vidjeli sve listove.
Kliknite Ova radna knjiga.
Na padajućem popisu Događaj odaberite događaj Prije zatvaranja.
Upišite ili zalijepite kod u novostvoreni modul, mijenjajući naziv lista (ako je potrebno) i lozinku.
Unesite svoj kod u događaj Radna knjiga BeforeClose.
Imajte na umu da dodatne listove možete zaštititi dodavanjem naredbi za zbrajanje prije naredbe Activeworkbook.Save.