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

Excel tabbladen beveiligen met wachtwoord

Status
Niet open voor verdere reacties.

schulp

Nieuwe gebruiker
Lid geworden
10 feb 2016
Berichten
3
Hi,

Ik heb een probleem waar ik een simpele oplossing voor zoek. Ik heb een Excel bestand opgesteld met 5 verschillende tabbladen. Is het mogelijk om de 5 verschillende tabbladen te beveiligen met een uniek wachtwoord? Dus als ik het Excel bestand verspreid dat ik persoon A enkel toegang kan geven voor tabblad 1 via een wachtwoord, persoon B enkel toegang kan geven voor tabblad 2 via een wachtwoord, etc. Dus eigenlijk als je op een tabblad klikt dat er dan wordt gevraagd om een wachtwoord. Belangrijk is dat de tabbladen in het Excel bestand zichtbaar blijven en niet worden verborgen.

Ik heb de methode zoals beschreven in dit topic: http://www.helpmij.nl/forum/showthr...verbergen-en-weer-zichtbaar-maken-(en-houden) gelezen en geprobeerd, maar dit sluit niet aan bij mijn wensen. Technisch te omslachtig aangezien ik hiermee op grote schaalgrootte (+/- 400 excel documenten met daarin 5 tabbladen met unieke wachtwoorden, waarin mensen zelf werken) wil opstellen.

Is dit haalbaar? Alvast bedankt voor het meedenken.
 
Rechtsklikken op een tabblad, en <Blad beveiligen> kiezen. Je kunt voor elk blad een eigen wachtwoord opgeven.
 
Heb ook nog even een simpele macro gemaakt die je sheets beveiligt met de tabbladnaam + WW. En ook weer vrij maakt. Wellicht heb je er wat aan.
Code:
Sub Macro1()
Dim ws As Worksheet

    For Each ws In ActiveWorkbook.Worksheets
        ws.Unprotect ws.Name & "WW"
    Next ws
       
    For Each ws In ActiveWorkbook.Worksheets
        ws.Protect ws.Name & "WW", DrawingObjects:=True, Contents:=True, Scenarios:=True
    Next ws
End Sub
 
Ik had nou net begrepen dat de bladen niet verborgen mogen worden :)
Belangrijk is dat de tabbladen in het Excel bestand zichtbaar blijven en niet worden verborgen.
 
Haha, goed gelezen,
Maar dan heeft misschien iemand anders er nog wat aan.
 
Heb ook nog even een simpele macro gemaakt die je sheets beveiligt met de tabbladnaam + WW. En ook weer vrij maakt. Wellicht heb je er wat aan.
Code:
Sub Macro1()
Dim ws As Worksheet

    For Each ws In ActiveWorkbook.Worksheets
        ws.Unprotect ws.Name & "WW"
    Next ws
       
    For Each ws In ActiveWorkbook.Worksheets
        ws.Protect ws.Name & "WW", DrawingObjects:=True, Contents:=True, Scenarios:=True
    Next ws
End Sub

Ik ben geen ster met excel en werk nooit met macro's. Hoe krijg ik deze macro er in? En kan ik dan voor elk afzonderlijk tabblad een ander wachtwoord kiezen? Alvast bedankt.

@Cobbe, ook bedankt voor jouw input. Helaas is dat inderdaad niet wat ik zoek.
 
Zulke wachtwoorden zijn met een simpel VBA'tje in een paar seconden verwijderd....
Dus als het om leken gaat geen probleem, maar als je denkt dat niemand bij de andere gegevens komt... vergeet het....
 
@andre@home,
Als de code zo simpel is plaats het dan eventjes. Zonder VBA kan ook:cool:

@schulp,
Als je enige sturing wil geven aan wie wat in welk blad mag doen kan je het beste dmv VBA gebruik maken van de Windows login van de gebruiker. Environ("Username")
 
Bron staat erbij zoals het hoort...
Eigenlijk breek je een nieuwe opname v/e macro af en met de vba editor plaats je de code erin.
Als je geen tabbladen aan mag maken... is het lastiger maar niet onmogelijk... wees creatief en je bent er zo uit.
Heb je eenmaal dat nieuwe tabblad dan kun je verder.
ik heb niet uitgetest of daar een andere oplossing voor is, mijn oplossing daarvoor was super simpel en snel dus geen tijd in gestoken (was ooit in een ander topic kwam de vraag of zo.... of ik dat wel kon.. Het bewijs heb ik toen gepost dat met beveiliging er een tab bij kwam... hoe gedaan... tja dan is de grap van mijn inbreng dat topic er af.. VenA: jammer... maar ik was het niet vergeten... ;)

Tav van het ww ... dat kun je zo vinden... is niet mijn vinding, zoals gezegd. Dus post ik het hier.
Aanpast obv werk van: Bob McCormic door Jason S. De link de erin staat gaf vroeger nog wel eens pop ups... gevaarlijk??? t'is dat je het weet.

Open the excel file which is password protected and goto Macro's (I am
using Office 2007 so the menu's maybe different View >> Macros). Click
on "Record Macro >> OK" and then click on "Stop Recording" from the same
menu. Now goto "View Macros", you will find a Macro with a default name
E.g. Macro1 - Select the macro name and click on Edit. Now a Visual
Basic Editor opens up. Re-place the default code and Paste the below
code.

Finally, run the Macro(View >> Macros >> View Macros >> Run). You will
get the password of the protected workbook and worksheet in Excel. I
have tested the above in Microsoft Office Excel XP / 2003 / 2007

Code:
Sub Macro1()
'
' Breaks worksheet and workbook structure passwords. Jason S

' probably originator of base code algorithm modified for coverage

' of workbook structure / windows passwords and for multiple passwords

' Jason S http://jsbi.blogspot.com

' Reveals hashed passwords NOT original passwords

Const DBLSPACE As String = vbNewLine & vbNewLine

Const AUTHORS As String = DBLSPACE & vbNewLine & "Adapted from Bob
McCormick base code by" & "Jason S http://jsbi.blogspot.com"

Const HEADER As String = "AllInternalPasswords User Message"

Const VERSION As String = DBLSPACE & "Version 1.0 8 Sep 2008"

Const REPBACK As String = DBLSPACE & "Please report failure to
jasonblr@gmail.com "

Const ALLCLEAR As String = DBLSPACE & "The workbook should be cleared"

Const MSGNOPWORDS1 As String = "There were no passwords on " & AUTHORS &
VERSION

Const MSGNOPWORDS2 As String = "There was no protection to " & "workbook
structure or windows." & DBLSPACE


Const MSGTAKETIME As String = "After pressing OK button this " & "will
take some time." & DBLSPACE & "Amount of time " & "depends on how many
different passwords, the "



Const MSGPWORDFOUND1 As String = "You had a Worksheet " & "Structure or
Windows Password set." & DBLSPACE & "The password found was: " &
DBLSPACE & "$$" & DBLSPACE & "Note it down for potential future use in
other workbooks by " & "the same person who set this password." &
DBLSPACE & "Now to check and clear other passwords." & AUTHORS & VERSION

Const MSGPWORDFOUND2 As String = "You had a Worksheet " & "password
set." & DBLSPACE & "The password found was: " & DBLSPACE & "$$" &
DBLSPACE & "Note it down for potential " & "future use in other
workbooks by same person who " & "set this password." & DBLSPACE & "Now
to check and clear " & "other passwords." & AUTHORS & VERSION

Const MSGONLYONE As String = "Only structure / windows " & "protected
with the password that was just found." & ALLCLEAR & AUTHORS & VERSION &
REPBACK

Dim w1 As Worksheet, w2 As Worksheet

Dim i As Integer, j As Integer, k As Integer, l As Integer

Dim m As Integer, n As Integer, i1 As Integer, i2 As Integer

Dim i3 As Integer, i4 As Integer, i5 As Integer, i6 As Integer

Dim PWord1 As String

Dim ShTag As Boolean, WinTag As Boolean

Application.ScreenUpdating = False

With ActiveWorkbook

WinTag = .ProtectStructure Or .ProtectWindows

End With

ShTag = False

For Each w1 In Worksheets

ShTag = ShTag Or w1.ProtectContents

Next w1

If Not ShTag And Not WinTag Then

MsgBox MSGNOPWORDS1, vbInformation, HEADER

Exit Sub

End If

MsgBox MSGTAKETIME, vbInformation, HEADER

If Not WinTag Then

MsgBox MSGNOPWORDS2, vbInformation, HEADER

Else

On Error Resume Next

Do 'dummy do loop

For i = 65 To 66: For j = 65 To 66: For k = 65 To 66

For l = 65 To 66: For m = 65 To 66: For i1 = 65 To 66

For i2 = 65 To 66: For i3 = 65 To 66: For i4 = 65 To 66

For i5 = 65 To 66: For i6 = 65 To 66: For n = 32 To 126

With ActiveWorkbook

.Unprotect Chr(i) & Chr(j) & Chr(k) & Chr(l) & Chr(m) & Chr(i1) &
Chr(i2) & Chr(i3) & Chr(i4) & Chr(i5) & Chr(i6) & Chr(n)

If .ProtectStructure = False And .ProtectWindows = False Then

PWord1 = Chr(i) & Chr(j) & Chr(k) & Chr(l) & Chr(m) & Chr(i1) & Chr(i2)
& Chr(i3) & Chr(i4) & Chr(i5) & Chr(i6) & Chr(n)

MsgBox Application.Substitute(MSGPWORDFOUND1, "$$", PWord1),
vbInformation, HEADER

Exit Do 'Bypass all for...nexts

End If

End With

Next: Next: Next: Next: Next: Next

Next: Next: Next: Next: Next: Next

Loop Until True

On Error GoTo 0

End If

If WinTag And Not ShTag Then

MsgBox MSGONLYONE, vbInformation, HEADER

Exit Sub

End If

On Error Resume Next

For Each w1 In Worksheets

'Attempt clearance with PWord1

w1.Unprotect PWord1

Next w1

On Error GoTo 0

ShTag = False

For Each w1 In Worksheets

'Checks for all clear ShTag triggered to 1 if not.

ShTag = ShTag Or w1.ProtectContents

Next w1

If ShTag Then

For Each w1 In Worksheets

With w1

If .ProtectContents Then

On Error Resume Next

Do 'Dummy do loop

For i = 65 To 66: For j = 65 To 66: For k = 65 To 66

For l = 65 To 66: For m = 65 To 66: For i1 = 65 To 66

For i2 = 65 To 66: For i3 = 65 To 66: For i4 = 65 To 66

For i5 = 65 To 66: For i6 = 65 To 66: For n = 32 To 126

.Unprotect Chr(i) & Chr(j) & Chr(k) & Chr(l) & Chr(m) & Chr(i1) &
Chr(i2) & Chr(i3) & Chr(i4) & Chr(i5) & Chr(i6) & Chr(n)

If Not .ProtectContents Then

PWord1 = Chr(i) & Chr(j) & Chr(k) & Chr(l) & Chr(m) & Chr(i1) & Chr(i2)
& Chr(i3) & Chr(i4) & Chr(i5) & Chr(i6) & Chr(n)

MsgBox Application.Substitute(MSGPWORDFOUND2, "$$", PWord1),
vbInformation, HEADER

'leverage finding Pword by trying on other sheets

For Each w2 In Worksheets

w2.Unprotect PWord1

Next w2

Exit Do 'Bypass all for...nexts

End If

Next: Next: Next: Next: Next: Next

Next: Next: Next: Next: Next: Next

Loop Until True

On Error GoTo 0

End If

End With

Next w1

End If

MsgBox ALLCLEAR & AUTHORS & VERSION & REPBACK, vbInformation, HEADER
'
End Sub
 
Zullen we gewoon de vraag van TS beantwoorden? Heeft-ie volgens mij meer aan dan aan macro's om zijn eigen beveiling te kraken...
Ik ben geen ster met excel en werk nooit met macro's. Hoe krijg ik deze macro er in? En kan ik dan voor elk afzonderlijk tabblad een ander wachtwoord kiezen?
In de berichtjes hierboven zie je vermoedelijk al hoe je een macro aanmaakt en terugvindt. <Alt>+<F11> brengt je naar de VBA editor, en via <Invoegen>, <Module> kun je een module invoegen waar je de macro's die je nodig hebt in plakt. Mijn macro an sich doet niet veel nuttigs: gooit eerst nodeloos de beveiliging er af, en zet hem erna weer aan. Niet erg nuttig dus, maar je kunt er 2 aparte macro's van maken die wél nuttig zijn.
Eigen wachtwoorden kun je uiteraard altijd gebruiken; ik gebruik even de naam van het werkblad met WW er achter. Maar je kunt zelf een lijstje maken van wachtwoorden die je bijvoorbeeld in een array string zet voor de respectievelijke tabbladen. Of je gebruikt een apart tekstbestand met wachtwoorden dat je uitleest. Opties genoeg.
Wil je de macro's beveiligen voor andere gebruikers, dan kun je ook de VBA editor van een wachtwoord voorzien. Dat is ook te kraken, maar mensen die willen (en kunnen) kraken, doen dat toch wel. Daar maak je je bestand waarschijnlijk niet voor :).
 
De gegeven macro om tabbladbeveliging eraf te halen werkt vanaf Excel 2013 niet meer. Maar ook daar zijn simpele work-arounds voor beschikbaar. Per tabblad een seconde of 10 werk als je het met de hand doet.
 
Ik heb dankzij youtube nu de volgende macro gebruikt:

Private Sub CommandButton1_Click()
If Me.TextBox1.Value = "test" Then
Unload Me
Sheets("1").Visible = True
Sheets("2").Visible = True
Sheets("3").Visible = True
Sheets("4").Visible = True
Sheets("5").Visible = True
End If
If Me.TextBox1.Value = "test1" Then
Unload Me
Sheets("1").Visible = True
Sheets("2").Visible = False
Sheets("3").Visible = False
Sheets("4").Visible = False
Sheets("5").Visible = False
End If
If Me.TextBox1.Value = "test2" Then
Unload Me
Sheets("1").Visible = False
Sheets("2").Visible = True
Sheets("3").Visible = False
Sheets("4").Visible = False
Sheets("5").Visible = False
End If
If Me.TextBox1.Value = "test3" Then
Unload Me
Sheets("1").Visible = False
Sheets("2").Visible = False
Sheets("3").Visible = True
Sheets("4").Visible = False
Sheets("5").Visible = False
End If
If Me.TextBox1.Value = "test4" Then
Unload Me
Sheets("1").Visible = False
Sheets("2").Visible = False
Sheets("3").Visible = False
Sheets("4").Visible = True
Sheets("5").Visible = False
End If
If Me.TextBox1.Value = "test5" Then
Unload Me
Sheets("1").Visible = False
Sheets("2").Visible = False
Sheets("3").Visible = False
Sheets("4").Visible = False
Sheets("5").Visible = True
Else
Me.Hide
Retry = MsgBox("Opnieuw proberen?", vbYesNo, "Retry?")
Select Case Retry
Case Is = vbYes
Me.TextBox1.Value = ""
Me.TextBox1.SetFocus
Me.Show
Case Is = vbNo
Unload Me
End Select
End If
End Sub

Alleen als ik een password invul krijg ik de volgende melding:Naamloos.jpg

Als ik vervolgens op "fouten opsporen" klik dan geeft ie aan dat het aan de Me.Hide ligt.

Als ik klik op "einde" dan geeft ie enkel de juiste sheet weer zoals beschreven in de macro. Dus opzich werkt dat allemaal prima, maar niet erg gebruiksvriendelijk dat je continu op einde moet klikken. Is vast een oplossing voor.

Waar zit de fout in mijn macro? Alvast bedankt voor jullie hulp
 
Laatst bewerkt:
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan