• 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.

Wat staat hier?

Status
Niet open voor verdere reacties.

Ericssport

Gebruiker
Lid geworden
7 jan 2009
Berichten
90
Beste probleemoplossers, met de onderstaande code(van dit forum geplukt) heb ik een logsheet gemaakt, alleen als (leergierige) amateur in dit alles snap ik nog niet alles van wat hier staat. Mijn vraag is van wat (welk sheet) maakt hij nu een log?!

Code:
Private Sub Workbook_Open()
Dim sSheetNaam As String, sActiveSheet As String, sInsertRange As String
Dim iAantalGeopend As String
sSheetNaam = "LogSheet"
sActiveSheet = ActiveSheet.Name
sInsertRange = "A2:D2"
    
    Application.ScreenUpdating = False

    'selecteer de sheet waarop de log bijgehouden wordt
    Worksheets(sSheetNaam).Select

    'maak de 1e regel vrij zodat de jongste info bovenaan staat
    Range(sInsertRange).Select
    Selection.Insert Shift:=xlDown
    Range("A2").Select
    
    'hoog de 'open aantal' bij iedere opening met 1 op
    iAantalGeopend = Range("E2").Value + 1
    
    'vul de cellen met de gevraagde info
    Range("A2").Value = Date
    Range("B2").Value = Format(Time, "hh:mm")
    Range("C2").Value = Environ("UserName")
    Range("D2").Value = Environ("ComputerName")
    Range("E2").Value = iAantalGeopend
    
    'keer terug naar de sheet die bij opening actief was...
    Worksheets(sActiveSheet).Select

    'sla het workbook op de achtergrond op zodat de logregel bewaard blijft!
    Me.Save
    
    Application.ScreenUpdating = True
    
End Sub
 
Hij maakt geen log van een sheet maar registreert het aantal keer dat op welke dag, op welk uur, welke gebruiker, vanop welke computer het bestand met deze code erin geopend heeft.

Mvg

Rudi
 
Laatst bewerkt:
ok, en van welk sheet registeert hij dat? En is het mogelijk om ook te laten registreren of en wat iemand veranderd heeft?
 
Dank voor de reactie, de code hieronder is tweeledig, ten eerste is er een beveiliging die tabbladen wel of niet zichtbaar maakt/laat. Ten tweede registreert het wie, wanneer in het bestand is geweest, helaas doet hij dat niet zoals ik voor ogen had, hij registreert alleen als je inlogt met 'admin', als je inlogt met 'ace' (daarmee is de logsheet afgeschermd) registreert hij niet dat er ingelogd wordt?! Kan iemand mij daarmee helpen?? :)


Code:
Private Sub Workbook_BeforeClose(Cancel As Boolean)
Application.DisplayAlerts = False
Worksheets("formulier").Activate

Me.Save
Application.DisplayAlerts = True
End Sub

Private Sub Workbook_Open()
Application.ScreenUpdating = False

Dim Sh As Worksheet
Dim Antwrd As String

On Error Resume Next

For Each Sh In Sheets
Sh.Visible = False
Next

Antwrd = LCase(InputBox("Geef wachtwoord", "Controle"))
Select Case Antwrd

Case "admin"
For Each Sh In Sheets
Sh.Visible = True
Next

Case "aze"
Sheets(1).Visible = False
Sheets(2).Visible = True
Sheets(3).Visible = True



Case Else
ThisWorkbook.Close SaveChanges:=False
End Select

Dim sSheetNaam As String, sActiveSheet As String, sInsertRange As String
Dim iAantalGeopend As String
sSheetNaam = "LogSheet"
sActiveSheet = ActiveSheet.Name
sInsertRange = "A2:D2"
    
    Application.ScreenUpdating = False

    'selecteer de sheet waarop de log bijgehouden wordt
    Worksheets(sSheetNaam).Select

    'maak de 1e regel vrij zodat de jongste info bovenaan staat
    Range(sInsertRange).Select
    Selection.Insert Shift:=xlDown
    Range("A2").Select
    
    'hoog de 'open aantal' bij iedere opening met 1 op
    iAantalGeopend = Range("E2").Value + 1
    
    'vul de cellen met de gevraagde info
    Range("A2").Value = Date
    Range("B2").Value = Format(Time, "hh:mm")
    Range("C2").Value = Environ("UserName")
    Range("D2").Value = Environ("ComputerName")
    Range("E2").Value = iAantalGeopend
    
    'keer terug naar de sheet die bij opening actief was...
    Worksheets(sActiveSheet).Select

    'sla het workbook op de achtergrond op zodat de logregel bewaard blijft!
    Me.Save
    
    Application.ScreenUpdating = True
    
End Sub
 
Het is wel met 'aze' dat je moet inloggen
Voor de rest werkt dit voor mij perfect naar de vraagstelling

Mvg

Rudi
 

Bijlagen

Goedemorgen, helaas werkt hij bij mij niet naar behoren, het lijkt wel omdat je met 'aze' de logsheet afschermt dat hij niet registreert. Wat zou ik hier aan kunnen doen?
 

Bijlagen

Wat en wanneer moet er eigenlijk geregistreerd worden?

Met vriendelijke groet,


Roncancio
 
Uiteindelijk is de bedoeling dat de hij registreert wie er dit bestand opent (ongeacht het wachtwoord), wanneer hij dat doet, en bij voorkeur welke cellen hij aanpast.
 
Laatst bewerkt:
Code:
Dim Vw As Variant

Private Sub Workbook_Open()
Worksheets.Add
Worksheets(Worksheets.Count).Name = "Logboek"
End Sub

Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range)
Dim lRij As Long
    lRij = Worksheets(Worksheets.Count).Range("A65536").End(xlUp).Row + 1
If Target.Worksheet.Index <> Worksheets.Count Then
    With Worksheets(Worksheets.Count)
        .Range("A" & lRij).Value = Application.UserName
        .Range("B" & lRij).Value = Target.Worksheet.Name
        .Range("C" & lRij).Value = Target.Address
        .Range("D" & lRij).Value = Vw
        .Range("E" & lRij).Value = Target.Value
    End With
End If
End Sub

Private Sub Workbook_SheetSelectionChange(ByVal Sh As Object, ByVal Target As Range)
Vw = Target.Value
End Sub

Bovenstaande code maakt een nieuw werkblad aan in het bestand.
Alle wijzigingen worden in dat nieuwe werkblad vermeld.

A-kolom - naam van de gebruiker die wijziging heeft aangebracht
B-kolom - werkblad waar de wijziging plaatsvond
C-kolom - Adres van de cel met de wijziging
D-kolom - oorspronkelijke waarde van de gewijzigde cel
E-kolom - huidige waarde van de gewijzigde cel.

Met vriendelijke groet,


Roncancio
 
Geweldig Roncancio! Het werkt precies zoals ik voor ogen had. Heb nogmaar slechts één klein vraagje, hoe kan ik deze code laten samengaan met die van het verlenen van het wachtwoord?!
 
Geweldig Roncancio! Het werkt precies zoals ik voor ogen had. Heb nogmaar slechts één klein vraagje, hoe kan ik deze code laten samengaan met die van het verlenen van het wachtwoord?!

Hoe had je het voor ogen wat betreft het werken met een wachtwoord?
Wat mag men wel/niet?

Met vriendelijke groet,


Roncancio
 
Beste Ericsport, het is normaal dat de oorspronkelijke wachtwoordcode niet werkt aangezien je bladen bijvoegevoegd hebt zonder de code aan te passen. Maak een voorbeeldbestand met de bladen die aanwezig moeten zijn en een woordje uitleg wat wanneer zichtbaar en verborgen moet zijn. Dan kan de code naar wens aangepast worden.

Mvg

Rudi
 
Sorry als ik niet erg helder en éénduidig overkom, ik zal nog een keer proberen uit tel leggen wat de bedoeling is.

Als je hebt bestand opent moet je een ww invoeren, aan de hand van het ww worden er een aantal sheets zichtbaar. In mijn probeersel hieronder heb je de wachtwoorden 'admin' en 'aze'. De admin ziet alles, de aze (en in de toekomst misschien nog één of twee andere wachtwoorden met de daarbij behorende rechten) heeft toegang tot een aantal sheets (iig niet de logsheet).

Daarnaast wordt er op sheet 1, de logsheet geregistreerd wie het bestand opent en wanneer hij dat doet (er moet nog bijkomen wat er in welke cel veranderd wordt).

Het probleem is dat de log alleen registreert als je inlogt met admin, ik denk omdat je dan de logsheet kunt zien, maar het is ook de bedoeling dat hij registreert als je met aze inlogt?!

Hieronder staat de code tot hoever ik met hulp van dit forum ben gekomen. Ik hoop dat het duidelijk is wat ik bedoel en iemand me kan helpen?! :)


Code:
Private Sub Workbook_BeforeClose(Cancel As Boolean)
    Application.DisplayAlerts = False
    Worksheets("Hoofdblad").Activate
    NietZichtbaar
    Me.Save
    Application.DisplayAlerts = True
End Sub

Private Sub Workbook_Open()
Application.ScreenUpdating = False

Dim Sh As Worksheet
Dim Antwrd As String

On Error Resume Next

    For Each Sh In Sheets
        Sh.Visible = False
    Next
    
    Antwrd = LCase(InputBox("Geef wachtwoord", "Controle"))
    Select Case Antwrd
    
    Case "admin"
    For Each Sh In Sheets
        Sh.Visible = True
    Next
    
    Case "aze"
    Sheets(1).Visible = False
    Sheets(2).Visible = True
    Sheets(3).Visible = True
    Sheets(Hoofdblad).Visible = True
     
    
  
     Case Else
      ThisWorkbook.Close SaveChanges:=False
     End Select

'
'
'

Dim sSheetNaam As String, sActiveSheet As String, sInsertRange As String
Dim iAantalGeopend As String
sSheetNaam = "LogSheet"
sActiveSheet = ActiveSheet.Name
sInsertRange = "A2:D2"
    
    Application.ScreenUpdating = False

    'selecteer de sheet waarop de log bijgehouden wordt
    Worksheets(sSheetNaam).Select

    'maak de 1e regel vrij zodat de jongste info bovenaan staat
    Range(sInsertRange).Select
    Selection.Insert Shift:=xlDown
    Range("A2").Select
    
    'hoog de 'open aantal' bij iedere opening met 1 op
    iAantalGeopend = Range("E2").Value + 1
    
    'vul de cellen met de gevraagde info
    Range("A2").Value = Date
    Range("B2").Value = Format(Time, "hh:mm")
    Range("C2").Value = Environ("UserName")
    Range("D2").Value = Environ("ComputerName")
    Range("E2").Value = iAantalGeopend
    
    'keer terug naar de sheet die bij opening actief was...
    Worksheets(sActiveSheet).Select

    'sla het workbook op de achtergrond op zodat de logregel bewaard blijft!
    Me.Save
    
    Application.ScreenUpdating = True
    
End Sub
 

Bijlagen

Ericssport, de zwaargewichten hier kunnen de code misschien nog wat inkorten maar in principe kan je hier mee starten.

Mvg

Rudi
 

Bijlagen

Ik heb het bestand een klein beetje aangepast.
Nu wordt ook de datum en tijdstip van de verandering in het logwerkblad getoond.
Verder zit er een wachtwoord (Ericssport= tevens ww van Logwerkblad) op de code zodat onverlaten de code niet kunnen inzien of wijzigen.
(zoals de waard is vertrouwd hij zijn gasten:p).

Met vriendelijke groet,


Roncancio
 

Bijlagen

Jongens bedankt!! Dit werkt geweldig, ik ga nu proberen de code te doorgronden zodat ik er nog wat van opsteek, wil dit wel beter leren beheersen. Nogmaal Dank!! :)
 
Laatst bewerkt:
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan