Avatar billede steensommer Praktikant
27. april 2003 - 11:54 Der er 29 kommentarer og
1 løsning

Excel og system Log-on

Hej
I vores projektmappe (der indeholder data på 20 patienter af gangen) havde jeg tænkt at oprette 20 stk kommandoknapper - En pr. patient. Hver knap skal starte word og overføre data fra excel på patienten hvorefter den gemmes i cpr-nr. Dette fungerer fint.
Imidlertid bør man af diverse sikkerhedsmæssige grunde begrænse adgangen til journalerne.

Systemet fungerer i et netværk hvor alle logger på serveren der fungerer som en domæne-controller dvs her tilføres brugerens rettigheder.

Det jeg gerne vil er at give visse personer redigeringsrettighed over jornalerne - resten skal kun have læseadgang. Det kan selvfølgelig lade sig gøre blot at anvende en adgangskode men det andet virker mere "korrekt"!

Kan dette lade sig gøre med VBA?

Vi anvender 2000 server på serveren, win XP på de fleste arbejdsstationer og Office XP

vh Steen
Avatar billede Slettet bruger
27. april 2003 - 12:16 #1
Jeg vil personligt ikke stole på den sikkerhed som Excel og/eller VBA kan tilbyde. Jeg vil mene at du vil være bedre stillet ved at begrænse adgangen til selve den mappe hvori dit Excel-ark ligger.
Avatar billede Slettet bruger
27. april 2003 - 12:20 #2
VBA makroer kan standses eller omgås, og Excels passwords er ret nemme at knække.
Avatar billede bak Seniormester
27. april 2003 - 12:35 #3
Enig med Blackadder. På en win2000 server kan du jo selv tildele dem de rettigheder de skal bruge, både for enkelte filer og hele biblioteker i forbindelse med log-on, men det burde da også kunne gøres i VBA.
Man kan fange Log-on navnet og domæne og derefter imakroerne sørge for at kun visse personer kan åbne uden skrivebeskyttelse.
27. april 2003 - 14:24 #4
Filer kan startes op uden makro'er - jeg vil i et tilfælde om helt vitale data ikke stole på Excel og VBA - brug rettighedstildelingen i win2000 server på fil eller biblioteks niveau
Avatar billede steensommer Praktikant
27. april 2003 - 18:44 #5
--> Bak du mener at man kan "fange" Log-on havnet og domæne og indføre dem i makroerne men hvorledes gøres det?
Avatar billede bak Seniormester
27. april 2003 - 21:17 #6
Her er et eksempel på hvad jeg mener.
Jeg er godt klar over at det er word-filer du vil åbne, men for at holde det simpelt åbner jeg en excel-fil,( kender ikke lige din kode her) så kan du selv konvertere.
Public SuperUser As Boolean

Sub Auto_Open()
Dim objWSH As Object
Dim Id
Dim BrugerNavn As String
'Et array med brugerinitialer eller log-on navne
Id = Array("TBC", "SSA", "PCB")
Set objWSH = CreateObject("WScript.Network")
'Hvis domænenavnet er rigtigt så..
If objWSH.UserDomain = "MitDomæne" Then
  'Hent log-in navn
  BrugerNavn = objWSH.UserName
  'Kontrollér at log-in navnet er indeholdt i array Id
  For x = 1 To UBound(Id)
      If BrugerNavn = Id(x) Then
        'hvis Domæne og log-in navn er Ok sættes SuperUser til Sand
        SuperUser = True
        Exit For
      End If
  Next
End If
End Sub
Sub OpenFile()
'hvis Superuser er Sand så åbn normalt...
If SuperUser = True Then
  Workbooks.Open Filename:="C:\spredning.xls"
  Else
  'ellers åbnes skrivebeskyttet.
  Workbooks.Open Filename:="C:\spredning.xls", ReadOnly:=True
End If
End Sub
Avatar billede bak Seniormester
27. april 2003 - 21:20 #7
Jeg glemye lige at skrive at SuperUser er en global variabel og kan bruges af alle dine makro i samme fil.
Avatar billede steensommer Praktikant
27. april 2003 - 22:06 #8
Det ses interessant ud bak. Jeg skal lige ha' et par dage til at teste - så vender jeg tilbage med point til dig (du kunne måske anbringe et svar inden da).
vh Steen
Avatar billede Slettet bruger
27. april 2003 - 22:14 #9
Bemærk at Auto_Open() makroen kan deaktiveres ved at holde SHIFT nede imens Excel starter op. Sikkerheden er derfor i princippet ikke bedre end den var før.
Avatar billede Slettet bruger
27. april 2003 - 22:28 #10
bak >> Skal der iøvrigt ikke stå
For x = 0 To UBound(Id) istedet for
For x = 1 To UBound(Id)

hvis du ikke bruger Option Base 1 ?
Avatar billede steensommer Praktikant
28. april 2003 - 01:14 #11
For en god ordens skyld skal det anføres at jeg godt kan begrænse brugernes adgang til filer og mapper MEN selvom det er sårbare data må de øvrige brugere (sygeplejersker) gerne læse journalerne og der er med garanti INGEN i gruppen der bevidst forsøger at "bryde" læserettighederne - derfor er jeg ikke så "hysterisk" med sikkerheden.  vh Steen
Avatar billede jkrons Professor
28. april 2003 - 09:06 #12
Hvis sikkerheden ikke er et problem, ville jeg personligt nøjes med hhv en åbnings- og en redigeringsadgangskode. Åbning tuil de, der kun skal kunne læse og Redigering til de, der skal kunne ændre.
Avatar billede bak Seniormester
28. april 2003 - 09:14 #13
blackadder > Jo, det har du ret i (option base 1).
Jeg har ikke chekket koden, den er bare håndbygget som et eksempel.
Der er sikkert t par andre ting der kan gøres bedre (cheks).
I øvrigt, hvis man slår macroerne fra vil knapperne jo ikke virke.
Hvis man overspinger auto_open, vil superuser = Falsk.
Avatar billede bak Seniormester
28. april 2003 - 09:17 #14
Ok, lidt revideret.

Public SuperUser As Boolean


Sub Auto_Open()
Dim objWSH As Object
Dim Id
Dim BrugerNavn As String
Dim x As Long
Dim superbruger As String
Dim superuser As String
'Et array med brugerinitialer eller log-on navne
Id = Array("TBC", "SSA", "PCB")
Set objWSH = CreateObject("WScript.Network")
'Hvis domænenavnet er rigtigt så..
If objWSH.UserDomain = "MitDomæne" Then
  'Hent log-in navn
  BrugerNavn = objWSH.UserName
  'Kontrollér at log-in navnet er indeholdt i array Id
  For x = 0 To UBound(Id)
      If UCase(BrugerNavn) = Id(x) Then
        'hvis Domæne og log-in navn er Ok sættes SuperUser til Sand
        superuser = True
        Exit For
      End If
  Next
End If
End Sub
Avatar billede bak Seniormester
28. april 2003 - 09:18 #15
Svar :-)
Avatar billede steensommer Praktikant
28. april 2003 - 21:18 #16
Hej Bak og Co. Det ser jo ud til at tingene fungerer. Jeg kan desværre ikke checke om det fungerer i domæne-regi. Er det muligt at ændre koden lidt så den også fungerer på alm arbejdsstationer?
Jeg ved ikke OM det evt. kan lade sig gøre at forhindre brugeren i at kunne redigere (slette/tilføje) i Read only-mode?
Vh Steen
Avatar billede bak Seniormester
28. april 2003 - 22:11 #17
Sådan, så funker den uden domænecheck.
Det forhindrer ikke bruger i at slette/tilføje noget, men de kan ikke gemme (i samme navn)

Public SuperUser As Boolean

Sub Auto_Open()
Dim objWSH As Object
Dim Id
Dim BrugerNavn As String
Dim x As Long
Dim superbruger As String
Dim superuser As String
'Et array med brugerinitialer eller log-on navne
Id = Array("TBC", "SSA", "PCB")
Set objWSH = CreateObject("WScript.Network")
'Hvis domænenavnet er rigtigt så..
'If objWSH.UserDomain = "MitDomæne" Then
  'Hent log-in navn
  BrugerNavn = objWSH.UserName
  'Kontrollér at log-in navnet er indeholdt i array Id
  For x = 0 To UBound(Id)
      If UCase(BrugerNavn) = Id(x) Then
        'hvis Domæne og log-in navn er Ok sættes SuperUser til Sand
        superuser = True
        Exit For
      End If
  Next
'End If
End Sub
Avatar billede steensommer Praktikant
28. april 2003 - 22:35 #18
--> Bak .      Den starter op i Read-only når jeg logger på med mit brugernavn (er selvfølgelig ændret i VBA). vh Steen
Avatar billede bak Seniormester
28. april 2003 - 23:25 #19
vis lige koden du bruger til at starte worddokumentet
Avatar billede steensommer Praktikant
28. april 2003 - 23:26 #20
Jeg har forsøgsvis bare oprettet et excelark medd navn og placeret som du skrev i VBA
Avatar billede bak Seniormester
28. april 2003 - 23:42 #21
Min fejl. Jeg har en dobbelt deklaration as superuser, både en public og en i subben. Den her er lidt bedre :-)


Public superuser As Boolean

Sub auto_open()
Dim objWSH As Object
Dim Id
Dim BrugerNavn As String
Dim x As Long

Id = Array("TBC", "SSA", "PCB")
Set objWSH = CreateObject("WScript.Network")
  BrugerNavn = objWSH.UserName
  For x = 0 To UBound(Id)
      If UCase(BrugerNavn) = Id(x) Then
        superuser = True
        Exit For
      End If
  Next
End Sub
Avatar billede steensommer Praktikant
29. april 2003 - 00:23 #22
Nu er det jo ikke for at være negativ men det er fortsat det samme :-( 
vh Steen
Avatar billede bak Seniormester
29. april 2003 - 08:59 #23
Jeg tror du har testet, uden at lukke filen først, men for at være på sen sikre side indfører jeg en linie der starter med at sætte superuser til falsk

Public superuser As Boolean

Sub auto_open()
Dim objWSH As Object
Dim Id
Dim BrugerNavn As String
Dim x As Long
superuser = False
Id = Array("TBx", "SSA", "PCB")
Set objWSH = CreateObject("WScript.Network")
  BrugerNavn = objWSH.UserName
  For x = 0 To UBound(Id)
      If UCase(BrugerNavn) = Id(x) Then
        superuser = True
        Exit For
      End If
  Next
End Sub
Avatar billede steensommer Praktikant
29. april 2003 - 16:45 #24
Nej jeg har selvfølgelig lukket filen for at få Auto_Open til at køre. Og jeg er bange for at det fortsat giver read-only ....hm. Mærkeligt!!!
Avatar billede bak Seniormester
29. april 2003 - 17:06 #25
Prøv lige at chekke hvilket brugerID dit system har givet dig:

sub brugerID()
Set objWSH = CreateObject("WScript.Network")
BrugerNavn = objWSH.UserName
msgbox Brugernavn
End Sub
Avatar billede steensommer Praktikant
29. april 2003 - 18:40 #26
Det er ingen større hemmelighed: Steen dvs at den er korrekt og tilsvarende skrevet i vba!!!
Avatar billede steensommer Praktikant
29. april 2003 - 20:17 #27
Hej bak:
Det kører tilsyneladende hvis man ændrer:

If UCase(BrugerNavn)=Id(x) Then        til:   
If BrugerNavn=Id(x) Then
Hmm..
Avatar billede bak Seniormester
29. april 2003 - 20:23 #28
Så bruger du store og små bogstaver i linien
Id = Array("TBC", "SSA", "PCB")  :-)
her burde der kun være store bogstaver, så kan den køre.

Du kan evt. også gøre sådan
If UCase(BrugerNavn)=UCase(Id(x)) Then

men du kan da også bare gøre som du lige har gjort .........
Avatar billede bak Seniormester
29. april 2003 - 20:28 #29
Jeg håber du lykkes med det.
Jeg brækker min PC ned nu og ved ikke hvornår den er klar igen :-(
Avatar billede steensommer Praktikant
29. april 2003 - 21:38 #30
Øv fy for pokker men sådan er det med edb-eksperter: Det er sjældent man er tilfreds i en længere periode.

Iøvrigt tak for en altid stor hjælp: Point er selvfølgelig dine! vh Steen
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

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