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

Meerdere werkbladen automatisch beveiligen met wachtwoord?

Status
Niet open voor verdere reacties.

AJPotse

Gebruiker
Lid geworden
11 nov 2015
Berichten
36
Voor een groep vrijwilligers heb ik een werkmap gemaakt in Excel
Om te voorkomen dat (per ongeluk) de werkbladen ongeoorloofd worden gewijzigd wil ik ze beveiligen met een wachtwoord

De bestanden/werkmappen worden gemaakt in Excel 2010 32-bit Nederlandstalig
Deze bestanden/werkmappen worden gesynchroniseerd met Excel Online in OneDrive
Ieder bestand/werkmap bevat een variabel aantal werkbladen
Deze werkbladen zijn in iedere werkmap allen identiek

Het volgende heb ik tot nu toe kunnen realiseren:

Na het maken van een macro-opname met beveiliging van een werkblad d.m.v. een wachtwoord blijkt het wachtwoord slechts éénmalig te gelden.
De macro heb ik opgeslagen in Personal.xlsb en toegewezen aan een toets combinatie aangezien ik deze in meerdere bestanden/werkmappen wil gebruiken
Als ik vervolgens de macro (her)gebruik wordt weliswaar het werkblad beveiligd, maar helaas zonder wachtwoord
Ik kan nergens een optie vinden om alsnog een wachtwoord achteraf aan een beveiligd werkblad toe te kennen
Als ik de opties kies om de werkmap/het bestand te beveiligen dan kan het bestand niet in Excel Online op OneDrive worden geopend

Ik wil graag het volgende realiseren:

1. In iedere werkmap moeten alle werkbladen automatisch zowel ieder afzonderlijk als allen tegelijk kunnen worden worden beveiligd met een wachtwoord (zonder dit steeds afzonderlijk opnieuw te hoeven invoeren)
2. De, voor jullie gemak gemarkeerde, 'blauwe' cellen mogen worden beschreven (d.m.v. 'Ontgrendelde cellen selecteren'?) waarbij verder slechts het plaatsen van een hyperlink is toegestaan
3. Ook moet de beveiliging op alle werkbladen automatisch kunnen worden opgeheven zonder overal afzonderlijk het wachtwoord opnieuw te hoeven invoeren
4. Het wachtwoord zal regelmatig worden gewijzigd; er moet hiervoor een gebruiksvriendelijke aanwezig zijn d.m.v. (bijv.) een dialoogvenster
5. De bestandsextensie van de werkmap(pen) moet .xlsx blijven
6. De oplossing moet zo gebruiksvriendelijk mogelijk zijn.
7. De oplossing moet 'meegenomen' kunnen worden na een nieuwe installatie o.i.d. (dat kan een kwestie van copy/paste zijn?)

Als voorbeeld heb ik het eerste van de vier werkbladen in deze werkmap beveiligd zoals deze uiteindelijk gebruikt zal gaan worden door de vrijwilligers.

Ik ben zeer benieuwd of iemand een mooie, elegante oplossing aan kan dragen.

Alvast bedankt met een vriendelijke groet,

Hans
 

Bijlagen

  • Voorbeeld beveiliging.xlsx
    62,3 KB · Weergaven: 179
De macro om alle werkbladen te beveiligen met een wachtwoord is simpel genoeg:

Code:
Sub ProtectAll()
    Dim oSh Aas Worksheet
    For Each oSh in Worksheets
        Osh.Protect Password:="JeWachtwoord"
    Next
End Sub
 
Dankjewel voor je reactie Jan-Karel,

maar dan de rest nog!

Ik ben overigens verbaasd dat er geen standaard optie in Excel 2010 aanwezig is/lijkt om achteraf een wachtwoord mee te geven aan een beveiligd werkblad (zonder wachtwoord). Of is dit misschien in Excel 2013/2016 wél aanwezig?
Als tussenoplossing heb ik éénmalig een werkblad met wachtwoord op de juiste wijze beveiligd en dit vervolgens gekopieerd. Onhandig is echter dat soms de beveiliging er af moet worden gehaald, waarna 'mijn' macro weliswaar op de juiste wijze beveiligt maar zonder wachtwoord. Dat betekent dat bij ieder werkblad opnieuw de selectie moet worden uitgevoerd, waarna pas met wachtwoord weer beveiligd kan worden. En dat misschien 150 à 200 keer!.

Aangezien ik een relatieve leek ben op het gebied van Excel kom ik hier niet uit. Mijn hoop is dan ook op dit forum gevestigd.
 
Ik vind het helemaal niet zo onlogisch dat je niet achteraf een wachtwoord in kunt stellen nadat de werkbladen al zijn beveiligd, ik vind het niet zo voor de hand liggen om dat achteraf toe te voegen.

Verder snap ik het denk ik niet. Ik heb je een macro aangereikt waarmee je alle tabbladen beveiligt, MET wachtwoord. Vervang de jouwe door de mijne en je hebt je beveiliging er toch in no-time weer op?
En als je mijn macrootje kopieert en plakt, de naam verandert en vervolgens Protect vervangt door Unprotect, dan is die beveiliging er ook heel snel weer af.
 
Dank voor je input Jan-Karel!

Dat ziet er kort, krachtig én (zelfs voor mij) relatief eenvoudig uit.
Maar jouw code ontgrendelt toch niet de cellen zoals door mij hierboven genoemd bij punt 2.? Hoe krijg ik dat dan voor elkaar?
 
Het begint me enigszins te dagen (denk ik?)!

Jouw code moet waarschijnlijk op een bepaalde manier worden toegevoegd aan de code die ik d.m.v. 'Macro opnemen' voor mijn gevoel 'onder water' met toets-selecties heb gemaakt? Inmiddels heb ik deze, na wat googlen, kunnen vinden (zie bijlage).

Als mijn aanname juist is, hoe plak ik jouw code daar dan in zodat-ie werkt? Na wat copy/paste probeersels krijg ik nl. foutmeldingen. Zoals je ziet ben ik een 'nitwit' op het gebied van VBA.
 

Bijlagen

  • Macro toetsopname.txt
    2,6 KB · Weergaven: 163
Kort door de bocht: Gooi jouw macro weg en gebruik de mijne. Alleen de laatste twee regels van je code doen eigenlijk iets.

Als je mijn code in plaats van de jouwe plakt en dan terug gaat naar Excel dan kan je via alt+F8 bij de lijst met macros komen. Kies mijn macro en klik opties zodat je de sneltoets in kan stellen.
Om te zorgen dat de blauwe cellen bewerkt kunnen worden, selecteer je ze eenmalig met de hand en kies je (rechtsklik) celeigenschappen en haal je het vinkje weg (laatste tabje van het venster) bij geblokkeerd. Daarna de werkblad beveiliging instellen en je bent klaar.
 
Volgens mij heb ik, na lang zoeken, de oplossing gevonden!?!

Jan-Karel heeft weliswaar een welwillende poging gedaan mij de oplossing aan te reiken, maar helaas niet het hele stappenplan voor de leek uiteengezet. Er zit volgens mij ook een onjuistheid in zijn code (regel twee gaf rode tekst) waardoor ik het aanvankelijk maar niet voor elkaar kreeg. De code moet m.i. nl. zijn:

Sub ProtectAll()
Dim oSh As Worksheet
For Each oSh In Worksheets
oSh.Protect Password:="JeWachtwoord"
Next
End Sub

Aangezien er aardig wat geïnteresseerden (net als ik volstrekte leken op dit gebied?) lijken te zijn m.b.t. mijn vraag (op het moment van dit schrijven 197!) wil ik graag mijn bevindingen delen op dit forum.

Eerst het tabblad 'Ontwikkelaars' weergeven:

1.Klik op het tabblad Bestand.
2.Klik op Opties.
3.Klik op Lint aanpassen.
4.Schakel onder Lint aanpassen en onder Hoofdtabbladen het selectievakje 'Ontwikkelaars' in.

Vervolgens ga je naar het bestand 'Personal.xlsb' (tenminste als je dit in alle werkmappen wilt gebruiken) en typ je [Alt] + [F11].
Links boven zie je nu "Project - VBA-project" staan, met daar onder de tabbladen en ThisWorkbook. Als je op bijv. ThisWorkbook gaat staan dan kun je de codes invoegen in één of meerdere nieuwe modules via het menu "Invoegen, module".

Na opgeslagen te hebben kun je inderdaad met [Alt] + [F8] de betreffende macro('s) kiezen en laten uitvoeren.

Volgens mij heb ik het juiste stappenplan hierboven weergegeven. Uiteraard hou ik mij aanbevolen voor eventuele aanvullingen/suggesties/mooiere oplossingen e.d.

Alvast bedankt met een vriendelijke groet,

Hans
 
Wat is er anders aan de code dan die in #2 behalve dat je er een typo uit hebt gehaald?

Je kan het nog inkorten tot
Code:
Sub VenA()
For Each sh In Sheets
  sh.Protect "jewachtwoord"
Next sh
End Sub
 
Je moet 't allemaal maar nét weten als 't geen gesneden koek is VenA!

Voor mij zijn dit nl. de eerste schreden op een onbetreden pad. 't blijkt weliswaar een 'typo' te zijn, maar dat wist ik dus niet (evenals waar ik überhaupt e.e.a. moest gaan toevoegen).
Overigens is de bijdrage van Jan-Karel een hele belangrijke voor mij gebleken. Daardoor ben ik geprikkeld om flink te gaan zoeken hoe e.e.a. met de door hem aangedragen code te realiseren.
Dus dank ik jullie dan ook van harte voor de bijdrage(n). Inmiddels ben ik zo'n beetje waar ik zijn moet met het eindresultaat.

Deze discussie laat ik nog eventjes open staan. Misschien dat er nog meer interessante input volgt?

Groet,
Hans
 
Na een tijdje radiostilte heb ik toch weer een 'oneffenheidje' ontdekt m.b.t. de beoogde werking van de beveiliging van meerdere werkbladen.

De macro die ik als bijlage in een tekstbestand in een eerdere post van 27 november 2015 heb geplaatst werkt uitstekend, maar zonder wachtwoord. Echter wél met de mogelijkheid om hyperlinks in te voegen.

De tips van Jan Karel Pieterse tezamen met de ingekorte code van VenA (zijn post van 28 november 215) heb ik daarna toegepast. En inderdaad wordt alles in één keer beveiligd of juist onbeveiligd met een wachtwoord. Maar helaas blijkt dan de mogelijkheid om hyperlinks in te voegen helaas niet meer te werken.

Wie weet wat ik moet toevoegen (vermoedelijk aan de code van VenA?) om ook de hyperlink invoegmogelijkheid te behouden?

Alvast hartelijk dank voor jullie input met een vriendelijke groet,

Hans
 
bv zo

Code:
Sub VenA1()
For Each sh In Sheets
  sh.Protect "jewachtwoord", , , , , , , , , , 1
Next sh
End Sub
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan