IZBORNIK HOME FORUM ACCESS EXCEL WORD KAZALO
1 Pokretanje-zatvaranje Microsoft Excel-a 2003
2 Izgled prozora Microsoft Excela 2003
3 Podešavanje Excela
4 Otvaranje novog dokumenta
5 Spremanje dokumenta
6 Zatvaranje dokumenta
7 Pregled LISTA prije ispisa
8 Određivanje margine Radnog lista
9 Kreiranje Zaglavlja i Podnožja Radnog lista
10 Ispisa Lista-tablice
11 Kreiranje mapa u Excelu
12 Kretanje radnom tablicom
13 Označavanje ćelija
14 Matematički operatori
15 Unos podataka u ćelije
16 Unos i obrada teksta u ćelijama
17 Promjena podataka i brisanje sadržaja ćelije
18 Spajanje i dijeljenje ćelija
19 Automatska ispuna - brzi unos podataka
20 Ispuna ćelija posebnim znakovima
21 Naredbe Poništi i Ponovi poništeno
22 Premještanje i Kopiranje sadržaja ćelije
23 Umetanje i brisanje Ćelija, Stupaca i Redova
24 Promjena veličine Ćelija, Stupaca i Redova
25 Umetanje Simbola u tablicu
26 Umetanje slika u tablicu
27 Radnje vezane uz
Radni List
28 Apsolutna i relativna adresa ćelije s imenom
29 Izrada Grafikona
30 Oblikovanje radnih tablica
31 Kreiranje LISTE - Baze podataka
32 Sortiranje podataka
33 Zamrzavanje dijela prozora Radnog lista
34 Filtriranje podataka
35 Oblikovanje Datuma
36 Zaključavanje ćelija
37 Zaštita dokumenta
38 Popis svih FUNKCIJA
u Excelu
- Primjeri često korištenih formula
- Primjeri zadataka za ECDL
39 Sve alatne trake u Excelu
40 Pomoć u Excelu
41 Oporavak dokumenta
42 Ograničenja u Excelu
43 Tipkovni prečaci
44 Razno
   
MS OFFICE 2007
Instalacija MS Office 2010
 
-

MICROSOFT EXCEL - Kako ograničiti broj otvaranja WorkBook u Excelu, ograničenje broja otvaranja excel datoteke

Kako ograničiti broj otvaranja WorkBook u Excelu
(How to limit count number Workbook Open)

Search This Web Site


Kako sa VBA kodom ograničiti broj otvaranja Workbook u Excelu

U ovom  tutorijalu pokazat ću na primjeru kako možemo ograničiti broj otvaranja neke excel radne knjige (Workbook). Uzmimo za primjer da smo kreirali nekakvu proračunsku tablicu na nečiji zahtjev. Želimo je dati naručiocu tj. korisniku na uvid ali na ograničen broj otvaranja datoteke tj. radne knjige (uzmimo za primjer 5 otvaranja). Kada nam plati dogovreni iznos, dajemo mu cjelokupnu i funkcionalnu datoteku bez ograničenja i bez viška ograničavajućih radnih listova. Na ovom linku sam pisao o limitu otvaranja radne knjige na vremensko ograničenje.

Da smo odmah jasni, nema 100% zaštite i ovo je školski primjer koji vam može poslužiti za nekog prosječnog korisnika u Excelu koji neće istraživati kako razbiti zaštite.

Kao što i sami vjerojatno znate u slučajevima kada se radi sa VBA makronaredbama one se mogu koristiti samo kada ste u Excelu dozvolili korištenje i pokretanje VBA makronaredbi. Ako isključite tj. zabranite pokretanje VBA makronaredbi aplikacija koju ste kreirali neće funkcionirati u potpunosti (onaj dio koji se odnosi na VBA kod i procedure). A vjerujem da znate i za privremeno zaustavljanje tj. izvođenje VBA makronaredbi pomoću tipke SHIFT prilikom pokretanja tj. dvoklika na excel datoteku koja sadrži VBA kod. U ovom slučaju kada pritisnemo tipku SHIFT i pokrenemo datoteku VBA se neće pokrenuti.

U ovom tutorijalu koristi se VBA događaj WorkBook_Open koji zna ponekada biti problem (bar kod mene koji koristim Excel 2007 a radim sa datotekama za Excel 2003 tj. *.xls format).
U ovakvim slučajevima ako vam događaj ne funkcionira poslužite se trikom opisanim na linku Rješavanje problema sa pokretanjem WorkBook_Open

Ili jednostavno koristite format datoteke *.xlsm

Prvi korak moje zamisli je bio da spriječimo korisnika koji će isključiti izvođenje makronaredbi u Excelu ili da koristi tipku SHIFT prilikom pokretanja datoteke. U takvim slučajevima WorkBook se otvara normalno ali se ne izvode makronaredbe. Pa prema tome korisnik može vidjeti sve Sheets, formule i ostale naše kreacije koje smo radili u radnoj knjizi (što mi naravno ne želimo). To možemo riješiti preko VBA tako da po defaultu sakrijemo sve Sheets a da se vidi samo ulazni sheet na kojem stoji upozorenje da dozvoli pokretanje makronaredbi li neće moći koristiti radnu knjigu uopće.

Prva slika ispod prikazuje situaciju kada je korisnik koristio tipku Shift ili zabranio izvođenje makronaredbi.
Korisnik vidi samo ulazni Sheet1 na kojem mu piše upozorenje da dozvoli pokretanje VBA macro koda ili neće moći vidjeti ostale sheets.

Zabrana pregleda radne knjige ako nije dozvoljeno izvođenje VBA makronaredbe

Zabrana pregleda radne knjige ako nije dozvoljeno izvođenje VBA makronaredbe

Regularan pristup pregledu radne knjige kada je dozvoljeno izvođenje makronaredbi

U slučaju kada je dozvoljeno pokretanje tj. izvođenje VBA makronaredbi (pazite kome vjerujete!) otvara se workbook i vidljivi su svi sheets (ma može samo polovina ili po želji ali to je za već naprednije VBA programere). Korisnik  je automatski pozicioniran na Sheet2 koji važi za ulazni sheet u ovoj situaciji. Na ovom sheetu recimo da smo napisali neke kratke upute kako koristiti aplikaciju koju smo kreirali.

Sheet3 i Sheet4 recimo da su neke naše tablice koje smo kreirali sa hrpom formula.

Postavljanje password za pristup na Sheet

Slijedeći dio tutorijala odnosi se samo na autora Excel aplikacije.
Sheet5 je u stvari counter ili brojač otvaranja radne knjige. Za pristup ovom sheetu postavimo password pomoću VBA makronaredbe. Samo mi znamo taj password i samo mi možemo pristupiti na ovaj Sheet5. U ovom slučaju password za pristup na Sheet5 je abc

ograničavanje pristupa na WorkSheet

Trikovi za postavljanje countera ili brojača otvaranja WorkBook (radne knjige)

Kada smo upisali password imamo pristup na Sheet5. Na njemu smo u jednoj ćeliji koju smo definirali u VBA macro kodu postavili brojač od nule. Taj broj smo definirali npr: bijelim slovima da se ne vidi, sakrili gridlines, formula bar heading stupaca itd itd. Ima tu dosta mogućih trikova sda VBA zaštitama i ograničenjima. Neke od njih pogledajte na linku Trikovi zaštite u VBA za Excel.

Trikovi za postavljanje countera ili brojača otvaranja WorkBook (radne knjige)

Isto tako ćeliju u kojoj se nalazi broj (koji VBA povećava pri svakom otvaranju) možemo oblikovati da se uopće ne vidi bez bojanja teksta. Postavimo Format Cells na ovakav Custom način. Isprobajte Format Cells => Custom => ;;;

oblikovanje ćelije da se ne vidi tekst ili broj koji je upisan u ćeliju

Postavljanje zabrane pristupa u VBE u Excelu

Naravno sve prethodno bi palo u vodu kada bi svatko mogao pristupiti u VBE i da nam obriše VBA makronaredbe. Zato zabranimo pristup u VBE da korisnik može vidjeti naše makronaredbe, passworde, i slično. U ovom slučaju password za pristup u VBE je IvanC (u datoteci iz primjera tutorijala)

Postavljanje zabrane pristupa u VBE u Excelu

I pred kraj da rezimiram.

Ovo je jednostavan primjer zaštite na ovako opisan način. Može se razbiti i zaobići ali treba za to imati znanja. Na vama je da malo istražite kvalitetnije procedure i uvijek imajte na umu da ih povežete nekim redoslijedom.

U module ThisWorkBook postavljene su procedure.

1. Private Sub Workbook_Open() 'događaj prilikom otvaranja workbook
1a. u ovom događaju pozivamo proceduru za otkrivanje svih sheets (naravno ako je dozvoljeno izvođenje makronaredbi)
1b. pozicioniramo se na Sheet2
1c.  Provjeravamo broj u L21 na Sheetu5 dodajemo +1 i ako je veći od 5 tada automatski zatvaramo WorkBook bez upozorenja

2. Private Sub Workbook_BeforeClose(Cancel As Boolean) 'procedura prije zatvaranja workbook koja snima bez upozorenja a važna je za brojač
2a. pozivamo prioceduru za skrivanje svih sheets prije zatvaranja workbook
2b. snimamo workbook bez upozorenja a time smo snimili i brojač koji je dobio +1 pri svakom otvaranju

3. Private Sub Workbook_SheetActivate(ByVal Sh As Object) 'ograničenje pristupa na Sheet5 potrebna password
3a. Skrivamo sve stupce prije pristupa na Sheet,
3b. kada se upise ispravan passw tada se otkrivaju svi stupci

U Module1
1. Sub UnhideAllSheets() 'otkrivanje svih sheets u workbook ako je dozvoljeno pokretanje makronaredbi u Excelu

U Module2
1. Sub HideSheets() 'skrivanje svih sheets osim onoga na kojem smo pozicionirani, ova procedura je važna ako je korisnik isključio pokretanje makronaredbi u excelu

U Module3
1. Sub PozicionirajSeNaSheet1() 'selektiranje Sheet1 i pozicioniranje u A1


VBA makronaredbe u module ThisWorkBook

Option Explicit
Private Sub Workbook_Open()
'događaj prilikom otvaranja workbook
Call UnhideAllSheets
'ako je dozvoljeno pokretanje makronaredbe u excelu tada poziva proceduru iz Module1 za otkrivanje svih sheets
'slijedi +1 na postojeći broj i provjera stanja brojača u L21 (imenovana ćelija imenom br) na Sheet5
Sheet5.Range("br") = Sheet5.Range("br") + 1
'ćelija L21 u kojoj se nalazi brojač otvaranja imenovana nazivom "br"
If Sheet5.Range("br").Value > 5 Then
'ukupan broj otvaranja, dakle ograničeno je na 5 otvaranja
Application.DisplayAlerts = False
Application.Quit
End If
Sheets("Sheet2").Select
'pozicioniranje na Sheet2
End Sub

Private Sub Workbook_BeforeClose(Cancel As Boolean)
'procedura prije zatvaranja workbook
Call HideSheets
'poziva proceduru iz Module2 i skriva sve sheets osim onoga na kojem smo pozicionirani
ActiveWorkbook.Save
'snima Workbook prije zatvaranja a time i brojač-counter otvaranja na Sheet5 u L21
End Sub

Private Sub Workbook_SheetActivate(ByVal Sh As Object)
'ograničenje pristupa na Sheet5 potrebna password
'autor ove procedure mislim da je Timmy sa ES-a
If Sh.Name = "Sheet5" Then
Cells.Select
Selection.EntireColumn.Hidden = True
If InputBox("Password?", "Please insert password") = "
abc" Then
Cells.Select
Selection.EntireColumn.Hidden = False
Range("A1").Select
Else
MsgBox "Access denied!", vbCritical, "Wrong password"
Application.Goto "Sheet1!r1c1"
End If
End If
End Sub

NAPOMENA! U liniji koda prve makronaredbe gdje je ćelija L21 imenovana
Sheet5.Range("br") = Sheet5.Range("br") + 1 'ćelija L21 u kojoj se nalazi brojač otvaranja imenovana nazivom "br"

možemo pisati i ovako
Sheet5.Range("L21") = Sheet5.Range("L21") + 1 'ćelija L21 u kojoj se nalazi brojač otvaranja imenovana nazivom "br"
dakle umjesto br pišemo adresu ćelije L21 na sva tri mjesta koda




VBA makronaredbe u Module1

Option Explicit
'u slučaju da koristite XLS format datoteke ovdje dodajte proceduru Auto_Open
Sub UnhideAllSheets()
'otkrivanje svih sheets u workbook ako je dozvoljeno pokretanje makronaredbi u Excelu
Dim wsSheet As Worksheet
For Each wsSheet In ActiveWorkbook.Worksheets
wsSheet.Visible = xlSheetVisible
'otkriva all sheets
Next wsSheet
End Sub

 

Adsense sponzor



VBA makronaredbe u Module2

Option Explicit
Sub HideSheets()
'skrivanje svih sheets osim onoga na kojem smo pozicionirani
'ova procedura je važna ako je korisnik isključio pokretanje makronaredbi u excelu
    Call PozicionirajSeNaSheet1
'poziva proceduru iz Module3 za selektiranje Sheet1 i pozicioniranje na njega u A1
Dim Sh As Worksheet
Application.ScreenUpdating = False
For Each Sh In ActiveWorkbook.Sheets
If Sh.Name <> ActiveSheet.Name Then Sh.Visible = xlSheetVeryHidden
'skriva ostale sheets
Next
Application.ScreenUpdating = True
End Sub

VBA makronaredbe u Module3

Option Explicit
Sub PozicionirajSeNaSheet1()
Sheets("Sheet1").Select
Range("A1").Select
End Sub

U slučaju da koristite datoteku *.xls formata a program Excel 2007 tada u Module1 treba dodati još jednu proceduru koja će pozivati događaj WorkBook_Open

Public Sub Auto_Open() 'automatska procedura koja se sama pokreće prilikom pokretanja datoteke
'samo u slučaju kada je datoteka XLS formata a koristite Excel 2007

Application.Run "ThisWorkbook.Workbook_Open"
'naredba koja pokreće WorkBook_Open događaj u ThisWorkBook Module
End Sub

PAŽNJA! Autor ovog tutorijala se ograđuje od eventualno nastalih problema korištenjem navedenih makronaredbi. Pazite što radite i kome vjerujete ;-)
SVE OVE MAKRONAREDBE ISPROBAJTE PRVO NA PRIMJERIMA ILI KOPIJAMA VAŠE DATOTEKE!

Ako koristite Excel 2007 - obratite pažnju ako vam ne radi događaj Workbook_Open() ili Auto_Open() tada nemojte snimati datoteku u *.xls formatu već isprobajte u *.xlsm formatu

Također pogledajte tutorijale:

Kako riješiti probleme sa Workbook_Open događajem kada se ne pokreće (aktivira)
Neki
načini zaštite u Excelu pomoću VBA
Kako
kopirati u VBE makronaredbu sa internet stranice
Kako
zabraniti pokretanje makronaredbi
Kako zaključati određene ćelije u Excelu

DOWNLOAD *.xlsm datoteke za Excel 2007 i noviji, sa cjelokupnim VBA kodom i primjerom iz ovog tutorijala možete izvršiti na linku:
Primjer ograničenja broja otvaranja WorkBook *.xlsm

DOWNLOAD *.xls datoteke sa cjelokupnim VBA kodom i primjerom iz ovog tutorijala možete izvršiti na linku:
Primjer ograničenja broja otvaranja WorkBook *.xls

 

Adsense sponzor





blok shema VBA procedura




Copyright 2008 - 2018 - IvanC - ic.ims.hr