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
 

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-2011 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-2011; Valinor Design; sva prava pridržana.