Microsoft Office Excel
uređuje Dragan Grbić

 Office Praktikum | Mapa sajta 

 
Bookmark and Share
Matična strana sajta
Novo na sajtu
Mapa sajta
Beleške
Knjiga posetilaca
Kontakt

Prethodna stranica
Pretraga sajta
Pretraga MSKB

Blog Praktikuma
RSS feed 
 
Office Praktikum

Još o Excelu
 


Skoro svakodnevno slušamo
  Radio Paradise:
  eklektični muzički online radio bez reklama!
 

   

Sponzori sajta

  Connectivity by SBB
 
Connectivity by SBB

 

Informacije

NOVOSTI
Novi prilog o Wordu
Tri nova autorska članka
Četiri priloga o Accessu
Opis i uputstvo za alatku YuCirLat '08 (Word)

SADRŽAJ ZA PREUZIMANJE
YuCirLat '08 unapređena alatka za konverziju kodnih rasporeda u Wordu

SKREĆEMO PAŽNJU
Beleške: B(l)oga li ti tvoga!- prilog koji će nekog možda čak i da naljuti
Kako pretraživati MSKB
* a pronaći ćete i još mnogo novih sadržaja...

USKORO SERIJA ČLANAKA O OFFICEU 2010

POZIVAMO VAS
* i prenesite svoja iskustva. Najbolji prilozi će biti objavljeni.



  (C) 2000-2009 Praktikum na Webu
 

Sprečavanje promene radnog lista

Nivo:  NIVO 4 - klinite za objašnjenje


Excel obezbeđuje više načina za promenu radnog lista, što je uobičajen ergonomski detalj. Međutim, ako kreirate upravljanu korisničku aplikaciju u Excelu, verovatno ćete poželeti da detaljno kontrolišete akcije korisnika, u šta bi se mogla ubrojati i vaša namera da sprečite promenu radnog lista dok se ne ispune potrebni uslovi za to. Evo kako ćete to učiniti.

Za početak, sprečite najočigledniji način: sakrijte jezičke radnih listova. U Excelu 2003, otvorite dijalog Tools / Options / View (Alatke / Opcije / Prikaz), pa isključite polje za potvrdu Sheet Tabs (Jezičci listova). U Excelu 2007, otvorite dijalog Office > Excel Options (Office > Excel opcije), birajte grupu Advanced (Više opcija); u desnom oknu nađite grupu Display options for this worksheet (Opcije prikaza za ovu radnu svesku) u kojoj ćete naći polje za potvrdu Show sheet tabs (Prikaži jezičke listova) koje treba da isključite.

Time ste rešili, rekoh, samo najočigledniji vid promene radnog lista, ali realnu zaštitu još niste postigli. Svaki iskusni korisnik zna, a većina i koristi prečice Ctrl+PageUp i Ctrl+PageDown za promenu radnog lista na prethodni, odnosno sledeći. Dakle, treba sprečiti te prečice. Ni to nije teško, ako znate kako; o tehnikama blokiranja prečica smo već pisali u više navrata. Treba da presretnete događaj ApplicationOnKey; to morate učiniti pažljivo, pošto je reč o događaju na nivou aplikacije, a ne na nivou radne sveske: morate predvideti slučaj da su otvorene i druge radne sveske u kojima ograničenje ne sme da postoji. U radnoj svesci aplikacije u kojoj ste već sakrili jezičke, otvorite VBE (Alt+F11), otvorite modul za objekat ThisWorkbook, pa u njega unesite ovo:

Private Sub Workbook_Activate()
  ' sprečavanje prečica pri aktiviranju
  Application.OnKey "^{PgDn}", ""
  Application.OnKey "^{PgUp}", ""
End Sub

Private Sub Workbook_Deactivate()
  ' odobravanje prečica pri deaktiviranju
  Application.OnKey "^{PgDn}"
  Application.OnKey "^{PgUp}"
End Sub

Ovo je već tvrđa zaštita i većina korisnika će pokleknuti. Većina ne znači i svi - neko će se već setiti da postoji i dijalog Go To (Idi na, Ctrl+G), gde može da se snađe ako zna imena radnih listova: može da upiše referencu Sheet2!A1 i promeniće aktivni radni list. Dakle, jedan način je da napravite neka besmislena imena radnih listova, takva da ih korisnik ne može znati (a jezičke ste već sakrili). Ako ste zaključali ćelije sa formulama, pa aktivirali zaštitu radnog lista, tada korisnik neće videti reference u formulama, pa zaštita dolazi na visok nivo.

I taman ste pomislili kako je to skoro savršena zatita, kad jednog trenutka sami otkrivate propust u ovoj ideji: džabe ste pravili "glupa" imena radnim listovima, jer se spisak lepo vidi u oknu Project u VBE... To važi čak i ako ste zaključali kodni materijal lozinkom ili ako ste sakrili radne listove... Preostaje još jedan, priično nasilan metod koji treba da koristite sa krajnjim oprezom - zapravo, već bi trebalo da razmišljate o nekim "zadnjim vratima" svoje aplikacije, a morate misliti i na korisnikovu mogućnost da otvori radnu svesku tako da se VBA ne aktivira. Ali, zasad nećemo ići dalje: recimo da smo "odlučili" da je postignuta dovoljna zaštita. Ako imate iskustva sa problemima zaštite, podsetiću vas na zlatno pravilo: apsolutno zaštita ne postoji. Postoji samo dovoljna, celishodna zaštite - i ona koja to nije. Dakle, "nasilni" metod sprečavanja promene radnog lista se izvodi "hvatanjem za okovratnik": ako primenite sledeći makro u modulu objekta ThisWorkbook, napuštanje radnog lista više neće biti moguće, čak i ako niste primenili prethodne oblike zaštite.

Private Sub Workbook_SheetDeactivate(ByVal Sh As Object)
  Application.EnableEvents = False
  Sh.Activate
  Application.EnableEvents = True
End Sub

Ovaj makro se izvršava svaki put kada se napusti (deaktivira) tekući radni list - dolazi do reaktivacije (vraćanja), što praktično znači da selekcija nekog drugog radnog lista nije moguća.

Poslednje upozorenje: u praksi morate predvideti alternativne načine pristupanja sadržaju na drugim radnim listovima, u cilju ispravke ili održavanja sadržaja aplikacije. Bilo bi najbolje da sve pomenute metode primenite uz neki vid selekcije, recimo sa nekom lozinkom za prilaz. To je tehika o kojoj ćemo govoriti drugom prilikom.

 

  (C) 2000-2009 Praktikum na Webu

Decembar 2007.


 
 

Vrh stranice  Prethodna stranica  Naslovna strana  Mapa sajta  Pretraga

AFORIZAM ZA DANAS OVIH DANA SLUŠAMO...

Copyright © Praktikum na Webu, 2000-2009; Valinor Design; sva prava pridržana.