• Privacywetgeving
    Het is bij Helpmij.nl niet toegestaan om persoonsgegevens in een voorbeeld te plaatsen. Alle voorbeelden die persoonsgegevens bevatten zullen zonder opgaaf van reden verwijderd worden. In de vraag zal specifiek vermeld moeten worden dat het om fictieve namen gaat.

Cellen bewerken met macro's ondanks beveiliging

Status
Niet open voor verdere reacties.

Bakkerbakgraag

Gebruiker
Lid geworden
24 okt 2015
Berichten
66
Dag mensen,
ik heb een werkblad beveiligd voor gebruikers. De beveiligde cellen wil ik wel bewerken met macro's. Als ik de macro's uitvoer, krijg ik de foutmelding omdat de cellen beveiligd zijn. Ik zoek een manier om de macro's hun werk te laten doen, maar ik wil wel dat de cellen beveiligd zijn tegen bewerken door gebruikers.

Ik hoop dat iemand mij kan helpen.
 
Zet dit in begin van je macro :

Code:
Sheets("MijnSheet").Protect Password:="JePaswoord", UserInterfaceOnly:=True
Natuurlijk namen wel aanpassen hé ...
 
En als je meerdere werkbladen in je bestand heb zitten en ook wilt filteren plaats dan deze code in Thisworkbook

Code:
Private Sub Workbook_Open()
Dim wSheetName As Worksheet
    For Each wSheetName In Worksheets
        wSheetName.Protect Password:="Secret" , UserInterFaceOnly:=True, AllowFiltering:=True
        Next wSheetName
End Sub

Uiteraard je paswoord veranderen naar jouw gekozen paswoord.

Voordeel is mocht de beveiliging van het blad er af zijn, dat bij het opnieuw opstarten van het bestand gelijk alle bladen weer beveiligd zijn
 
Laatst bewerkt:
ik heb het niet echt getest, maar voor zo ver mijn ervaring strekt op dat gebied :
- een werkblad gewoon beveiligen met/zonder een paswoord blijft ok als je het bestand afsluit en opnieuw opent, dan is de beveiliging nog altijd intact.
- een werkblad beveiligen (met/zonder paswoord) met een macro en die userinterfaceonly is na afsluiten en heropenen niet OK, de beveiliging is wel goed, het aanpassen door met een macro niet.

Dus de oplossing hierboven met een Workbook_Open-event is in mijn ogen een knappe oplossing.
Alleen weet ik niet zeker of je niet eerst even snel de beveiliging er eerst even af moet gooien voor je die er opnieuw opzet met die userinterfaceonly.
 
Laatst bewerkt:
Beste allemaal,
dank jullie wel voor jullie raad.

Deze code: Sheets("MijnSheet").Protect Password:="JePaswoord", UserInterfaceOnly:=True doet wat ik wil, maar cow18, waarom is dit onveilig?
Alsvast bedankt voor de reactie.
 
Die is niet onveilig.
Het enige wat ik wou duiden, dat is nadat je die user... gebruikt hebt, dat je dan met een macro toch de inhoud van een beveiligd werkblad kan wijzigen.
Sluit je je excelbestand af en heropen je die opnieuw, dan is de beveiliging nog altijd OK, maar je kan op dat ogenblik nog niet met je macro, de inhoud van een beveiligd blad wijzigen.
Je moet vooraf nog een keer die protect met die userinterfaceonly aanroepen.
Daarom vond ik die oplossing met die workbook_open knap.
 
Voor alle duidelijkheid - als je enkel dit zou doen qua beveiliging is het inderdaad onveilig maar zo moet het niet ...

  • Beveilig je workbook zoals je dat anders doet in de gebruikersinterface...
  • Op die manier kan niemand in de VBA nadien zonder het paswoord ook te kennen
  • De regel VBA en dat is een beetje onverwacht - als hij wordt uitgevoerd op een reeds beveiligd workbook - zorgt ervoor dat de macro er in kan wijzigen
  • maar ... en dat is de clou : als de macro niet meer aktief is valt die toegang weg
  • m.a.w. is je workbook weer helemaal beveiligd ...
 
Het is precies zoals Cow18 het in post #6 uitlegt

Maar zoals DigiCafee aangaf een paswoord heeft enige nut als je het vbaproject ook beveiligd met een paswoord
want elke gebruiker met een beetje kennis van excel en vba kan zo heel makkelijk de beveiliging er weer afhalen.
 
Dank jullie wel voor het meedenken.

Sheets("naam blad").Protect Password:="wachtwoord", UserInterfaceOnly:=True
Doet wat ik wil. Ik dacht de macro bij openen van mijn werkmap op te starten met de volgende code:

Private Sub Workbook_Open()
Sheets("naam blad").Protect Password:="wachtwoord", UserInterfaceOnly:=True
End Sub


Helaas werkt dat niet. Wat doe ik fout?
 
Wat werkt dan niet? heb je de naam van je sheet correct ingevuld in Sheets("naam van blad") let op eventuele spaties

heb je de code in post #3 ook geprobeerd? heb je in het blad de cellen beveiligd die niet bewerkt mogen worden.
anders een voorbeeldje van je bestand ?
 
gooi de beveiliging er eerst eens af
Code:
Private Sub Workbook_Open()
Sheets("naam blad").unProtect Password:="wachtwoord"
Sheets("naam blad").Protect Password:="wachtwoord", UserInterfaceOnly:=True
End Sub
 
Dan toch best enkel maar bij wijze van test ... want het is niet veilig en niet aan te raden de bescherming er eerst af te halen... hoeft helemaal niet : lees de beschrijving van die funktionaliteit maar eens na ...

Maar het is dus wachten op enige verduidelijking/reactie van de TS ...
 
De code (Sheets("MijnSheet").Protect Password:="JePaswoord", UserInterfaceOnly:=True) werkt qua beveiliging prima. Alleen start de macro niet vanzelf bij het openen van mijn werkblad.
 
Je moet het bestand eerst opslaan, afsluiten en vervolgens weer openen. Anders doet , what's in the name, Workbook_Open() niet zoveel.
 
Laatst bewerkt:
dat moet letterlijk in de "Workbook_open"-macro in de "thisworkbook"-module staan, zoniet werkt het niet.
Dus zoals Loek in #3 al (bij benadering) geschreven had
 
Status
Niet open voor verdere reacties.
Steun Ons

Nieuwste berichten

Terug
Bovenaan Onderaan