Help!

PC-Problemen?
De vrijwilligers van Oplossing.be zoeken gratis met u mee!

Hulp bij posten

Recente topics

Auteur Topic: Protect sheets with button  (gelezen 10820 keer)

0 leden en 1 gast bekijken dit topic.

Offline Easy

  • Lid
  • *
  • Berichten: 47
  • Geslacht: Man
  • Only the sky is the limit
Protect sheets with button
« Gepost op: 03 september 2007, 16:17:43 »
Beste,

In een file heb ik verschillende sheets en deze zou ik met een knop in één keer willen beveiligen met optie wachtwoord.
Ik heb wat code bij elkaar geraapt en ben al tot volgende gekomen(zie file bijlage)

Maar denk dat de code veel korter kan geschreven worden. Nu geef ik voor elk sheet appart deze code.

ik zou willen dat het toepasbaar is voor elke sheet in de file

Kan er iemand mij verder op weg helpen.

Mvgr.
Windows Vista Business SP2 NLD
Intel(R) Core(TM)2 Quad  CPU   Q9550  @ 2.83GHz 2833
P5Q-E
NVIDIA GeForce 9600 GT 512MB 1680 x 1050
High Definition Audio-apparaat
Nr: 1 Model: SAMSUNG HD103UJ ATA Device

Offline RedHead

  • Excel-Expert
  • Ambassadeur
  • *****
  • Berichten: 2.280
  • Geslacht: Man
  • Met Excel lukt 't wel.... (toch???)
Re: Protect sheets with button
« Reactie #1 Gepost op: 03 september 2007, 17:58:54 »
Easy, Ik heb je code wat aangepast en onder een nieuwe knop gezet....Sub BeveiligAlleSheets()
Dim strPassword As String, sOpmerking As String
Dim ws As Worksheet

    Application.ScreenUpdating = False
     
    'bepaal of de sheet beveiligd is...
    x = False

    If ActiveSheet.ProtectContents Then x = True
    If ActiveSheet.ProtectDrawingObjects Then x = True
    If ActiveSheet.ProtectScenarios Then x = True
   
    sOpmerking = IIf(x = False, "protecting", "unprotecting")
       
    strPassword = InputBox("Enter the password for " & sOpmerking & " the worksheet", UCase(sOpmerking) & "...")
 
    For Each ws In ThisWorkbook.Sheets
        If x = False Then 'sheet is onbeveiligd!
'            Sheets("Home").Shapes("Knoppie").Select
'            Selection.Text = "Unprotect All"
            ws.protect Password:=strPassword, userinterfaceonly:=True
            ws.EnableSelection = xlNoSelection
        Else:
            On Error GoTo Foutmelding
            ws.unprotect Password:=strPassword
'            Application.Wait (Now + TimeValue("00:00:05"))
'            Sheets("Home").Shapes("Knoppie").Select
'            Selection.Text = "Protect All"
        End If
    Next

Foutmelding:
    If Err.Number = 1004 Then
        MsgBox "Sorry, The password you supplied is not correct !!! Please try again.", 16, "Tessenderlo Group"
    End If
   
    Application.ScreenUpdating = True

End Sub
Dit beveiligt in 1 keer alle werkbladen in je werkboek in slechts 1 subje.... Ik ben ook nog ff bezig geweest met het veranderen van de tekst op de knop zelf, maar liep vast bij het unprotecten. Het blad is dan volgens mij nog half half beveiligd en staat dus nog geen selecties toe.
Voor het gemak zit ook de aangepaste sheet bij m'n antwoord. ;)

Groet, Leo
______________________________

Groet, Leo

Offline Easy

  • Lid
  • *
  • Berichten: 47
  • Geslacht: Man
  • Only the sky is the limit
Re: Protect sheets with button
« Reactie #2 Gepost op: 03 september 2007, 18:53:10 »
RedHead,

Zo'n snelle reactie verdiend toch een schouderklopje.
Dus bij dezen bedankt.

En ja betreft uw opmerking onderaan in de post, het zou mooi staan mocht de tekst op de knop de toestand van beveiliging aangeven.

Een hint voor andere excel freaks om dit te bewerkstelligen....

Mvgr.
Windows Vista Business SP2 NLD
Intel(R) Core(TM)2 Quad  CPU   Q9550  @ 2.83GHz 2833
P5Q-E
NVIDIA GeForce 9600 GT 512MB 1680 x 1050
High Definition Audio-apparaat
Nr: 1 Model: SAMSUNG HD103UJ ATA Device

Offline Easy

  • Lid
  • *
  • Berichten: 47
  • Geslacht: Man
  • Only the sky is the limit
Re: Protect sheets with button
« Reactie #3 Gepost op: 03 september 2007, 20:07:31 »
RedHead,

Even te vlug geweest met mijn reactie.

Heb de code overgenomen in mijn eigen file maar krijg daar telkens foutmelding "Run time error 13" type mismatch en dit op de regel "For Each ws In ThisWorkbook.Sheets"

Ik kan u ook meegeven dat er grafieken als chart tabblad in de file zitten.  Mss heeft dat er iets mee te maken?

Mvgr.
Windows Vista Business SP2 NLD
Intel(R) Core(TM)2 Quad  CPU   Q9550  @ 2.83GHz 2833
P5Q-E
NVIDIA GeForce 9600 GT 512MB 1680 x 1050
High Definition Audio-apparaat
Nr: 1 Model: SAMSUNG HD103UJ ATA Device

Offline RedHead

  • Excel-Expert
  • Ambassadeur
  • *****
  • Berichten: 2.280
  • Geslacht: Man
  • Met Excel lukt 't wel.... (toch???)
Re: Protect sheets with button
« Reactie #4 Gepost op: 03 september 2007, 23:32:53 »
Easy, Allereerst dank voor...
Citaat
een schouderklopje
;D

Daarnaast heb ik nog ff doorgepuzzeld met de tekst op de knop. Da's bij deze gelukt...Sub BeveiligAlleSheets()
Dim strPassword As String, sOpmerking As String
Dim ws As Worksheet

    Application.ScreenUpdating = False
     
    'bepaal of de sheet beveiligd is...
    x = False

    If ActiveSheet.ProtectContents Then x = True
    If ActiveSheet.ProtectDrawingObjects Then x = True
    If ActiveSheet.ProtectScenarios Then x = True
   
    sOpmerking = IIf(x = False, "protecting", "unprotecting")
       
    strPassword = InputBox("Enter the password for " & sOpmerking & " the worksheet", UCase(sOpmerking) & "...")
     
    For Each ws In ThisWorkbook.Sheets
        If x = False Then 'sheet is onbeveiligd!
            If ws.Name = "HOME" Then   'ff niet beveiligen... anders lukt de knopaanpassing niet!
                ws.Shapes("Knoppie").Select
                Selection.Text = "Unprotect All"
            End If
            ws.protect Password:=strPassword, userinterfaceonly:=True
            ws.EnableSelection = xlNoSelection
        Else:
            On Error GoTo Foutmelding
            ws.unprotect Password:=strPassword
            If ws.Name = "HOME" Then
                ws.Shapes("Knoppie").Select
                Selection.Text = "Protect All"
                Range("A1").Select
            End If
        End If
    Next

    Application.ScreenUpdating = True

Foutmelding:
    If Err.Number = 1004 Then
        MsgBox "Sorry, The password you supplied is not correct !!! Please try again.", 16, "Tessenderlo Group"
    End If
   
End Sub
(zie ook bijlage)

Groet, Leo

EDIT: Ik zie nu pas je post van 20:07 u. Ik zou het zo niet 1 2 3 weten... :( ??? Heb je een mogelijkheid om dat workbook te plaatsen (aub zonder vertrouwelijke info!!!)

EDIT2: 'k heb 't ff uitgetest met een ingevoegde 'chart-sheet'... En inderdaad! Daar loopt 't op stuk! Grrrr.... :-X Wie weet hoe je zoiets oplost?  ???
______________________________

Groet, Leo

Offline RedHead

  • Excel-Expert
  • Ambassadeur
  • *****
  • Berichten: 2.280
  • Geslacht: Man
  • Met Excel lukt 't wel.... (toch???)
Re: Protect sheets with button
« Reactie #5 Gepost op: 04 september 2007, 15:00:58 »
Nou... 3x is scheepsrecht?  ???
Snappen doe ik 't niet, maar 't is wél opgelost! 8)
Ik heb de variabele 'ws' niet meer gedeclareerd als 'worksheet' (= nu een commentaarregel) en vervolgens de 'ws.EnableSelection = xlNoSelection' in een if-statement gezet omdat een Chart-sheet deze functie niet kent.

Groet, Leo
______________________________

Groet, Leo

Offline Erik Van Geit

  • Excel-Expert
  • Ervaren lid
  • *****
  • Berichten: 306
  • Geslacht: Man
Re: Protect sheets with button
« Reactie #6 Gepost op: 04 september 2007, 17:30:33 »
Hallo,

Het is toch altijd best om de variabelen te declareren.

bijvoorbeeld
Dim ws As Object
even wat pseudocode ter verklaring
Dim str Als Struik

'PlantenVanDitBos bevat bomen, struiken, gras, mos, ...)

Voor Elke str In PlantenVanDitBos
str.Snoei
Volgende str
Aangezien je in het begin zegt dat elke "str" een struik is, kan je achteraf de andere planten niet meer correct behandelen.

terug naar de oorspronkelijke code:
Met deze declaratie
Dim ws As Worksheetzet je de deur open voor problemen, als je alle sheets wil behandelen.

sheets = allerlei soorten sheets en niet allen worksheets
For Each ws In ThisWorkbook.Sheets
Het volgende past correct bij de declaratie als "work"sheet, maar is niet wat je nodig hebt, want je wil alle bladen beveiligen.
For Each ws In ThisWorkbook.Worksheets


Nog een heel ander voorbeeld van "type" mismatch, wat misschien wat verheldering kan brengen over de betekenis "typen komen niet overeen".
Dim b As Long

b = 2 + "a"
2 appelen + 1 citroen = .....
KABOEM !!!!!
(deze laatste uitdrukking staat voor: "je code bugt" :))

beste groeten,
Erik

Offline RedHead

  • Excel-Expert
  • Ambassadeur
  • *****
  • Berichten: 2.280
  • Geslacht: Man
  • Met Excel lukt 't wel.... (toch???)
Re: Protect sheets with button
« Reactie #7 Gepost op: 04 september 2007, 20:21:35 »
Erik, Dank voor de héél heldere uitleg op z'n Erik's... Vooral het stukje van de struik was (in iedergeval voor mij!) een 'eye-opener'. Nooit geweten trouwens, dat er meerdere soorten sheets bestaan.
Zou je ook willen vertellen wat 'de oplossing' moet zijn in mijn stukje code? Dus een workbook met een combinatie van worksheets en chart-sheets.

Groet, Leo
______________________________

Groet, Leo

Offline Easy

  • Lid
  • *
  • Berichten: 47
  • Geslacht: Man
  • Only the sky is the limit
Re: Protect sheets with button
« Reactie #8 Gepost op: 04 september 2007, 21:47:16 »
Erik, RedHead,

Ja, dacht een simpel vraagje gesteld te hebben maar...

En ja ik had gisteren na heel wat puzzelen de code al veranderd van "dim ws As Worksheet" naar "dim ws As Object" en werkt nu zoals het moet.

Ook Erik zijn uitleg is perfect verstaanbaar. Zo simpel voorbeeld doet wel wonderen.

Maar natuurlijk wil ik dit nu verder uitbreiden.

Indien ik alles beveilig (met deze code) dan zou ik ook willen dat de rasterlijnen, rij- en kolomkoppen en bladtabs niet aangevinkt staan. (reden: presentatie op het sherm).

Is dit mogelijk?

Mvgr.
Windows Vista Business SP2 NLD
Intel(R) Core(TM)2 Quad  CPU   Q9550  @ 2.83GHz 2833
P5Q-E
NVIDIA GeForce 9600 GT 512MB 1680 x 1050
High Definition Audio-apparaat
Nr: 1 Model: SAMSUNG HD103UJ ATA Device

Offline RedHead

  • Excel-Expert
  • Ambassadeur
  • *****
  • Berichten: 2.280
  • Geslacht: Man
  • Met Excel lukt 't wel.... (toch???)
Re: Protect sheets with button
« Reactie #9 Gepost op: 04 september 2007, 22:12:09 »
Easy, ik begrijp ff niet waarom je de tabs wilt verwijderen... Er wordt eerst namelijk moeite gedaan om alle sheets te beveiligen, maar vervolgens kan je er niet meer bij...  ???
Maar ja, u vraagt, wij draaien! ;D

Groet, Leo
______________________________

Groet, Leo

Offline Erik Van Geit

  • Excel-Expert
  • Ervaren lid
  • *****
  • Berichten: 306
  • Geslacht: Man
Re: Protect sheets with button
« Reactie #10 Gepost op: 04 september 2007, 22:34:41 »
Volgens mij wil easy dat the "tabs" niet zichtbaar zijn
Erik, Dank voor de héél heldere uitleg op z'n Erik's... Vooral het stukje van de struik was (in iedergeval voor mij!) een 'eye-opener'. Nooit geweten trouwens, dat er meerdere soorten sheets bestaan.
Zou je ook willen vertellen wat 'de oplossing' moet zijn in mijn stukje code? Dus een workbook met een combinatie van worksheets en chart-sheets.

Groet, Leo
Het antwoord stond er al:
Dim als "object" ipv worksheet
Volgens mij wil easy dat the "tabs" niet zichtbaar zijn, maar de sheets zelf wel.

Easy, heb je al ooit gebruik gemaakt van de macro recorder? In dit geval zou dat erg handig zijn.

goeie nacht!
Erik

Offline Easy

  • Lid
  • *
  • Berichten: 47
  • Geslacht: Man
  • Only the sky is the limit
Re: Protect sheets with button
« Reactie #11 Gepost op: 04 september 2007, 22:35:44 »
RedHead,

Reden van verwijdering rasterlijnen, rij- en kolomkoppen en bladtabs is presentatie van de gegevens op het sherm. Men komt altijd in het hoofdtabblad terecht en daarop staan knoppen welke naar een tabblad verwijzen. (Werkboek heeft heel wat tabbladen, weet zelf niet of hier een beperking op is)

Het is de bedoeling dat de gebruiker enkel deze file kan inkijken( rapportage van cijfergegevens) en om dit er een beetje professioneel te laten uitzien deze vraag.

File is maandelijks aan een update toe en daarom protect/unprotect.

Uw code doet perfect wat ik vraag maar...kan toch nog handmatig de rasterlijnen etc. terug inschakelen via Tools/options....

Mvgr.

Windows Vista Business SP2 NLD
Intel(R) Core(TM)2 Quad  CPU   Q9550  @ 2.83GHz 2833
P5Q-E
NVIDIA GeForce 9600 GT 512MB 1680 x 1050
High Definition Audio-apparaat
Nr: 1 Model: SAMSUNG HD103UJ ATA Device

Offline Easy

  • Lid
  • *
  • Berichten: 47
  • Geslacht: Man
  • Only the sky is the limit
Re: Protect sheets with button
« Reactie #12 Gepost op: 04 september 2007, 22:44:22 »
Erik,

Correct: Tabs niet zichtbaar. (Zie ook vorige post)

En ja ik had dit via macro opname uitgevoerd maar had dan ook hetzelfde probleem dat deze door de gebruiker terug ingeschakeld kunnen worden via tools/options.

Mvgr.
Windows Vista Business SP2 NLD
Intel(R) Core(TM)2 Quad  CPU   Q9550  @ 2.83GHz 2833
P5Q-E
NVIDIA GeForce 9600 GT 512MB 1680 x 1050
High Definition Audio-apparaat
Nr: 1 Model: SAMSUNG HD103UJ ATA Device

Offline RedHead

  • Excel-Expert
  • Ambassadeur
  • *****
  • Berichten: 2.280
  • Geslacht: Man
  • Met Excel lukt 't wel.... (toch???)
Re: Protect sheets with button
« Reactie #13 Gepost op: 05 september 2007, 08:06:51 »
Easy, Erik, met mijn...
Citaat van: Leo
ik begrijp ff niet waarom je de tabs wilt verwijderen
...bedoelde ik niet het 'deleten' van de tabs, maar inderdaad het 'niet meer tonen van de worksheets'. Want als je de 'tabs' verwijderd/onzichtbaar maakt, KAN je dus ook niet meer op een normale manier naar je andere worksheets schakelen. Ik wist óók niet dat Easy daar aparte knoppen op de 'HOME'-sheet voor had bedacht.

Mijn persoonlijke idee zou dus eerder zijn om de sheets die je niet wilt tonen, te 'verbergen' via code ipv de tabs via Tools, Options... (te verbergen).

Voor wat betreft het uitschakelen van de mogelijkheid tot wijzigen van options... Je zou kunnen overwegen om het 'options'-menu via code uit het Tools-menu te halen als de sheet beveiligd is, en weer terug te zetten als de sheet: 'vrij' staat; gesloten wordt; niet 'actief' is. (dit vind ik persoonlijk nogal een paardenmiddel!!!)
Maarrrr... Hoever moet je gaan in het tegengaan van 'mogelijk-handelen-van-de-gebruiker'? ???

Groet, Leo
______________________________

Groet, Leo

Offline Easy

  • Lid
  • *
  • Berichten: 47
  • Geslacht: Man
  • Only the sky is the limit
Re: Protect sheets with button
« Reactie #14 Gepost op: 05 september 2007, 09:09:58 »
Leo,

Terugkomend op je vorige post waarin de code verwerkt zit om rasterlijnen etc. uit te schakelen.

Is het mogelijk om dit voor alle sheets toe te passen. Nu is het enkel de actieve sheet.(in mijn geval de sheet home).

Mvgr.

Ps. De mogelijkheid om dit definitief uit te schakelen bij opening van de file is een materie welke voor mij nog te moeilijk is om dit in code te zetten.
Windows Vista Business SP2 NLD
Intel(R) Core(TM)2 Quad  CPU   Q9550  @ 2.83GHz 2833
P5Q-E
NVIDIA GeForce 9600 GT 512MB 1680 x 1050
High Definition Audio-apparaat
Nr: 1 Model: SAMSUNG HD103UJ ATA Device

 


www.combell.com