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
 

Shift se ne može sprečiti

Nivo:  NIVO 3 - klinite za objašnjenje


Ne znam koliko puta sam naglasio posebnu važnost jezika Visual Basic for Applications (VBA) u Excelu. Osim prostih snimljenih makroa koji olakšavaju rutinske postupke na radnom listu, uz pomoć VBA ćete lako pripremiti neki složeni zahvat ili napisati funkciju koja vam nedostaje. Nisu retki slučajevi da cele funkcionalne aplikacije budu napisane u Excelu i kao takve dobro zadovoljavaju potrebe korisnika.

Ako ste i sami autor nekog rešenja u Excelu, tada je skoro sigurno da koristite i neke automatske procedure kojima postavljate početna i konačna stanja tako da se izvrše u času otvaranja ili zatvaranja radne sveske. Međutim, ovde leži jedan potencijalni problem: mnogi korisnici već znaju da držanjem pritisnutog tastera Shift pri otvaranju radne sveske mogu da zaobiđu izvršenje automatskog makroa. Ta mogućnost vas možda frustrira, jer bi mogla dovesti do narušavanja integriteta vaše aplikacije.

Nemojte pokušavati da nađete način da sprečite ovu pojavu (za razliku od Accessa, gde je takva tehnika moguća). Jednostavno, Excel je tako dizajniran, a razlog je bezbednosne prirode. Naime, mnogi korisnici koji često upotrebljavaju makroe, a žele da imaju kakvu-takvu direktnu zaštitu, koriste podešavanje srednjeg nivoa sigurnosti (Tools / Macro / Security, odnosno Alatke / Makro / Bezbednost). U takvom okruženju, korisnik dobija obaveštenje o prisustvu makroa u radnoj svesci; ako su sadržaj i dejstvo makroa u tom času nepoznati, korisnik može da spreči njihov rad, ali i da ga dozvoli, preventivno držeći taster Shift i potom pregledajući kodni sadržaj. Ako ove mogućnosti ne bi bilo, autori makro virusa bi imali korak prednosti, a to bi bilo loše. S druge strane, sprečavanje rada makroa u otvorenoj radnoj svesci automatski znači i da vaša Excel aplikacija ne radi, a to je takođe nepoželjno.

Nije baš sve tako crno, ukoliko ste spremni na malu igru mačke i miša sa "inventivnim" korisnicima. Scenario koji vam predlažem nije savršen, ali je veoma jednostavan: ako već ne možete da sprečite metode izbegavanja rada makroa, obezbedite da radna sveska ne služi praktično ničemu ukoliko se spreči njihovo dejstvo. Da biste to izveli, potrebno je da izvedete dva koraka. Najpre dodajte jedan radni list na početak radne sveske, a na njemu postavite samo neki tekst sa prikladnim uputstvom za korisnika koji je uspeo da otvori radnu svesku bez aktivnog VBA. Zatim na početak makroa Auto_Open dodajte sledeći kod:

Sub Auto_Open()
' otvaranje radne sveske

Application.ScreenUpdating = False

For i = 2 To Sheets.Count
  Set List = Sheets(i)
  List.Visible = True
Next

Sheets(1).Visible = xlVeryHidden
Sheets(2).Activate

' ovde sledi vaš početni kod aplikacije
' ...

Application.ScreenUpdating = True

End Sub

Isti, zapravo recipročni postupak izvedite i na kraju makroa Auto_Close.

Sub Auto_Close()
' zatvaranje radne sveske

Application.ScreenUpdating = False

' ovde sledi vaš završni kod aplikacije
' ...

Sheets(1).Visible = True
Sheets(1).Activate

For i = 2 To Sheets.Count
  Set List = Sheets(i)
  List.Visible = xlVeryHidden
Next

Application.ScreenUpdating = True

End Sub

Ključ rešenja je u sakrivanju radnog lista klauzulom xlVeryHidden, što je način koji se može opozvati isključivo posredstvom odgovarajuće VBA komande, a nikako iz interfejsa. Pri zatvaranju, biće sakriveni svi radni listovi sem prvog, a pri otvaranju će se desiti obrnuto - radni listovi će biti otkriveni, dok će prvi list sa uputstvom biti sakriven. Rekoh da način nije savršen: korisnik može držati pritisnut taster Shift i pri zatvaranju radne sveske, sprečavajući da se radni listovi sakriju. Ali, možemo pretpostaviti da je verovatnoća ovakvog poteza korisnika mnogo manja pri zatvaranju, nego u času otvaranja. Uostalom, ako isporučite Excel aplikaciju na kojoj je sakrvanje već izvedeno, korisniku ne preostaje ništa drugo, nego da nastavi ciklus sakrivanja i otkrivanja u aplikaciji.

 

  (C) 2000-2009 Praktikum na Webu

PC 114


 
 

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.