Consider this solution.
This will check to see if a file is open AND if so, tell you the username.
Private Declare Function GetUserName Lib "advapi32.dll" _
Alias "GetUserNameA" (ByVal lpBuffer As String, nSize As Long) As Long
Function NTDomainUserName() As String
Dim strBuffer As String * 255
Dim lngBufferLength As Long
Dim lngRet As Long
Dim strTemp As String
lngBufferLength = 255
strBuffer = String(255, 0)
lngRet = GetUserName(strBuffer, lngBufferLength)
strTemp = UCase(Left(strBuffer, lngBufferLength - 1))
NTDomainUserName = strTemp
End Function
Sub ifopenman()
Dim f As Integer
Dim en As String
Dim ed As String
FullFileName = ("C:\My Excel Files\Inventory Files\ML-Dan.xls"

f = FreeFile
On Error Resume Next
Open FullFileName For Binary Access Read Write Lock Read Write As #f
Close #f
If Err.Number <> 0 Then
en = Err.Number
ed = Err.Description
NTDomainUserName
FileAlreadyOpen = True
Err.Clear
MsgBox FullFileName & " Is already open, being used by " & NTDomainUserName & vbCr & vbCr & "Error # " & en & " - " & ed
Else
FileAlreadyOpen = False
End If
'then you could code something like .... If FileAlreadyOpen = True then
End Sub