Blad beveiliging opheffen adv de username

Status
Niet open voor verdere reacties.

Scripter

Gebruiker
Lid geworden
15 jun 2009
Berichten
65
Ik heb een (excel) bestand wat bestemd is als gedeelte werkmap. Iedere gebruiker heeft zijn eigen tabblad waar hij/zij data in kan voeren. De tabbladen van de "andere" gebruikers mag hij/zij niets invoeren.
Ik ben in ieder geval zo ver dat de username wordt ingelezen zodra het bestand wordt geopend [Environ("Username")].
Kan ik nu met deze waarde ervoor zorgen dat vba de beveiliging van alleen het gelijkname tabblad eraf haalt en dat de gebruiker dan automatisch naar dit tabblad wordt gestuurd?
In het voorbeeld is het bestand geopend door gebruiker Jan. VBA moet nu de beveiliging van tabblad Jan eraf halen (wachtwoord is gelijk aan gebruikersnaam = Jan) en dan naar dit tabblad toe gaan.
Jan mag dus niets in kunnen voeren in het tabblad van Piet.
Bekijk bijlage Map1.xls
Als Jan dan weer het bestand afsluit, moet de beveiliging van zijn tabblad er weer op.

Helaas zijn "mijn" gebruikers niet al te netjes met wachtwoorden, dus daarom wil ik dit in VBA hebben (in plaats van ieder een wachtwoord in te laten voeren).
 
Laatst bewerkt:
Waarom niet enkel het betreffende blad zichtbaar maken bij het openen en alle tabbladen verbergen voor sluiten
Code:
Private Sub Workbook_Open()
    For Each sh In ThisWorkbook.Sheets
        If sh.Name = Application.UserName Then sh.Visible = True
    Next
End Sub

Private Sub Workbook_BeforeClose(Cancel As Boolean)
    For Each sh In ThisWorkbook.Sheets
        If Not sh.Name = "Voorblad" Then sh.Visible = false
    Next
    ThisWorkbook.Save
End Sub
 
Laatst bewerkt:
Een optie waar ik nog niet op gekomen was. Maar... heb het getest: Nu gaat ie vanaf alle locaties (ongeacht de UserName) naar het tabblad "Voorblad". Dat is toch echt niet mijn UserName hier :D
Daarbij komt dat ik als "hoofdgebruiker" wel alle tabbladen wil zien (anders kan ik ze niet controleren...).

Toegevoegd: Verder gekeken en op deze optie gekomen:
Code:
Sub sheet_select()
Dim a As String
   a = VBA.Environ("USERNAME")
   Sheets(a).Select
End Sub

Gebruikers gaan nu in ieder geval naar hun "eigen" plekje... :)
Alleen als ik dit in Worksheet neerzet als Private Sub dan werkt ie niet. Voor nu opgelost door in Private sub de macro sheet_select te laten starten. Misschien niet zoals het hoort, maar het werkt.

Nu nog even de beveiliging zien te regelen...
 
Laatst bewerkt:
Waar had je eigenlijk de code gezet die ik je gegeven heb? Had je alle werkbladen behalve je voorblad verborgen en dan je bestand opgeslagen en afgesloten, zodat bij het openen de code zijn werk kan doen ?
 
Waar had je eigenlijk de code gezet die ik je gegeven heb? Had je alle werkbladen behalve je voorblad verborgen en dan je bestand opgeslagen en afgesloten, zodat bij het openen de code zijn werk kan doen ?

Opgeslagen in ThisWorkbook, maar hij ging echt niet naar het juiste tabblad bij binnenkomst.
Maar maakt niet uit, huidige oplossing (zie vorige stukje) werkt prima. Niks meer aan doen :P
In ieder geval dank voor het meedenken :thumb:
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan