you might be able to use/modify this. you will need to have a 'log' sheet
Private Declare Function GetUserName Lib "advapi32.dll" Alias "GetUserNameA" _
(ByVal lpBuffer As String, _
nSize As Long) As Long
Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)
On Error GoTo carryon
Application.ScreenUpdating = False
Dim lpBuff As String * 25
Dim ret As Long, UserName As String
ret = GetUserName(lpBuff, 25)
UserName = Left(lpBuff, InStr(lpBuff, Chr(0)) - 1)
Sheets("log").Activate
lastrow = [a1].CurrentRegion.Rows.Count
'add username date and time
Sheets("log").Cells(lastrow + 1, 1).Value = Application.UserName
Sheets("log").Cells(lastrow + 1, 2).Value = Date
Sheets("log").Cells(lastrow + 1, 2).NumberFormat = "mmmm d, yyyy"
Sheets("log").Cells(lastrow + 1, 3).Value = Time
Sheets("log").Cells(lastrow + 1, 4).Value = UserName
Application.ScreenUpdating = True
ActiveWorkbook.Saved = True
carryon:
End Sub