Avatar billede carsten_bjerregaard Nybegynder
28. september 2011 - 11:07 Der er 17 kommentarer

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
28. september 2011 - 11:29 #1
Excel-version?
Avatar billede supertekst Ekspert
28. september 2011 - 11:31 #2
Måske kunne det gøres mere avanceret - idet brugernavnet - hvis dette er unikt - kunne styre adgang til områderne via VBA.
Avatar billede Tryphon Nybegynder
28. september 2011 - 12:04 #3
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".

Husk at skrive brugernavet i upper case.
Avatar billede carsten_bjerregaard Nybegynder
28. september 2011 - 12:30 #4
Hej

Det er excel 2003

Hej Tryphon - dit forslag ovenfor lyder meget interessant - tester det
Avatar billede carsten_bjerregaard Nybegynder
28. september 2011 - 12:56 #5
Hej Tryphon

Hvordan laver jeg referencer til forskellige sheets/ark?
Avatar billede Tryphon Nybegynder
28. september 2011 - 14:08 #6
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.
Avatar billede carsten_bjerregaard Nybegynder
28. september 2011 - 15:14 #7
Hej Tryphon

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
Avatar billede Tryphon Nybegynder
28. september 2011 - 15:45 #8
Netop. Du unprotecter jo kun første ark. Case skal være entydig. Altså ikke Case "BJERR02C" to gange i samme select case.

For din egen skyld så brug enten sheet nummer eller sheet navn. Ikke begge dele. Det gør koden uoverskuelig.

Prøv nedenstående:

Private Sub Workbook_Open() 
  Select Case UCase(Environ("Username"))
    Case "BJERR02C"
      Sheets(1).Unprotect "cbn"
      Cells.Locked = True
      Sheets(1).Range("a5:i5").Locked = False
      Sheets(1).Protect "cbn"

      Sheets(2).Unprotect "cbn"
      Cells.Locked = True
      Sheets(2).Range("a4:i4").Locked = False
      Sheets(2).Protect "cbn"

    Case "ZOELL00C"
      Sheets(1).Unprotect "cbn"
      Cells.Locked = True
      Sheets(1).Range("a2:i2").Locked = False
      Sheets(1).Protect "cbn" 
 
      Sheets(2).Unprotect "cbn"
      Cells.Locked = True
      Sheets(2).Range("a1:i1").Locked = False
      Sheets(2).Protect "cbn"
  End Select
End Sub
Avatar billede carsten_bjerregaard Nybegynder
28. september 2011 - 16:55 #9
Kan desværre kun få dette til at virke på første ark - håber at Tryphon eller en anden har en måde at inkludere alle ark..

Hvis dette ikke er muligt er jeg åben overfor andre forslag..go' aften
Avatar billede store-morten Ekspert
28. september 2011 - 22:35 #10
Prøv:
Private Sub Workbook_Open()

    Sheets(1).Unprotect "cbn"
    Sheets(1).Cells.Locked = True
    Sheets(1).Protect "cbn"
    Sheets(2).Unprotect "cbn"
    Sheets(2).Cells.Locked = True
    Sheets(2).Protect "cbn"
   
Dim vInput
Dim bKode As Boolean

On Error GoTo ErrorHandle:

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
 

    Case "1234"
      Sheets(1).Unprotect "cbn"
      Sheets(1).Cells.Locked = True
      Sheets(1).Range("a5:i5").Locked = False
      Sheets(1).Protect "cbn"

      Sheets(2).Unprotect "cbn"
      Sheets(2).Cells.Locked = True
      Sheets(2).Range("a4:i4").Locked = False
      Sheets(2).Protect "cbn"
     
    Case "4321"
      Sheets(1).Unprotect "cbn"
      Sheets(1).Cells.Locked = True
      Sheets(1).Range("a2:i2").Locked = False
      Sheets(1).Protect "cbn"

      Sheets(2).Unprotect "cbn"
      Sheets(2).Cells.Locked = True
      Sheets(2).Range("a1:i1").Locked = False
      Sheets(2).Protect "cbn"
     
    Case Else
      MsgBox "Kode findes ikke?"
        Workbook_Open
   
    End Select

Exit Sub
ErrorHandle:
MsgBox Err.Description & " Procedure BedOmEnKode"

End Sub

Sub IndTastKode()
Workbook_Open
End Sub

Eller prøv:
Tilføj Sheets(1).Cells.Locked = True
i Tryphon´s kode
Avatar billede carsten_bjerregaard Nybegynder
28. september 2011 - 22:34 #11
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?
Avatar billede store-morten Ekspert
28. september 2011 - 22:43 #12
Sheets("Ark1") henviser til arket med navnet: Ark1
Sheets(1) henviser til Ark1 uanset navn.
Avatar billede Tryphon Nybegynder
29. september 2011 - 08:45 #13
# 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.
Avatar billede carsten_bjerregaard Nybegynder
11. oktober 2011 - 12:16 #14
Hej Tryphon
Har brug for vejledning i hvordan jeg tildeler dig pointene
Avatar billede carsten_bjerregaard Nybegynder
11. oktober 2011 - 12:18 #15
ud fra min "indslag" ovenfor - formoder du skal requeste point'ene
Avatar billede Tryphon Nybegynder
11. oktober 2011 - 15:11 #16
OK. Hermed svar :-)
Avatar billede store-morten Ekspert
12. oktober 2011 - 21:32 #17
Avatar billede Ny bruger Nybegynder

Din løsning...

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.

Loading billede Opret Preview
Kategori
Excel kurser for alle niveauer og behov – find det kursus, der passer til dig

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester