27. marts 2003 - 16:29Der er
40 kommentarer og 1 løsning
Dynamisk Password
Jeg har lavet et regneark, som jeg meget gerne vil have beskyttet mest muligt.
Det er forretningsfortroligt, og derfor er det vigtigt, hvis der er folk som forlader virksomheden, at de ikke kan tage regnearket med.
Imens de er i virksomheden SKAL de have fuld adgang til at downloade det og indtaste i det.
Jeg har overvejet forskellige muligheder.
Er det muligt at lave en form for dynamisk password generator og publicere et password ugentligt på intranet?
Kan man under opstart kode noget der gør, at den ser efter en bestemt fil (skjuler koden), og hvis filen ikke er tilstedeværende, kan filen ikke starte op.
Hvad gør jeg?
Jeg vil meget gerne bede om et udførligt svar og tilbyder gerne flere point om nødvendigt!
Jeg ved ikke om denne mulighed holder. Lav fx en fil, der hedder Beskyt eller lignende. Gem den på serveren, evt. som skjult fil.
I den fil du vil beskytte kan du så lægge denne kode på mappens Workbook_open hændelse. Tryk Alt+F11. Dobbeltklik på ThisWorkbook og indsæt koden:
Private Sub Workbook_Open() a = Dir("c:\dokumenter\beskyt.xls") If a = "" Then ActiveWorkbook.Close Else Exit Sub End If End Sub
Den undersøger om en given fil findes. Gør den det åbnes arket, findes den ikke, lukkes det med det samme igen.
Derefter skal du højreklikke på VBA project (filnavn) for filen med koden. Vælg VBAProperties - Protection. Vælg Lock for Viewing. Indtast en adgangskode.
Gem arket og åbn det igen. Nu kan man kun komme ind og se koden, og dermed navn og sti til det dokument, der skal findes, hvis man kender adgangskoden til kodeprojektet.
Glem det. Det holder ikke. Ingen kodeløsning vil holde - desværre. Hvis man vælger at åbne dokumentet uden makroer afspilles koden slet ikke. Du er nok nødt til på en eller anden måde at lægge din beskyttelse helt uden for Excel.
Lige gyldigt hvad man gør med et Excel regneark kan man på den eller anden måde hente indholdet ud af det. Og passwords på Excel regneark er meget nemme at bryde.
Du kunne måske lave den tidsafhængig, således at du f.eks. hver uge skulle ind i masteren og "forlænge" fristen.
Dette sammen med selvfølgelig et almindeligt password skulle så give adgang. Så ville du slippe for at samtlige bruge skulle ændre password alt for tit.
Du har jo også mulighed for at lægge beskyttelse på VBA-delen, så der stadig vil være mulighed for at lave noget, som kun du har adgang til at fjerne/redigere.
Men janvogt, opstår der så ikke det problem som jeg har skitseret - atlså at man kan åbne dokumentet uden makroer, og på den måde gå helt uden om VBA delen?
Iøvrigt er der aldrig nogen sikkerhed der er 100%. Mensjeg har ret til at åbne arket, kopierer jeg hele indholdet over i et andet ark, som jeg selv laver - uden beskyttelse. Og så har jeg det hele til rådighed når jeg holder op.
Hvis du opgraderer til Excel 2002 kan man spærre for adgangen til at vælge (og dermed kopiere).
Hvis man gemmer arket med beskyttelsen som standard, og lader en makro låse op for arket hvis en bestemt fil (på en bestemt computer) indeholder en bestemt frase, så vil man ikke kunne kopiere noget hvis filen befinder sig uden for netværket.
Men det beskytter selvfølgelig ikke for kopiering over i et nyt ark, mens man sidder på kontoret. Man skal jo også kunne arbejde med det. Det nærmeste du kan komme er at gøre det besværligt. Fx ved at en makro låser for at vælge celler, hvergang en celle mister fokus = der er altid kun én celle der kan kopieres. Så tager det i det mindste lang tid at kopiere det hele.
Hvad er vigtigst her ? at de ikke kan bruge regnearket senere eller at de ikke kan tage data med hjem.
Hvis det er det sidste er det rigtigt at man bare kan kopiere celler eller kopiere arket eller evt. udskrive arket og tage det med hjem. Det bliver svært at gardere sig mod, da det vel også skal kunne bruges.
hvis det derimod er vigtigst at arket er ubrugeligt (rent regnemæssigt) kan er der noget nemmere. Her kan du bruge din egen ide med en fil på nettet, der skal chekkes på først i forbindelse med at du laver 3-6 af dine vigtigste regnearksformler om til vba-funktioner. Derefter skjuler du vbaprojektet og passwordbeskytter det. Hvis arket nu bliver åbnet uden makroer vil vba-funktionerne ikke fungere.
Laje-> Hvis du er interesseret har jeg lavet et eksempel på et ark, som kun kan´åbnes under bestemte betingelser. Når det er åbent fungerer det som alle andre regneark (på nær en enkelt ting), og så vidt jeg kan se kan man heller ikke kopiere fra arket.
Læg din email adresse hvis du er interesseret, så skal jeg sende et eksempel til dig.
Hvis en af jer kan lave et regneark, som jeg ikke kan åbne, så bliver jeg meget overrasket. Man kan også undlade at starte makro'erne op ved at holde shift (tror jeg) nede når filen åbnes.
Mit bedste bud er - glem det - vil der snydes, så blir der det, og alt kan åbnes.
flemmingdahl-> Enig. En 100 % beskyttelse er aldrig mulig, og du kn sikkert åbne mit ark. Men man skal vide en del om Excel og VBA for at åbne min løsning (tror jeg). Men det kan selvfølgelig også bare være mig, der ikke er kreativ/dygtig nok :-)
Bare lige for at være helt sikker. Brugerne må gerne kunne taste ind i arket og gemme det, men de må ikke kunne tage det med til f.eks. en konkurrent el. lign. Derfor er det vigtigt at bevare vores logo i etc.
jkrons>> synes det er fin måde at gøre det på, holder en del væk. Crack tid når man ved hvordan 20 sekunder - skulle jo lige huske hvor ikonet til mit crack program var.
Klart nok. Kender du en metode til helt at låse for VBA koden. Det har jeg faktisk efterlyst i andre sammenhænge også. Altså forhindre at nogen kommer derind - crack-program eller ej.
Jeg indrømmer at der er mange måder at omgå løsningen på, men jeg kan ikke finde en bedre. Bortset fra selvfølgelig at forhindre folk i at sende noget ud af huset - heller ikke e-amil, og så kropsvisitere dem, hver gang de forlader bygningen :-)
Og hvis det virleig er vigtigt, kan man måske løse det administrativt. Et af de steder jeg tidligere har været ansat gjorde man det, at hvis en medarbejder kom ind til chefen med en opsigelse, blev han fulgt ned til sit kontor. Her kunne han pakke sine personlige ting sammen, og så blev han flugt ned til hovedingangen. Samme ved en fyring.
Altså ingen adgang til firmadata overhovedet efter en opsigelse. Men det var også et firma, hvor data fra i går var ligegyldige fordi de allerede var forældede. Så det nyttede ikke noget at "forberede sin afsked".
Anyway: Her er koden men vær opmærksom på, at den nemt kan crackes som beskrevet af flemmingdahl.
Private Sub Workbook_BeforeClose(Cancel As Boolean) 'Denne kode sikrer at kun det tomme ark vises, hvis 'arket åbnes uden makroer
'Fjern beskyttelsen fra hele projektmappen ActiveWorkbook.Protect Structure:=False, Windows:=False 'Gør Adgang forbudt arket synligt 'Excel kræver at der altid er mindst et synligt ark ActiveWorkbook.Worksheets("Adgang forbudt").Visible = True
'Skjul de øvrige ark - og sørg for at de ikke vises med Vis ark ActiveWorkbook.Worksheets("Ark1").Visible = xlVeryHidden ActiveWorkbook.Worksheets("Ark2").Visible = xlVeryHidden ActiveWorkbook.Worksheets("Ark3").Visible = xlVeryHidden ActiveWorkbook.Worksheets("Ark4").Visible = xlVeryHidden
'Gem mappen når du lukker 'Ellers spørger Excel om der skal gemmes grundet koden ActiveWorkbook.Save
'Beskyt mappen igen, for at forhindre at der indsættes nye ark 'som er uden for systemets beskyttelse ActiveWorkbook.Protect Structure:=True, Windows:=False
End Sub
Private Sub Workbook_Deactivate() 'Denne linie forhindrer at der kopieres til en anden projektmappe 'som så kan medbringes uden beskyttelse Application.CutCopyMode = False
End Sub
Private Sub Workbook_Open() 'Når regnearket åbnes afspilles denn kode.
'Findes kontrolfilen på disken a = Dir("c:\test\lajetest.txt")
'Hvis nej lukkes projektmappen If a = "" Then ActiveWorkbook.Worksheets("Adgang forbudt").Visible = True ActiveWorkbook.Saved = True ActiveWorkbook.Close
'Hvis Ja åbnes projektmappen og de ark, der skal bruges 'gøres synlige igen Else ActiveWorkbook.Worksheets("Ark1").Visible = True ActiveWorkbook.Worksheets("Ark2").Visible = True ActiveWorkbook.Worksheets("Ark3").Visible = True ActiveWorkbook.Worksheets("Ark4").Visible = True ActiveWorkbook.Sheets("Adgang forbudt").Visible = False Worksheets("ark1").Activate ActiveWorkbook.Protect Structure:=True, Windows:=False
I skal alle sammen have tak for hjælpen. Dette var hvad jeg søgte. Mange tak Jkrons.
I tillæg til dette, er der nogen der ved, om jeg kan tillade copy/paste af et eller flere navngivne/definerede område(r)? På trods af ovenstående kode? Mvh Laje
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.