Avatar billede kmlp Nybegynder
03. oktober 2001 - 14:10 Der er 12 kommentarer og
1 løsning

Sortering af beskyttet ark i Excel

Jeg skal distribuere et regneark til et antal brugere, som skal indtaste deres egne data i arket. Af forskellige grunde er arkets indhold nødt til at være beskyttet med en adgangskode, som brugerne ikke kender, men samtidig skal brugerne kunne sortere rækkerne efter sorteringskriterier, som de frit skal kunne vælge selv. Problemet er i første omgang, at beskyttelsen af arket umiddelbart forhindrer adgangen til Excels sorteringsfunktion, også selv om der kun skal sorteres på celler, som ikke er låst.
Jeg tænker mig, at man kan skrive en makro, som først fjerner beskyttelsen, dernæst præsenterer en inputbox til indtastning af sorteringskriterier (gerne/helst Excels egen - i hvert fald nødig med færre kriterier) og endelig beskytter arket igen. Men hvordan skal den se ud - og kan man forhindre brugerne i at se adgangskoden i VBA-scriptet?
Eller er der en helt anden og måske enklere løsning på problemet?
PS: Det er min debut som spørger - er jeg for fedtet med pointene? 
Avatar billede klatten Nybegynder
03. oktober 2001 - 14:13 #1
Hvad med at nøjes med et password til at åbne excel-filen...altså lad være med at beskytte de enkelte celler?
Avatar billede janvogt Praktikant
03. oktober 2001 - 14:34 #2
Det kan sagtens lade sig gøre.
Man kan lægge et særskilt password på VBA-koden, så brugeren ikke kan lure selve ark-koden.
03. oktober 2001 - 15:00 #3
Password ligges på koden i VBA editoren via Tools/VBA-project propreties underfanebladet Protection.

Den nemmeste måde at lure hvordan en makro skal se (i grundtræk) er ved at starte båndoptageren - udføre handlingen - stoppe båndoptageren, og lure koden. Evt. rette den lidt til.
Avatar billede lrp Nybegynder
03. oktober 2001 - 15:04 #4
kmlo >> Jamen, velkommen til Eksperten. Jeg synes 30 points er rimeligt nok for et spørgsmål af denne type - men hvis du ikke får den respons, du havde håbet på, kan du altid afsætte flere points ved at bruge linket ude i venstre side.
03. oktober 2001 - 15:06 #5
Det er vist ikke nødvendigt med flere point - vi giver kmlo \"arbejds\"svar, så kmlo selv kan lave det. 30 helt OK.
Avatar billede janvogt Praktikant
03. oktober 2001 - 15:10 #6
Følgende kode bruges til at indsætte password

ActiveWorkbook.Protect Password := \"drowssap\"

Denne fjerne den igen:
ActiveWorkbook.Unprotect Password := \"drowssap\"
Avatar billede kmlp Nybegynder
03. oktober 2001 - 16:01 #7
Jeg takker for tippet om beskyttelse af VBA-koden, men i øvrigt skal jeg vist uddybe hovedproblemet lidt:
Det er ingen sag at lave en makro som 1) fjerner arkbeskyttelsen, 2) sorterer efter kriterier, som jeg selv koder i makroen, og 3) beskytter arket igen.
Den kan f.eks. se sådan ud (med sortering af række 5-10 efter kolonne A (stigende) og dernæst kolonne B (faldende) samt adgangskoden \"1\"):
    ActiveSheet.Unprotect Password:=\"1\"
    Rows(\"5:10\").Select
    Selection.Sort Key1:=Range(\"A5\"), Order1:=xlAscending, Key2:=Range(\"B5\") _
        , Order2:=xlDescending
    ActiveSheet.Protect Password:=\"1\"
Men hvis brugeren selv skal vælge sorteringskriterierne, hvad gør man så? Jeg kunne sikkert indsætte 6 på hinanden følgende inputboxe med tilknyttede variable, hvor brugeren skal indtaste 3 kolonnebogstaver og 3 sorteringsrækkefølger, og så bruge variabelværdierne i VBA-koden, men det virker meget gumpetungt og brugerfjendtligt.
Findes der ikke noget smartere, som f.eks. hvis man kunne afbryde makroen, når Excels egen sorterings-dialogbox venter på input (det kan man måske også, men hvordan?).
Eller en helt tredie slags løsning - blot brugeren kan få lov at sortere ulåste data i et beskyttet ark?
Fint for mig med \"arbejdssvar\", jeg mangler \"bare lige\" det rigtige spor at forfølge!
PS: Kan man vente med at afvise/acceptere/give points, eller skal man gøre det løbende?
03. oktober 2001 - 16:28 #8
Jeg har ikke testet følgende, men det kan du jo gøre :-) Jeg tror det vil virke.

Sub SorteringsTEST()
    ActiveSheet.Unprotect Password:=\"1\"
   
    Rows(\"5:10\").Select
    Application.Dialogs(xlDialogSort).Show
   
    ActiveSheet.Protect Password:=\"1\"
End Sub
Avatar billede kmlp Nybegynder
03. oktober 2001 - 16:57 #9
Stor tak til flemmingdahl - det virker.
30 points på vej
03. oktober 2001 - 16:59 #10
Dejligt - blot accepter mit svar :-)
Avatar billede janvogt Praktikant
03. oktober 2001 - 19:25 #11
En anden mulighed var at lave en userform, hvorfra man fra nogle rullelister kunne vælge sine kriterier.
03. oktober 2001 - 21:57 #12
Det er rigtigt jan, men det vil vist være at over programmere (noget jeg selv gør tit!!!) hehe
Avatar billede janvogt Praktikant
04. oktober 2001 - 09:21 #13
Det har du ret i flemming, men til gengæld ville det være noget mere brugervenligt. Desuden er man så heller ikke bundet af de få kriterier som der er mulighed for i standard dialogboksen.

Men ok, det ligger vist ud over 30 point grænsen ....
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
IT-kurser om Microsoft 365, sikkerhed, personlig vækst, udvikling, digital markedsføring, grafisk design, SAP og forretningsanalyse.

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



IT-JOB

Formpipe Software A/S

Hunterprofil

Teknika - Copenhagen College of Technology Management and Marine Engineering

It-supporter