Hallo Finch
sorry dat ik in dit topic reageer over dit onderwerp.
Ik dacht dat het bestand dan met een wachtwoord beveiligd kan worden.
Maar dat er dan wel een macro uitgevoerd kan worden zonder dat de macro dande beveiliging er af moet halen.
wim
Hallo Wim,
ik begrijp je vraag niet helemaal, maar ik zal trachten een algemeen antwoord te geven. Moest je toch iets anders bedoelen, vraag je maar verder.
Je kan binnen Excel grofweg gezegd op 3 niveaus passwoorden plaatsen.
1. op bestandsniveau. Dit passwoord wordt dan gevraagd bij het openenen van het bestand.
2. op sheetniveau: Hiermee beveilig je een gedeelte of alle cellen van een bepaalde sheet, en je kan aangeven welke acties mogelijk moeten zijn of juist onmogelijk moeten zijn.
3. op je VBA code: Dit passwoord wordt gevraagd wanneer je de VBA code van dat bestand wilt zien.
Wanneer je nu een passwoord op sheetniveau via code aanbrengt doen de meeste dat als volgt:
Code:
sheets(2).Protect Password:="test"
Op die manier is de tweede sheet beveiligd met het passwoord "test".
Je kan nu op die sheet geen macro uitvoeren of gegevens invoeren met de hand, als dat tegen je beveiligingsrestricties ingaat.
Wil je nu toch een macro uitvoeren op deze beveiligde sheet, dan die KAN je in VBA de protectie afzetten, je code uitvoeren en de protectie terug aanzetten.
bv.
Code:
sheets(2).unprotect Password:="test"
Code die nodig is
sheets(2).protect Password:="test"
Wanneer je nu echter snel genoeg bent, en ctrl+break drukt tijdens de uitvoering, onderbreek je de code, en heb je toegang tot de onbeveiligde sheet. Wat in mijn ogen niet tot aanbeveling strekt.
Wanneer je echter je sheet in je code als volgt van een beveiliging voorziet:
Code:
sheets(2).Protect Password:="test", userinterfaceonly:=True
Dan geeft Excel je de mogelijk om wijzigingen op die sheet uit te voeren via VBA code, maar niet via handmatige invoer.
Ctrl+Break drukken geeft je nog geen toegang tot een onbeveiligde sheet wanneer je code uitvoert, want in die code die je de beveiliging niet op te heffen via het unprotect statement.
Als laatste geef ik nog mee, dat een beveiligde sheet zonder een passwoord te zetten op je VBA code een ervaren gebruiker toegang laat om je sheet te manipuleren via VBA code. Echter geen enkel wachtwoord binnen Excel, noch op bestandsniveau, noch op sheetniveau, noch op VBA niveau is onfeilbaar. Je verhoogt enkel de drempel om het afgeschermde gedeelte te manipuleren.