How to find out the user who locked the excel file in vba?
I know how to find the owner of the file but owner not always the last user
Private Sub clientList_Click()
Dim FileNm As String
Dim newwb As Workbook
Dim us1 As String
Dim ret
FileNm = "C:\client list.xlsm"
ret = IsWorkBookOpen(FileNm)
If ret = True Then
MsgBox "File is opened by " & GetFileOwner(FileNm) & "."
Else
MsgBox "File is Closed"
End If
end sub
Function IsWorkBookOpen(fileName As String)
Dim ff As Long, ErrNo As Long
On Error Resume Next
ff = FreeFile()
Open fileName For Input Lock Read As #ff
Close ff
ErrNo = Err
On Error GoTo 0
Select Case ErrNo
Case 0: IsWorkBookOpen = False
Case 70: IsWorkBookOpen = True
Case Else: Error ErrNo
End Select
End Function
Function GetFileOwner(fileName As String) As String
Dim secUtil As Object
Dim secDesc As Object
Dim File_Shortname As String
Dim fileDir As String
File_Shortname = Dir(fileName)
fileDir = Left(fileName, InStr(1, fileName, File_Shortname) - 1)
Set secUtil = CreateObject("ADsSecurityUtility")
Set secDesc = secUtil.GetSecurityDescriptor(fileDir & File_Shortname, 1, 1)
GetFileOwner = secDesc.owner
End Function
Please let me know how to find the user who locking the file. Thanks
I know how to find the owner of the file but owner not always the last user
Private Sub clientList_Click()
Dim FileNm As String
Dim newwb As Workbook
Dim us1 As String
Dim ret
FileNm = "C:\client list.xlsm"
ret = IsWorkBookOpen(FileNm)
If ret = True Then
MsgBox "File is opened by " & GetFileOwner(FileNm) & "."
Else
MsgBox "File is Closed"
End If
end sub
Function IsWorkBookOpen(fileName As String)
Dim ff As Long, ErrNo As Long
On Error Resume Next
ff = FreeFile()
Open fileName For Input Lock Read As #ff
Close ff
ErrNo = Err
On Error GoTo 0
Select Case ErrNo
Case 0: IsWorkBookOpen = False
Case 70: IsWorkBookOpen = True
Case Else: Error ErrNo
End Select
End Function
Function GetFileOwner(fileName As String) As String
Dim secUtil As Object
Dim secDesc As Object
Dim File_Shortname As String
Dim fileDir As String
File_Shortname = Dir(fileName)
fileDir = Left(fileName, InStr(1, fileName, File_Shortname) - 1)
Set secUtil = CreateObject("ADsSecurityUtility")
Set secDesc = secUtil.GetSecurityDescriptor(fileDir & File_Shortname, 1, 1)
GetFileOwner = secDesc.owner
End Function
Please let me know how to find the user who locking the file. Thanks