• 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.

Uitvragen of werkblad (un)protected is

Status
Niet open voor verdere reacties.

Stone52

Gebruiker
Lid geworden
11 dec 2004
Berichten
320
Hallo,

Voor een bewerking is het noodzakelijk te weten of een werkblad protected is of niet.
Als een werkblad unprotected is dan wil ik dit werkblad -na bewerking- unprotected
laten en is het protected dan wil ik dit werkblad -na bewerking- weer protected hebben.

Bestaat er een manier om uit te vragen of een werkblad protected of unprotected is ?
 
Hoi

Hier is een overzichtje (al is er nog wel meer mogelijk):

Code:
Sub BeveiligingVanEenBlad()
    MsgBox "is het blad beveiligd? " & ActiveSheet.ProtectContents
    MsgBox "zijn de shapes beveiligd? " & ActiveSheet.ProtectDrawingObjects
    MsgBox "is de structuur van het bestand beveiligd? " & ThisWorkbook.ProtectStructure
    MsgBox "heeft het bestand een paswoord? " & ThisWorkbook.HasPassword
End Sub

Wigi
 
Ah ja, druk in VBE ook eens op F2... Daar vind je alle objecten, methoden en eigenschappen.
 
Hallo,

Ondanks testwerk kom ik er niet uit. Om voor mij onduidelijke redenen blijft de
waarde van ActiveSheet.ProtectContents steeds FALSE ondanks het beveiligen (ActiveSheet.Protect) van het werkblad.


Code:
    If ActiveSheet.ProtectContents = True Then
        MsgBox ("blad is protected")
        ActiveSheet.Unprotect
    Else
        MsgBox ("blad is NIET protected")
    End If

Wie heeft nog een suggestie ?
 
Stone52, Je moet het '= True' uit je if-statement verwijderen. Dan doet tie het wel...:thumb:

Code:
Sub Beveiligd()

    If ActiveSheet.ProtectContents Then
        MsgBox "Yep, is beveiligd!"
    Else:
        MsgBox "Nope, niet beveiligd!"
    End If

End Sub

Groet, Leo
 
Laatst bewerkt:
Neen, Leo, dat heeft er niets mee te maken vrees ik :confused:

Wat we wel moeten weten, is welke beveiliging er dan concreet werd ingesteld, waarna het nog niet correct door Excel aangegeven wordt in de MsgBox.
 
Hallo,

Concreet beveilig ik het werkblad op 2 manieren:
1. via >Beveiliging, >Blad beveiligen. Aangevinkt staan dan doorgaans:
Vergrendelde cellen selecteren en Ontgrendelde cellen selecteren,
overige mogelijkheden zijn meestal niet aangevinkt.
2. via VB met ActiveSheet.Protect

In beide gevallen krijg ik via de VB-code -nadat het werkblad werd beveiligd-
de melding dat het werkblad niet beveiligd is.
Kijk ik daarna via >Beveiliging, >Blad beveiligen dan zie ik dat het werkblad
wel beveiligd is.
 
Wigi,
Neen, Leo, dat heeft er niets mee te maken vrees ik
Da's toch vreemd. Bij testen kreeg ik wel de goede resultaten...
Maar goed, dat zet de mens toch weer aan tot verder onderzoek!:D Ik ben dus 'ns ff gaan spelen met de VBE immediate window om te kijken wat de geretourneerde waarden zijn bij activesheet.protect (en unprotect). Ik kwam tot de ontdekking dat we volgens mij met '.protect' het 'verkeerde' aan het uitvragen zijn. Een sheet is natuurlijk in de 'basis' niet beveiligd (unprotect), dus DIE moeten we testen. Je krijgt namelijk een Null waarde terug als de sheet onbeveiligd is en een True als de sheet beveiligd is. (opzich wel raar natuurlijk..UNprotect en dan krijg je de waarde 'True' terug terwijl de sheet dus WEL beveiligd is... Hmmmm, niet logisch...)
Dit geeft als testcode het volgende...
Code:
Sub Beveiligd()

    If IsNull(ActiveSheet.Unprotect) = False Then
        MsgBox "Yep, is beveiligd!"
    Else:
        MsgBox "Nope, niet beveiligd!"
    End If

End Sub

Nou ja, het werkt wel volgens mij...:D

Groet, Leo
 
Ook al vond ik mijn bovenstaande oplossing ook niet slecht....:rolleyes: Via Google (steekwoord: 'determine if protect is on + Excel VBA') kwam ik terecht bij de volgende..
Code:
   Sub Test_Worksheet_Protection()

       X = False

       If ActiveSheet.ProtectContents Then X = True
       If ActiveSheet.ProtectDrawingObjects Then X = True
       If ActiveSheet.ProtectScenarios Then X = True

       If X = False Then
           MsgBox "The worksheet is not protected."
       Else
           MsgBox "The worksheet is protected."
       End If

   End Sub
...en wel op de microsoft site. Nou zou het toch moeten lukken.:D

Groet, Leo
 
Wigi en Ginger,

Dank voor jullie inzet. Morgen zal ik verder gaan met de door
jullie aangedragen suggesties. Wordt vervolgd . . . . . .
 
Wigi en Ginger,


Na testwerk met null en true/false heb ik de oplossing voor het probleem.
De "ActiveSheet.ProtectContents"-oplossing werkt correct.

Dank voor jullie inzet.
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan