Microsoft Office Excel
uređuje Dragan Grbić

Bookmark and Share
Matična strana sajta
  Novo na sajtu
  Mapa sajta
  Beleške
  Kontakt
  Pretraga MSKB

 Blog Praktikuma
  RSS feed
  P@W @Tw

  Izvezi stranicu u PDF
 
Office Praktikum

Još o Excelu
 


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

 
       

Sponzori sajta

SBB CS 1.6 game server: 82.117.200.1
 
Connectivity by SBB

 
Suština pasijansa
Suština pasijansa
 


 

Informacije

NOVOSTI

I još dva nova priloga o Excelu
Novi prilozi o Wordu
Novi i prilozi u temi "razno o Officeu"
Novi članci o novostima u Officeu 2010!

SADRŽAJI ZA PREUZIMANJE

Lokalizacija Total Commandera 7.51Obe jezičke školjke za popularni program na srpskom sad funkcionišu u bilo kojoj varijanti Windowsa!
RNDalica.ExcelDodatak za Excel 2007/2010 za generisanje slučajnih podataka!
YuConv.ExcelDodatak za Excel 2007/2010 za konverziju pisama!
YuConvNetDodatak za Word 2007/2010 za konverziju pisama i kodnih rasporeda!

SKREĆEMO PAŽNJU

Kako pretraživati MSKB
a pronaći ćete i još mnogo novih sadržaja...

KONTAKT

Da li znate za pravila koja važe pri kontaktu sa nama? Molimo vas da se obavestite o tome!
 
POZIVAMO VAS

i prenesite svoja iskustva. Najbolji prilozi će biti objavljeni.

  (C) 2000-2010 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-2011 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-2011; Valinor Design; sva prava pridržana.