Beskyttelse af ark men med mulighed for brugere at indtaste i "egne" felter
Har behov for at beskytte et excel ark - hvilket i udgangspunktet er nemt nok men med undtagelser. Forskellige områder skal være "skrivbare" for forskellige brugere.
Dvs. at; Carsten skal have adgang til område 1. Peter skal have adgang til område 2. (Vi må ikke have adgang til hinandens)
Jeg har "googlet" dette - og det virker i udgangspunktet nemt nok
1) Højreklik - formater celler - beskyttelse og fjern flueben på de celler der skal være unikke.
2) Funktioner - Beskyttelse - Tillad brugere at redigere områder - vælger nyt - markere et område og indsætter et password (den mere elegante metode er så at under tilladelser vælger jeg de brugere (fra AD) som skal have adgang til de forskellige områder.
3) derefter vælger jeg; beskyt ark
Resultatet er at arket er låst som ønsket, men de felter der skulle være brugerspecifikke/"felt-password" - (dvs carsten har adgang til nogle felter og peter har adgang til andre felter som defineret) er tilgængelige for alle. - og man bliver ikke bedt om at taste password
Så hvad er det jeg gør forkert eller har jeg misforstået mulighederne i beskyttelse i xls.
Ser frem til svar der kan hjælpe mig videre i processen
Hvis du åbner det pågældende Excel ark, trykker på F11, så Visual Basic Editoren åbner, kan du dobbeltklikke på "ThisWorkbook".
Her lægger du så denne stump kode
Option Explicit
Private Sub Workbook_Open() Sheets(1).Unprotect "Password" Cells.Locked = True Select Case UCase(Environ("Username")) Case "BRUGERNAVN 1" Range("a1:b12").Locked = False Case "BRUGERNAVN 2" Range("c1:d12").Locked = False End Select Sheets(1).Protect "Password" End Sub
Koden starter, når Excel arket åbnes og gør følgende: 1) Fjerner arkbeskyttelsen med kodeord "Password" 2) Låser alle celler 3) Finder Windows brugernavnet Hvis brugeren er BRUGERNAVN 1, låser den celle A1:B12 op. Hvis brugeren er BRUGERNAVN 2, låser den celle C1:D12 op. 4) Beskytter arket med kodeord "Password".
sheets("arknavn").range("A1:b12") eller sheets(1).range("a1:b12") afhængig af , om du vil referere til arket som tekst eller hvad nummer i rækken det er.
Jeg har forsøgt at følge din vejledning om at referere til ark. Men koden virker kun på første ark - tror måske det er fordi at første del af koden:
Private Sub Workbook_Open()Sheets(1).Unprotect "cbn" Kun "låser" det første ark? - hvordan gør man det for hele mappen?
Private Sub Workbook_Open() Sheets(1).Unprotect "cbn" Cells.Locked = True Select Case UCase(Environ("Username")) Case "BJERR02C" Sheets("Ark1").Range("a5:i5").Locked = False Case "ZOELL00C" Sheets("Ark1").Range("a2:i2").Locked = False Case "BJERR02C" Sheets("Ark2").Range("a4:i4").Locked = False Case "ZOELL00C" Sheets("Ark2").Range("a1:i1").Locked = False End Select Sheets(1).Protect "cbn" End Sub
vInput = InputBox("For at få tilladelse til at redigere i dit område:", "Indtast din kode")
Select Case vInput
Case "" Tom = MsgBox("Du har valgt at Chancel." & vbCrLf & _ "Eller der er ikke tastet en kode." & vbCrLf & _ "Vil du forsøge igen?", vbYesNo) If Tom = vbYes Then Workbook_Open Else Exit Sub End If
Hej Tryphon Havde åbenbart ikke fået opdateret exploren - tak for info 15.45. Har lige et, nok elementært, spørgsmål- men du anbefaler at jeg simplificerer koden ved ikke både bruge navn og nummer. hvad mener du præcist her: er det fordi jeg kalder dem ark1 - så ark er navn og 1 er nummer?
# 10 Ja, netop. Enten skal du bruge arknavn eller også arknummer. Jeg foretrækker faktisk altid at bruge arknavn, for så er jeg sikker på, altid at ramme det rigtige ark, hvis jeg bytter rundt på arkene eller tilføjer nye ark imellem de andre.
Store-Morten har ret. Du bør låse cellerne med sheets(1).cells.locked = True (Eller Sheets("ark 1").locked = True). Ellers vil koden forsøge at arbejde i dit aktive ark.
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.