|
Microsoft Office Excel |
|
|
Drugostepena zaštita radnog listaNivo:
Ako ste napravili neko namensko rešenje u Excelu, verovatno ste zaštitili strukturu radnog lista zaključavanjem, kako ne bi došlo do nehotičnog ili namernog oštećenja strukture u toku rada korisnika. Ponekad to nije dovoljno: neki korisnici pokušavaju da zaobiđu ograničenja koja im postavljate. Nadmudrivanje je u toku. Da vas podsetim: kada primenite komandu Alatke / Zaštiti / Zaštiti radni list (Tools / Protection / Protect Sheet), biće omogućena promena samo u ćelijama koje su obeležene kao otključane. Da biste unapred otključali neku ćeliju ili obeleženi opseg, pređite u dijalog za uređenje ćelije (Ctrl+1) i na kartici Zaštita (Protection) isključite polje Zaključana (Locked). Na istom mestu možete zaštititi i prikaz formula u liniji za unos iznad radnog lista: uključite polje za potvrdu Skrivena (Hidden) i formula se više neće videti kada aktivirate zaštitu radnog lista. Ako koristite Excel 2002 ili 2003, prilikom zaključavanja su vam na raspolaganju mnoge detaljne opcije; tako možete postići vrlo finu granulaciju zaštite, formirajući neke posebne uslove za rad korisnika. Obratite pažnju na zgodnu opciju: ako u dijalogu za postavljanje zaštite isključite dozvolu Biranje zaključanih ćelija (Select locked cells), time ćete potpuno ograničiti korisnika na kretanje samo među otključanim sadržajem. Neki znatiželjni korisnici se ponekad dovijaju u pokušaju da provale zaštićenu strukturu, pa pokušavaju da iskopiraju celokupni radni list na drugi, čime dobijaju kloniranu strukturu koja nije zaključana. Ovo je jedan od razloga zašto biste sakrili vidljivost formula, ako vam je do toga stalo: u tom slučaju, umesto formule će biti preneta samo zatečena vrednost u ćeliji formule, a ne i reference. Međutim, ako baš terate mak na konac, otkriću vam jednu pojedinost: Excel neće zaštiti formule koje ste možda postavili kao kriterijum za uslovno oblikovanje (conditional formatting), pa će ipak postojati "mali propust" u vašoj nameri da sakrijete baš sve trikove koje ste ugradili u svoju Excel aplikaciju. U takvim slučajevima vam preostaje poslednja mera: sprečite kopiranje sadržaja primenom VBA procedure koju ćete dodeliti radnom listu. Otvorite VBE (Alt+F11), kliknite dvaput na ime radnog lista da biste otvorili njegov modul, pa tamo tačno prenesite kratki makro: Private Sub Worksheet_Deactivate() Application.CutCopyMode = False End Sub Ovaj mehanizam je vrlo prost: rezervisano ime služi za hvatanje događaja napuštanja radnog lista, a on će se desiti svaki put kad korisnik pređe na mesto na koje želi da prenese sadržaj; u tom času, sadržaj stevke Ako ćemo baš mak na konac, ovo je možda prejaka zaštita: ponekad bi kopiranje trebalo da bude dozvoljeno. Recimo da ste obezbedili mogućnost da neki korisnik otključa radni list (ako je zaštita radnog lista aktivirana pod lozinkom, tim bolje), pa da iskopira nešto na drugi radni list, a zatim da vrati zaštitu. Tada je potrebna "klackalica" koja će menjati dozvolu za kopiranje. Izvešćete je ovako:
Private Sub Worksheet_Deactivate()
If ActiveSheet.ProtectContents = True Then
Application.CutCopyMode = False
End If
End Sub
Ako nemate ništa protiv, ovo je dobar čas da raspravimo jednu zanimljivu stvar. Nedavno mi je jedan kolega zamerio na sličnom rešenju, govoreći kako je besmisleno angažovati VBA za takav posao, jer se rad makroa može sprečiti, pa cela ova priča pada u vodu. Slegnuo sam ramenima: kolega je u pravu. Umesto apsolutne zaštite, koja na nivou Office programa realno ne postoji, hajde da govorimo o dovoljnoj zaštiti. Šta smatrate dovoljnom zaštitom? Dobro pamtim program jednog svog nazovi-kolege, koji se hvalio kako je napravio čudo neviđeno... Program je služio za nekakvu trivijalnu evidenciju u blagajni. Tobože da bi prikrio sadržaje, kolega je postavio sistem dvostrukih lozinki, čak praveći neki modul koji je obezbeđivao brzo zastarivanje lozinki koje su čuvane u kriptovanom stanju. Groteska je u tome što je taj program bio pisan u Clipperu, model baze podataka je bio trivijalan, a same DBF datoteke otvorene za bilo čiju upotrebu; bilo je dovolnjo nekoliko minuta da razumete i izolujete bilo kakav podatak koji biste videli u tabeli transakcija. Onaj modul za kriptovanje lozinki pritom nije bio upotrebljen, a moglo je da bude tako, ako je kolegi bilo stalo do zaštite. Rečju, promašena tema domaćeg zadatka... Činjenica da želite da zaštitite Excel aplikaciju od narušavanja nije isto što i zaštita unutrašnjeg sadržaja. Ako vam je stalo da sprečite korisnika da razume strukturu vaše aplikacije, to je u redu (ako mislite da tako mora da bude). Zaštitite svoj sistem tako što će ili raditi ispravno ili će biti nefunkcionalan. Ako želite tajnost, zaključajte stukture: ključne formule smestite na poseban radni list, zatim taj list sakrijte kroz VBA metodom xlVeryHidden (detaljnije u ovom prilogu Najzad, zaštita je i organizacioni detalj: ako neko ima toliko vremena da pokušava da provali vašu aplikaciju, onda sigurno nema vremena da radi svoj posao, pa bi bilo zanimljivo da pitate njegovog poslodavca šta misli o tome. Svojim korisnicima svakako treba da skrenete pažnju da niste raspoloženi da zatičete tragove pokušaja narušavanja bezbednosti aplikacija, pa neka to bude dovoljno za početak. Većini će to biti i dovoljno.
|
|
Vrh stranice Prethodna stranica Naslovna strana Mapa sajta Pretraga |
| AFORIZAM ZA DANAS | OVIH DANA SLUŠAMO... |
| Copyright © Praktikum na Webu, 2000-2011; Valinor Design; sva prava pridržana. |