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

Bladbeveiliging werkt niet

Status
Niet open voor verdere reacties.

Symphysodon

Gebruiker
Lid geworden
14 dec 2012
Berichten
468
Beste forummers,

Ik heb een code voor het beveiligen van werkbladen:
Code:
For Each Sht In Sheets(Array("test1", "test2"))
    Sht.Protect "wachtwoord"
Next

Deze werkt prima alleen nu ik heb het probleem dat ik een programma heb met honderden tabbladen waardoor de code niet meer zo praktisch is.

Nu zou je zeggen gebruik dan:
Code:
       For Each Sht In Worksheets
        Sht.Activate
        If Sht.ProtectContents = False Then
            sh.Protect Password:="wachtwoord"
        End If
       Next
Maar dat werkt dus niet. Niet alle werkbladen worden beveiligd. In eerste instantie heb ik de vereenvoudigde versie gebruikt maar zag toen dat de werkbladen niet beveiligd (of ontgrendeld) werden en heb toen een aantal pogingen gedaan om het werkend te krijgen. Helaas zonder goed resultaat.


Mvg
Marco
 
In die laatste gebruik je de variabele Sht en voor .Protect staat Sh in plaats van Sht.
Overigens is die Sht.Activate overbodig.

Code:
For Each Sht In Worksheets
    If Not Sht.ProtectContents Then Sht.Protect Password:="wachtwoord"
Next

En eraf halen:
Code:
For Each Sht In Worksheets
    If Sht.ProtectContents Then Sht.Unprotect Password:="wachtwoord"
Next
 
Laatst bewerkt:
Dit is te gemakkelijk?
Code:
Sub cobbe()
For Each sht In Worksheets
 sht.Protect Password:="wachtwoord"
Next
End Sub
 
Bedankt voor de snelle respons

@ExcelAmateur
Geloof me ik heb gezocht. Maar het is wel waar zoeken is een kunst op zich.

De code waarnaar je verwijst werkt in ieder geval wel goed.

@Edmoor

Het overbodige van .Activate is discutabel wat mij betreft. Ik werk met office 2007 en volgens mij is het een bug in de software. Soms is het gebruik van Activate de enige manier om een code werkend te krijgen. Ik kan het helaas niet bewijzen.

@Cobbe
Of het te makkelijk is weet ik niet, maar het werkt (bij mij) niet.

Mvg.
Marco
 
De Activate is alleen nodig wanneer je een blad actief wilt maken. In alle andere gevallen kan het achterwege blijven, ook in Office 2007.
 
Je zal wel gelijk hebben. Ik probeer mijn codes altijd zo kort en efficiënt mogelijk te houden zonder activate, select en lussen ed.
Maar helaas is mijn vba kennis beperkt en stuit ik soms op foutmeldingen die ik op dat moment alleen opgelost krijg door het gebruik van Activate.
 
Je zal wel gelijk hebben. Ik probeer mijn codes altijd zo kort en efficiënt mogelijk te houden zonder activate, select en lussen ed.
Maar helaas is mijn vba kennis beperkt en stuit ik soms op foutmeldingen die ik op dat moment alleen opgelost krijg door het gebruik van Activate.
Wat ik zei geldt voor .Activate en .Select
Mocht je er ergens tegenaan lopen dan laat het hier maar weten :)
 
Dank je.

@EvR
Ik heb ca 72 elementen, elk element wordt gemeten op 2 tot 4 lijnen. Elk element wordt gekalibreerd en gemeten. Elk tabblad heeft zijn eigen instellingen, dus reken maar uit.
72x4(max)x2=576 tabbladen.

Misschien is het ook meer iets voor Math Lab het wordt er in ieder geval niet sneller op.
 
en 1 werkblad met alle instellingen per element en 1 werkblad met alle lijnen (en eventueel 1 voor hetgeen je wilt zien) is geen optie?
576 is best veel, maar als het voor jou werkt dan werkt het ;)
 
Ik heb al een apart blad met constanten. Nu heb ik alle bladen die ik niet nodig heb hidden. Misschien moet ik een procedure maken die een blad aanmaakt op het moment dat het nodig is. Het komt zelden voor dat ik ze allemaal nodig heb.

Bedankt allemaal.
 
Ik gooi hem weer open.
Het is een tijdje goed gegaan, maar het programma loopt weer vast op het verwijderen van de beveiliging. Ik krijg de foutmelding dat het wachtwoord niet juist is en dat of de Capslock aan staat.
Het verwijderen van de beveiliging in de sheet gaat wel gewoon goed, met hetzelfde wachtwoord gebruikt in vba.
 
Ik ga er voor het gemak van uit dat de foutmelding terecht gegeven wordt.
Hier kunnen we dus weinig mee tenzij je je document hier plaatst.
 
Code:
Sub voorbeeld()

    Dim fd As FileDialog
    Dim j As Variant
    Dim afb As String
    Dim pth As String
    
        Application.ScreenUpdating = False

        'Uitschakelen van de beveiliging
        For Each sh In ActiveWorkbook.Worksheets
            sh.Unprotect Password:="wAchtwoord"
        Next sh
....

End sub
 
Dat is de code en niet het gevraagde document.
 
Het document kan ik helaas niet geven. Het is .xlsm document met alleen de bladen beveiligd (niet de werkmap) en met een aantal bladen verborgen.
 
Dan kan ik helaas verder niks voor je betekenen.
De oorzaak van het probleem zit in het document, niet in de code.
 
Laatst bewerkt:
Je code is wel anders dan ik eerder in #3 voorstelde en dat zou ook een oorzaak kunnen zijn.
Waarom heb je dat niet zo overgenomen?
Ik zou controleren of de verborgen bladen wel met datzelfde wachtwoord beveiligd zijn.
 
Laatst bewerkt:
Status
Niet open voor verdere reacties.

Nieuwste berichten

Terug
Bovenaan Onderaan