[ negative7 @ 28.05.2011. 12:46 ] @
Jeli moguce ikako da prilikom aktiviranja sheet2(A prethodno sam u recimo sheetu1) da me pita kao password,i tek ako pogodim password da me prebaci u sheet2?
Jel se moze ovo postici u vba ili pak ima kakva opcija u samim postavkama excela.Protection sheet ne dolazi u obzir.
[ neptuncokg @ 28.05.2011. 14:12 ] @
Verujem da ima boljih nacina, ali evo jednog resenja za "prvu pomoc". Pozdrav
[ Brodoplovac @ 28.05.2011. 17:41 ] @
Izgleda da ne postoji BeforeSheetActivate događaj.

Moj primer koristi dva sheeta, jedan lažni i jedan pravi, i međusobno ih zamenjuje koristići .Visible propertis.

Kada otvoriš sheet možeš da štikliraš CHECKBOX i onda će sheet biti dostupan sve dok se ne zatvori workbook. Ako se ne štiklira onda će morati da se unosi password prilikom svakog aktiviranja lista.

Password je: PERA

Bile su dve male greške, ispravio sam ih i sada je OK.



[Ovu poruku je menjao Brodoplovac dana 29.05.2011. u 11:34 GMT+1]
[ timmy @ 29.05.2011. 08:24 ] @
Evo da se i ja pridruzim svojim resenjem ;-)

Code:

Private Sub Workbook_SheetActivate(ByVal Sh As Object)
    If Sh.Name = "Sheet2" Then
        Cells.Select
        Selection.EntireColumn.Hidden = True
        If InputBox("Password?", "Please insert password") = "Pass" 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


Dva reda iznad Inputbox-a sluze da se sakrije kompletan sadrzaj lista da bi se on otkrivao samo ako je dobra lozinka.
Naravno, samo zato sto ne postoji Before Sheet Activate dogadjaj.
Naime, SheetActivate se podigne tek kada predjemo na ciljni list.

Pozdrav
[ Ivek33 @ 29.05.2011. 10:02 ] @
Citat:
negative7: Protection sheet ne dolazi u obzir.
Postavlja se pitanje, želiš li zaštititi samo pristup ili želiš da korisnik čak ni ne vidi što je na Sheetu2.
Prve dvije naredbe ne skrivaju Sheet od pogleda dok @Timmy-jeva to radi
No, nijedna od ovih makronaredbi neće biti u funkciji ako korisnik isključi izvršavanje Macro-a u Excelu.

@Timmy-jeva makronaredba je donekle jača od ostalih ali i tu nema pomoći ako korisnik isključi izvršavanje makronaredbi i zna otkriti (unhide) sve ćelije da ne kažem Stupce A, B, C.. u ovom njegovom slučaju.

Ako korisnik i dozvoli izvršavanje Makronaredbi tada moraš zaštititi pristup u VBE (disable ALT+F11) pa čak i pristup dotičnoj Workbook (da korisnik ne vidi Sheets u samoj Workbook i nema pristupa makronaredbama ali ni to nije 100% sigurno)

No ne zavaravaj se, zaštita na ovaj jednostavan način može se probiti
Sve zavisi tko koristi workbook i od koga skrivaš tj. braniš pristup dotičnom Sheetu
[ negative7 @ 29.05.2011. 13:51 ] @
Hvala vam svima na brzim odgovorima,Trenutno mi se timmiyem prijedlog cini najkorisniji.Onako na prvu nimi se da su i netpuncog i brodoplovac uradili istu stvar samo bez hide colums.
Citat:

Postavlja se pitanje, želiš li zaštititi samo pristup ili želiš da korisnik čak ni ne vidi što je na Sheetu2.
Prve dvije naredbe ne skrivaju Sheet od pogleda dok @Timmy-jeva to radi
No, nijedna od ovih makronaredbi neće biti u funkciji ako korisnik isključi izvršavanje Macro-a u Excelu.

@Timmy-jeva makronaredba je donekle jača od ostalih ali i tu nema pomoći ako korisnik isključi izvršavanje makronaredbi i zna otkriti (unhide) sve ćelije da ne kažem Stupce A, B, C.. u ovom njegovom slučaju.

Ako korisnik i dozvoli izvršavanje Makronaredbi tada moraš zaštititi pristup u VBE (disable ALT+F11) pa čak i pristup dotičnoj Workbook (da korisnik ne vidi Sheets u samoj Workbook i nema pristupa makronaredbama ali ni to nije 100% sigurno)

No ne zavaravaj se, zaštita na ovaj jednostavan način može se probiti
Sve zavisi tko koristi workbook i od koga skrivaš tj. braniš pristup dotičnom Sheetu

Da u pravu si,nisam bas o tom ni razmisljao,prema ovom tvom iskazu cini mi se onda za 100% zastiti sheet kao da je nemoguce??,ili je to moguce sa protection sheet?.posto vise ljudi koristi ovaj file(isti excelov file i to na istom racunalu),ali bi htjeo da samo neki mogu otvorit odredjeni sheet.
[ Brodoplovac @ 29.05.2011. 14:26 ] @
Samo da napomenem da moj primer ima nevidljivi list koji se pojavljuje tek kada se unese password. List "Pass" koji se vidi prilikom unošenja passworda postaje nevidljiv i menja ime. Umesto njega se pojavljuje list koji se zove "Sakrivena" ali koja sada dobija ime "Pass". Na taj način korisnik nema šanse da vidi skrivene podatke.

Postoje dva "Pass" lista - Worksheets(2) i Worksheets(4). Svaki od njih kada je vidljiv ima ime "Pass". Ovo daje mogućnost da se kreiraju "dummy" podaci na Worksheets(2), a da se pravi podaci stave na Worksheets(4).

@negative
Ako hoćeš jaku zaštitu koristi TrueCrypt pa enkriptuj taj Sheet.
[ Ivek33 @ 29.05.2011. 19:13 ] @
Citat:
Brodoplovac: Na taj način korisnik nema šanse da vidi skrivene podatke.
Dobro si ti to zamislio i to funkcionira za korisnike koji jedva znaju pokrenuti Excel upisati par podataka i snimiti ili samo pogledati informacije. (doduše ima puno macro koda ali radi na način koji si opisao, mada mi se više sviđa @timmijev način)
Međutim, ja pitam svrhu skrivanja (zaštite) koju želi pokretač teme.

Ovo što si ti napravio u dva koraka se razbija i to može prosječni korisnik samo ako malo progugla. Pa čemu svrha zaštite?
1. Zabrani pokretanje makronaredbi u par klikova
2. U VBE postavi Visible skrivenog sheeta i pogleda podatke, zatvori Excel bez snimanja Workbook i vrati izvršavanje makronaredbi na prijašnju razinu

Ili pogleda "top secret" podatke na skrivenom-zaključanom sheetu, kopira ako hoće i sve vrati na staro.
Zašto onda zaključavati i komplicirati život ako se nema povjerenja u nekoga i slično.

Ako i zaključaš ulaz u VBE opet onaj koga zanimaju podaci na tom sheetu i zainati se, kopira file na stick odnese kući (ili na licu mjesta, ako ima vremena i u tajnosti) i sazna "top secret podatke"

Po meni glavne karakteristike ovakvih radnji su:
1. Tko koristi (povjerenje)
2. Razina tajnosti podataka koje se skrivaju
3. Isplativost i kompliciranost radnji
4. Svrha ili cilj

da ne kažem (prihod - rashod = zarada), a zarada nas najviše zanima.

Po meni, svrha zaključavanja u Excelu može se svesti ako radiš Workbook koji sadrži puno makronaredbi koje su važne za funkcioniranje Workbook i organizacije podataka i ništa više, pa ne želiš da netko "prčka" po makronaredbama i nehotice zbrlja dokument. Ako zabrani makronaredbe neće mu Workbook raditi kako treba.

Pogledaj ovaj tvoj file koji vraćam
[ negative7 @ 29.05.2011. 23:15 ] @
Isprva nisam ni razmisljao o nekom "full security",i ono sto su ovde mi neki dali za rjsenje je sasvim dovoljno,ali sad
opet kad sam procito sto ivek kaze bolje bi bilo kad bi bilo "full security".Ali meni ne treba taj full security.
Vise bi volio kad bi se nekako moglo izvest da onaj sto zna sifru da je moze i promijenit,znate ono upise pravu sifru pa novu i onda mu nova postane glavna sifra.
[ negative7 @ 02.06.2011. 17:52 ] @
U prilogu je file .xls koji je ocitava vas serisjki broj s diska,mada to je totalno ne vazno.Ono sto je vazno jest da ako ocu da
udjem u VBA editor da mijenjam ili pak da vidim kod treba mi sifra, dal netko zna kako je netko napravio ovu mogucnost na ovom file-u..
Inace na file-e sam slucajno naletio na netu
[ neptuncokg @ 02.06.2011. 18:42 ] @
Ja ne znam kako moze da se skine zastita u ovom fajlu, ali imam tu funkciju koju trazis odavno. Negde na netu sam nasao makro. Evo pogledaj u prilogu. ("Seriski broj HDD"). Inace, excelovo svojstvo Application pruza razne mogucnosti da dodjemo do informacija o okruzenju. Jedan primer je u fajlu "Parametri". Pozdrav
[ timmy @ 02.06.2011. 18:47 ] @
Disk serial number:

Code:

 Public Function GetDriveSerialNumber(Optional ByVal DriveLetter As String) As Long
          Dim fso As Object, Drv As Object
          
          'Create a FileSystemObject object
          Set fso = CreateObject("Scripting.FileSystemObject")
          
          'Assign the current drive letter if not specified
          If DriveLetter <> "" Then
              Set Drv = fso.GetDrive(DriveLetter)
          Else
              Set Drv = fso.GetDrive(fso.GetDriveName(Application.Path))
          End If
      
          With Drv
              If .IsReady Then
                  DriveSerial = Abs(.SerialNumber)
              Else    '"Drive Not Ready!"
                  DriveSerial = -1
              End If
          End With
          
          'Clean up
          Set Drv = Nothing
          Set fso = Nothing
          
          GetDriveSerialNumber = DriveSerial
      End Function
[ negative7 @ 02.06.2011. 20:55 ] @
Pogresno ste me razumili,nije mi bitan seriski broj diska ni parametri,ali oboje valja svakako znat.

Nego kako je "on" omogucio da ga pita sifru prije ulaza u kod od vba
Kako bi ja na isti nacin kao on zastitio svoj vba kod,
Nema potrebe da probijam njegovu sifru,nego samo kako bi ja uradio isto to
[ neptuncokg @ 02.06.2011. 22:00 ] @
ALT+F11 / Tools / VBAProject Properties / Protection
[ negative7 @ 03.06.2011. 00:12 ] @
Hvala neptuncokg
[ Ivek33 @ 03.06.2011. 08:02 ] @
Citat:
negative7: Kako bi ja na isti nacin kao on zastitio svoj vba kod,
Nema potrebe da probijam njegovu sifru,nego samo kako bi ja uradio isto to
A što ti to vrijedi ako se ista šifra može ukloniti?

Ovo je original kod u dotičnoj workbook za ispis serial number HDD (tek toliko da vidiš
Code:
Sub DajBroj()
    Dim fs, e, s
    Set fs = CreateObject("Scripting.FileSystemObject")
    Set e = fs.GetDrive(fs.GetDriveName(fs.GetAbsolutePathName("c:")))

    s = e.SerialNumber
    ActiveWorkbook.Worksheets(1).Cells(2, 2).Value = s
End Sub

[ Brodoplovac @ 03.06.2011. 08:46 ] @
Ivek, koji si program koristio za skidanje šifre?

Komercijalni add-oni za excel (npr. ASAP utilities) su napravljeni kao COM addoni. U njima je kod kompajliran pa ga je teško otkriti. COM add-oni se mogu napisati u VB.NET-u. Uz pomoć COM add-ina bi se mogla napraviti dobra zaštita za sheet.

[ negative7 @ 03.06.2011. 09:17 ] @
Citat:
Ivek33: A što ti to vrijedi ako se ista šifra može ukloniti?

Ovo je original kod u dotičnoj workbook za ispis serial number HDD (tek toliko da vidiš
Code:
Sub DajBroj()
    Dim fs, e, s
    Set fs = CreateObject("Scripting.FileSystemObject")
    Set e = fs.GetDrive(fs.GetDriveName(fs.GetAbsolutePathName("c:")))

    s = e.SerialNumber
    ActiveWorkbook.Worksheets(1).Cells(2, 2).Value = s
End Sub


E jbga sad,pa jel moguce ikako zastit svoj kod ivek?Ja kad procitam ovo sve sto si ti napisao na ovu temu meni izgleda kao da ti tvrdis da 100% zastita i ne postoji?
[ Ivek33 @ 03.06.2011. 10:31 ] @
Citat:
Brodoplovac: Ivek, koji si program koristio za skidanje šifre?.
Hmmmm, ZNAO sam da će doći i ovo pitanje?
Nemoj me to pitati jer neću ti reći (ne samo tebi nego nikome) i to iz određenih razloga

1. Kršio bih pravila foruma a to ne želim
2. Kako bi tebi bilo da se baviš mukotrpnim programiranjem i zaštitiš Excel file da nitko ne zna i ne može pristupiti onome čemu ti ne želiš, a ja ovdje izbacim način kako se radi uklanjanje tvoje šifre. Mislim da ti ne bi bilo pravo, zar ne. (ovako bar mi je savjest čista
Nadam se da me sada razumiješ.

Citat:
pa jel moguce ikako zastit svoj kod ivek?Ja kad procitam ovo sve sto si ti napisao na ovu temu meni izgleda kao da ti tvrdis da 100% zastita i ne postoji?
Pa lijepo sam napisao u prethodnom postu, nema 100% zaštite. Čovjek napravi neku zaštitu pa drugi čovjek razbije tu zaštitu, zar ne?

Čuo sam za opciju zaštite preko *.DLL file ali nisam se susreo s time. No navodno to funkcionira tako da ti netko dođe sjedne za PC i kao fol postavi neki svoj programčić instalacije koji će instalirati taj DLL file (a da ti ne znaš). No ne znam što se događa ako ukloniš taj DLL file, hoće li funkcionirati Workbook?. No opet što ako ja pobrišem one dijelove makronaredbi koje čitaju taj DLL file ?
itd itd itd....