• Privacywetgeving
    Het is bij Helpmij.nl niet toegestaan om persoonsgegevens in een voorbeeld te plaatsen. Alle voorbeelden die persoonsgegevens bevatten zullen zonder opgaaf van reden verwijderd worden. In de vraag zal specifiek vermeld moeten worden dat het om fictieve namen gaat.

beveiliging in VBA

Status
Niet open voor verdere reacties.

nobody11

Gebruiker
Lid geworden
20 dec 2007
Berichten
552
hey iedereen,

ik zou graag mijn werkblad beveiligen en willen beperken in gebruik.. om dit te bewerkstelligen heb ik een bepaald idee.. Ik heb echter veel te weinig kennis van VBA om het te realiseren,dus ik vraag eventueel van jullie hulp of een paar suggesties.. dit is wat ik voor ogen heb:

1) bij het openen van het werkblad zou ik graag hebben dat de gebruiker via een inputbox een naam moet opgeven.. indien hij geen naam opgeeft of iets anders dan letters of op cancel drukt, moet het werkblad automatisch sluiten
2) bij het ingeven van een correcte naam zou die naam in een werkblad genaamd "informatie" moeten weggeschreven worden EN automatisch opslaan
3) dan had ik graag gehad dat ongeveer 1minuut na het ingeven van de naam en dus het openen van het werkblad dat het werkbald automatisch sluit en opslaat
4) indien het werkblad 5 keer geopend is (en er dus 5 namen staan in het werkblad informatie), dat bij de 6de keer openen van het werkblad er een paswoord gevraagd wordt om het te openen..idnein het paswoord correct is, kan het werkblad onbeperkt veel geopend worden en is er geen beperking meer op..

dit is wat ik voor ogen heb.. is dit in VBA haalbaar, of is dit voor VBA niet mogelijk? kunnen jullie mij tips geven hoe ik dit kan bekomen? ik ken wel eenb eetje van "on open" events, maar niet zo ver als ik hier voor ogen heb..

alvast bedankt!!
 
Laatst bewerkt door een moderator:
ik heb al geprobeerd, met dit:

Code:
Private Sub Workbook_Open()
ans = InputBox("Naam")
If IsNumeric(ans) = True Then
Exit Sub
Else
'laten wegschrijven van de naam
End If

End Sub

zo ver kom ik momenteel.. maar bij dit heb ik al 2 problemen..
1) als ik bijvoorbeeld " als naam ingeef, dan ziet hij dat gewoon als niet-numerisch,en laat hij het toe.. dit wil ik al vermijden..

2) indien het geen toegelaten naam is (enkel getallen, of ongeldige tekens), dan zou het werkblad moeten sluiten..

hoe kan ik hier mee verder?

ik probeer mijn 4 stappen van erboven een voor een uit te werken om er zo te komen.. ik hoop dat ik hier de nodige hulp kan vinden..

bedankt!
 
Beste nobody11 ;)

Kijk eens naar deze tpoic.

Groetjes Danny. :thumb:
 
Beste nobody11 ;)

Kijk eens naar deze tpoic.

Groetjes Danny. :thumb:
danny, bedankt,

ik wil echter niet de VBA code beveiligen (ale, dat wil ik wel, mr dat gaat perfect in VBA zelf), maar ik wil het werkb lad zelf beveiligen (tegen openen) met een paswoord.. en dit indien het werkblad enkele malen geopend is (zoals aangegeven in mijn beginpost)..


bedankt
 
Laatst bewerkt door een moderator:
Beste nobody11 ;)

Zoiets dan

Groetjes Danny. :thumb:

hey danny, heel hard bedankt! dit is idd wt ik zoek.. is het ook mogelijk de sheet uit te breiden zodat je het van het bvegin kan openen.. en pas na X aantal keer openen een paswoord moet ingeven? of kanVB moeilijk een variabele opslaan die onthoudt hoeveel keer je de sheet al geopend hebt?

of kan ik ook na 1 minuut na het openen van het werkbald dit laten verschijnen? dat is mss iets makkelijker dan mijn ander idee (na X aantal keer openen)? wat denken jullie dat het beste lukt? of lukken ze allebei?
 
Laatst bewerkt:
hey danny, heel hard bedankt! dit is idd wt ik zoek.. is het ook mogelijk de sheet uit te breiden zodat je het van het bvegin kan openen.. en pas na X aantal keer openen een paswoord moet ingeven? of kanVB moeilijk een variabele opslaan die onthoudt hoeveel keer je de sheet al geopend hebt?

of kan ik ook na 1 minuut na het openen van het werkbald dit laten verschijnen? dat is mss iets makkelijker dan mijn ander idee (na X aantal keer openen)? wat denken jullie dat het beste lukt? of lukken ze allebei?

ivm die tijd heb ik momenteel dit gevonden:

sub tijd()
application.ontime now+timevalue("00:01:00"), wachtwoord.show

dit zou normaal moeten werken, hoop ik :--)

nu rest enkel nog mijn vraagje of het mogelijk is dat VB onthoudt hoeveel keer je de sheet hebt geopend,en dan op basis daarvan na X aantal keer het paswoord vraagt..

ik dacht mss praktisch aan het volgende:

per keer je het bestand opent, schrijft VB in een bepaalde range een "x" of eender wat waarna VB automatisch de file opslaat.. nadien telt VB het aantal elementen in die bepaalde range via count en dan op basis daarvan bepaalt ze wnr het paswoordvenster moet verschijnen? zou dit werken of is dit omslachtig? (ik ben nl maar een beginner beginner VB :) )
 
Beste nobody11, jij hebt waarschijnlijk een bepaald doel voor ogen maar ik vraag mij af welke zin het heeft om een bestand te openen en dan een minuut te moeten wachten op een paswoordformulier. Of iemand een bestand een aantal maal laten openen alvorens een paswoord gevraagd wordt ?

Mvg

Rudi
 
Waarom stel je iemand in staat een bestand te openen waar hij/zij geen toegang toe moet hebben ?
Als je dat voorkomt (en dat is in een netwerkomgeving eenvoudig te realiseren) is dat de perfekte beveiliging zonder irritante pop-ups, wachtwoorden, termijnen, etc....
 
Beste nobody11, jij hebt waarschijnlijk een bepaald doel voor ogen maar ik vraag mij af welke zin het heeft om een bestand te openen en dan een minuut te moeten wachten op een paswoordformulier. Of iemand een bestand een aantal maal laten openen alvorens een paswoord gevraagd wordt ?

Mvg

Rudi


het idee is het volgende:

ik heb een bepaald bestand gemaakt dat ik graag wil commercialiseren. ik zou dus graag de mensen eerst willen laten kennis maken met het bestand, vooraleer een paswoord te vragen..ik kan dus d emensen 1 minuut (of enkele minuten) "vrije toegang" geven,en nadien om een paswoord vragen.. iets anders kan zijn dat ik toesta dat het bestand X aantal keren geopend kan worden en dan een paswoord vraagt, mr dit is minder waterdicht want dan kunnen gebruikers gewoon een paar kopieen maken en die opendoen .. dus ik zou eerder met tijd werken denk ik..

zien jullie ongeveer waar ik naar toe wil? :-) , dan rijst er natuurlijk het probleem dat mensen het pasw en username kunnen doorspelen naar elkaar..ik moet dus nog een systeem zoeken waarbij ik een paswoord en username kan laten genereren afhankelijk van bepaalde gegevens (bv excel licentienummer ofzo), zodat ik kan vermijden dat als 1 iemand een geldig pasw en username heeft, dat hij dit kan doorspeeln aan anderen en dat dit werkt...


het spreekt voor zich uiteraard dat ik open sta voor jullie suggesties :-)
 
Laatst bewerkt:
Beste nobody11 ;)

Zoiets dan

Groetjes Danny. :thumb:

Danny, zou het eventueel mogelijk zijn om een aantal keer een paswoord en username te laten ingeven vooraleer het werkboek volledig sluit? of kan je mij zeggen hoe ik dit kan inbouwen? (zo leer ik het zelf)

edit: heb iets in gedachte.. zal het even uitwerken, en als het niet werkt, dan zal ik het hier even vragen :-)
groetjes,
 
Laatst bewerkt:
ik heb dit als code momenteel (in het vet wat ik heb veranderd)

Code:
Option Explicit
[B]Public a As Integer[/B]
Private Sub CancelButt_Click()
ThisWorkbook.Close savechanges:=False
End Sub
Private Sub CommandButton1_Click()
ThisWorkbook.Close savechanges:=False
End Sub
Private Sub OKButt_Click()
Dim iFoundPass As Integer
On Error Resume Next
With Sheets("Config").Range("UserNames")

   iFoundPass = .Find(What:=UserNameTextBox, After:=.Cells(1, 1), LookIn:=xlValues, LookAt _
        :=xlWhole, SearchOrder:=xlByRows, SearchDirection:=xlNext, MatchCase:= _
        False).Row
End With
On Error GoTo 0

If iFoundPass = 0 Then
   SomethingWrong
      Exit Sub
End If

If Sheets("Config").Cells(iFoundPass, 2) <> PasswordTextBox Then
   SomethingWrong
      Exit Sub
End If

Sheets("Config").Range("LoggedInAs") = UserNameTextBox
Unload Me
End Sub
Private Sub PasswordTextBox_Change()
OKButt.Enabled = (UserNameTextBox.TextLength > 2 And _
                      PasswordTextBox.TextLength > 2)
End Sub
Private Sub UserForm_QueryClose(Cancel As Integer, CloseMode As Integer)
If CloseMode = 0 Then Cancel = True
End Sub
Private Sub UserNameTextBox_Change()
OKButt.Enabled = (UserNameTextBox.TextLength > 2 And _
                      PasswordTextBox.TextLength > 2)
End Sub
Private Sub SomethingWrong()
[B]   a = 0
   a = a + 1
   If a = 3 Then GoTo fout
   Else:
   MsgBox "Probeer opnieuw"
   Wachtwoord.Show
      End If
End Sub[/B]
 

[B]Private Sub fout()
MsgBox "Byebye!"
ActiveWorkbook.Close savechanges:=False
End Sub
[/B]

End Sub

ik krijg steeds de error "else without if".. wat kan ik hieraan doen? irritante error :) heb al verscheidene zaken geprobeerd.. mr kom er niet uit
 
Even een randopmerking: Ik stel me toch vragen in hoeverre een standaard Excel beveiliging voldoende protectie voorziet voor "rechtmatig" gebruik.
 
Even een randopmerking: Ik stel me toch vragen in hoeverre een standaard Excel beveiliging voldoende protectie voorziet voor "rechtmatig" gebruik.

zijn er andere user-friendly opties? ik opteer voor deze optie omdat het voor mij voldoende beveiliging zou bieden.. ook vanuit het oogpunt van rechtmatig gebruik. als men wil,kan men alles "kraken" eh? mr je opmerking is zeker juist..
 
ik krijg steeds de error "else without if".. wat kan ik hieraan doen? irritante error :) heb al verscheidene zaken geprobeerd.. mr kom er niet uit

Code:
   If a = 3 Then
        GoTo fout
   Else
       MsgBox "Probeer opnieuw"
       Wachtwoord.Show
   End If
 
Ik zou het zo doen:

Code:
Private Sub Workbook_Open()
  With CreateObject("Wscript.Network")
    If ActiveWorkbook.BuiltinDocumentProperties("keywords") = "" Then
            ActiveWorkbook.BuiltinDocumentProperties("keywords") = .Computername & .Userdomain & .UserName
      ActiveWorkbook.Save
    Else
      If ActiveWorkbook.BuiltinDocumentProperties("keywords") <> .Computername & .Userdomain & .UserName Then ActiveWorkbook.Close
    End If
  End With
End Sub
Beveilig vervolgens dit VBA-projekt.
Dan heb je voor 97% van de gebruikers voldoende beveiligd.
 
Ik zou het zo doen:

Code:
Private Sub Workbook_Open()
  With CreateObject("Wscript.Network")
    If ActiveWorkbook.BuiltinDocumentProperties("keywords") = "" Then
            ActiveWorkbook.BuiltinDocumentProperties("keywords") = .Computername & .Userdomain & .UserName
      ActiveWorkbook.Save
    Else
      If ActiveWorkbook.BuiltinDocumentProperties("keywords") <> .Computername & .Userdomain & .UserName Then ActiveWorkbook.Close
    End If
  End With
End Sub
Beveilig vervolgens dit VBA-projekt.
Dan heb je voor 97% van de gebruikers voldoende beveiligd.


wat doet jou beveiliging net?

@ wigi en warme bakkertje: bedankt voor de hulp! hier ben ik zeker wat mee!!
 
Nobody11, ik stuur je mijn rekeningnummer voor de commissie bij commercialisatie :p:p

Mvg

Rudi
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan