Hallo zusammen,
ich habe hinter einer Excel einen Code hinterlegt der in eine Logdatei schreibt immer dann wenn die Datei geöffnet und geschlossen wird.
Da aufgrund von Arbeitsbestimmungen keine Namen erfasst werden dürfen habe ich diesen Part rausgenommen, jedoch ist es mir jetzt nicht mehr möglich zu sagen wie lange jemand in der Datei drin war.
Denn es können auch 5 Leute hintereinander die Datei geöffnet haben damit werden 5 mal Open in die Datei geschrieben und hinterher 5 mal Close.
Kann mir da jemand mit einer Art ID helfen oder wie ich das sonst machen könnte?
Private Sub Workbook_Open()
logFile "Open"
End Sub
Private Sub Workbook_BeforeClose(Cancel As Boolean)
logFile "Close (" & IIf(Me.Saved, "S", "Uns") & "aved)"
End Sub
Option Explicit
Public Sub logFile(ByVal Action As String, Optional Sheet As String, Optional ByVal Target As String, Optional ByVal Value As String)
Dim strLogFile As String, strTmp As String, strOld As String
' Dim strUser As String * 12
Dim strAction As String * 15
Dim strSh As String * 12
Dim strAddr As String * 12
Const strSep As String = ", "
strLogFile = ThisWorkbook.Path & Application.PathSeparator & ThisWorkbook.Name & "_log.txt"
'oder
'strLogFile = "C:\Ordner\log.txt"
strTmp = Format(Now, "dd.MM.yyyy hh:mm:ss")
' strUser = Environ("USERNAME") 'Nur für Benutzernamentracking
' strTmp = strTmp & strUser & strSep 'Nur für Benutzernamentracking
strTmp = strTmp & strSep
strAction = Action
strTmp = strTmp & strAction & strSep
If Len(Sheet) Then strSh = Sheet: strTmp = strTmp & strSh & strSep
If Len(Target) Then strAddr = Target: strTmp = strTmp & strAddr & strSep
If Len(Value) Then strTmp = strTmp & Left(Value, 1024)
If Right(strTmp, Len(strSep)) = strSep Then strTmp = Left(strTmp, Len(strTmp) - Len(strSep))
Open strLogFile For Binary As #1
strOld = Space$(LOF(1))
Get #1, , strOld
Close #1
strTmp = strTmp & vbCrLf & strOld
Open strLogFile For Output As #1
Print #1, strTmp
Close #1
End Sub
|