'Questo è il contenuto del modulo di codice di Questa_cartella_di_lavoro
========================================================
Option Explicit
Private SheetsChanged As Boolean
Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)
If SheetsChanged Then
If cGet("cRegisterAccessLog") Then
WriteToLog (vbTab & "Salvataggio dopo modifica: " & Now & vbCrLf & vbTab & "Utente: " & WinUser)
End If
End If
End Sub
Private Sub Workbook_Open()
SheetsChanged = False
If cGet("cRegisterAccessLog") Then
WriteToLog ("Accesso al file " & ThisWorkbook.Name & vbTab & Now & vbCrLf & vbTab & "Utente: " & WinUser)
End If
End Sub
Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range)
SheetsChanged = True
End Sub
========================================================
'Questo è il contenuto di Modulo1
========================================================
Option Explicit
Public Declare Function GetUserName Lib "advapi32.dll" _
Alias "GetUserNameA" (ByVal lpBuffer As String, nSize As Long) As Long
Public Const fLogPath = ".LG"
Public Sub cSet(Value As Variant, NM As String, Optional WBook As Workbook = Nothing, Optional Visibile As Boolean = True, Optional Salva As Boolean = True)
If WBook Is Nothing Then Set WBook = ThisWorkbook
With WBook.Names
On Error Resume Next
.Item(NM).Delete
On Error GoTo 0
.Add Name:=NM, RefersTo:=Value, Visible:=Visibile
End With
If Salva Then WBook.Save
End Sub
Public Function cGet(NM As String, Optional WBook As Workbook = Nothing) As Variant
cGet = ""
If WBook Is Nothing Then Set WBook = ThisWorkbook
On Error Resume Next
cGet = Evaluate(WBook.Names(NM).Value)
On Error GoTo 0
End Function
Public Function WinUser() As String
Dim s As String * 255
Dim lLen As Long
Dim sString As String
sString = ""
On Error Resume Next
lLen = GetUserName(s, 255)
lLen = InStr(1, s, Chr(0))
If lLen > 0 Then
sString = Left(s, lLen - 1)
Else
sString = s
End If
On Error GoTo 0
WinUser = Trim(sString)
End Function
Public Sub WriteToLog(Line As String)
Dim LOGpath As String
LOGpath = ThisWorkbook.Path & "" & fLogPath
If Dir(LOGpath, vbDirectory + vbHidden) = "" Then
MkDir LOGpath
SetAttr LOGpath, vbHidden
End If
LOGpath = LOGpath & "" & ThisWorkbook.Name & ".Log"
If Dir(LOGpath, vbHidden + vbReadOnly + vbSystem) <> "" Then SetAttr LOGpath, vbNormal
Open LOGpath For Append As #1
Write #1, Line
Close #1
SetAttr LOGpath, vbHidden + vbReadOnly + vbSystem
End Sub
Public Sub LogEnable(Abilita As Boolean)
cSet Abilita, "cRegisterAccessLog", ThisWorkbook, False, True
End Sub
Public Sub AttivaLog()
LogEnable True
End Sub
Public Sub DisattivaLog()
LogEnable False
End Sub
|