Is Excel File already Open – Check in VBA?
While opening a Excel file or be it any file with VBA, You may need to check if it is already opened by another user for editing.
The file may present in local computer or a shared drive. In either way, if the file is already open by other user for editing, then the current VBA code cannot edit & save it in same name.
For this purpose, it is a good practice to check if file is already open or not, before processing it. Here is the code to check this.
VBA Code Check if File Open?
Function isFileOpen(sFileName As String) As Boolean Dim iFile As Double Dim bReturn As Boolean Dim eVal As Double bReturn = False 'Open File with Lock - Errors out if file already opened On Error Resume Next iFile = FreeFile Open sFileName For Input Lock Read As #iFile Close #iFile eVal = VBA.Err On Error GoTo 0 'Check error code & return file status If eVal <> 0 Then bReturn = True isFileOpen = bReturn End Function
This function returns true if the file is locked for editing.
Detecting Excel File Locked by another User with VBA
The above code will take input as Excel file path or any file path. Try to open it will lock mode. If it is not available for exclusive lock access, then it means the file is already in open state. And hence this will return a True. If it is available for edit, then the function will return a False.
There is also possibility that the file is being edited by someone. The macro without knowing it, it might be editing an incomplete data. To avoid such scenarios, this macro will be helpful.
External Reference: Here is a discussion forum topic on how to find if a Excel workbook is already opened. There are multiple methods discussed in this page. But, You could see that the above method is being approved by a lot & fool proof.