ExcelBanter

ExcelBanter (https://www.excelbanter.com/)
-   Excel Programming (https://www.excelbanter.com/excel-programming/)
-   -   Determine if an excel file is already open (https://www.excelbanter.com/excel-programming/342700-determine-if-excel-file-already-open.html)

[email protected]

Determine if an excel file is already open
 
I'm having odd results using the code cited in this article,
http://support.microsoft.com?kbid=184982, to determine is an Excel file is
already open.

The problem I'm having is when an excel file is marked read-only. (Everthing
works as expected otherwise.) In my testing, when the Excel file is marked as
read only, the code below ALWAYS (wether the file is open or not) returns
Err.Number=75, Err.Description=Path/File access error.

Unfortunately, I can't assume that the file is not read-only so I need to
figure this problem out. Any idea how I can determine if a read-only file is
already open or not?

I tried removing the "Write"s from the Open statement, but that doesn't help
in this situation. What need to know is if the file is open before I attempt
to access it, so that when I'm done I can close or open it depending on the
status before I started my processing.

Thanks for any feedback...


FYI, Here's the code:

Public Sub x()
Debug.print FileLocked("C:\", "some.xls")
End sub

Function FileLocked(FilePath As String, FileName As String) As Boolean
On Error Resume Next
' Adapted from http://support.microsoft.com/?kbid=184982
' If the file is already opened by another process,
' and the specified type of access is not allowed,
' the Open operation fails and an error occurs.
Open FilePath & FileName For Binary Access Read Write Lock Read Write As
#1
Close #1

' If an error occurs, the document is currently open.
If Err.Number < 0 Then
' Display the error number and description.
MsgBox "Error #" & str(Err.Number) & " - " & Err.Description
FileLocked = True
Err.Clear
End If
End Function


[email protected]

Determine if an excel file is already open
 
Nope that doesn't work. With this modification, if the file is read-only and
the Excel file is open, this this function returns False, indicating that the
file is not open....

"Bob Phillips" wrote:

Try this variation

Function FileLocked(FilePath As String, FileName As String) As Boolean
On Error Resume Next
' Adapted from http://support.microsoft.com/?kbid=184982
' If the file is already opened by another process,
' and the specified type of access is not allowed,
' the Open operation fails and an error occurs.
Open FilePath & FileName For Input Lock Read Write As #1
Close #1

' If an error occurs, the document is currently open.
If Err.Number < 0 Then
' Display the error number and description.
MsgBox "Error #" & Str(Err.Number) & " - " & Err.Description
FileLocked = True
Err.Clear
End If
End Function

--

HTH

RP
(remove nothere from the email address if mailing direct)


" wrote in
message ...
I'm having odd results using the code cited in this article,
http://support.microsoft.com?kbid=184982, to determine is an Excel file

is
already open.

The problem I'm having is when an excel file is marked read-only.

(Everthing
works as expected otherwise.) In my testing, when the Excel file is marked

as
read only, the code below ALWAYS (wether the file is open or not) returns
Err.Number=75, Err.Description=Path/File access error.

Unfortunately, I can't assume that the file is not read-only so I need to
figure this problem out. Any idea how I can determine if a read-only file

is
already open or not?

I tried removing the "Write"s from the Open statement, but that doesn't

help
in this situation. What need to know is if the file is open before I

attempt
to access it, so that when I'm done I can close or open it depending on

the
status before I started my processing.

Thanks for any feedback...


FYI, Here's the code:

Public Sub x()
Debug.print FileLocked("C:\", "some.xls")
End sub

Function FileLocked(FilePath As String, FileName As String) As Boolean
On Error Resume Next
' Adapted from http://support.microsoft.com/?kbid=184982
' If the file is already opened by another process,
' and the specified type of access is not allowed,
' the Open operation fails and an error occurs.
Open FilePath & FileName For Binary Access Read Write Lock Read Write

As
#1
Close #1

' If an error occurs, the document is currently open.
If Err.Number < 0 Then
' Display the error number and description.
MsgBox "Error #" & str(Err.Number) & " - " & Err.Description
FileLocked = True
Err.Clear
End If
End Function





Bob Phillips[_6_]

Determine if an excel file is already open
 
Try this variation

Function FileLocked(FilePath As String, FileName As String) As Boolean
On Error Resume Next
' Adapted from http://support.microsoft.com/?kbid=184982
' If the file is already opened by another process,
' and the specified type of access is not allowed,
' the Open operation fails and an error occurs.
Open FilePath & FileName For Input Lock Read Write As #1
Close #1

' If an error occurs, the document is currently open.
If Err.Number < 0 Then
' Display the error number and description.
MsgBox "Error #" & Str(Err.Number) & " - " & Err.Description
FileLocked = True
Err.Clear
End If
End Function

--

HTH

RP
(remove nothere from the email address if mailing direct)


" wrote in
message ...
I'm having odd results using the code cited in this article,
http://support.microsoft.com?kbid=184982, to determine is an Excel file

is
already open.

The problem I'm having is when an excel file is marked read-only.

(Everthing
works as expected otherwise.) In my testing, when the Excel file is marked

as
read only, the code below ALWAYS (wether the file is open or not) returns
Err.Number=75, Err.Description=Path/File access error.

Unfortunately, I can't assume that the file is not read-only so I need to
figure this problem out. Any idea how I can determine if a read-only file

is
already open or not?

I tried removing the "Write"s from the Open statement, but that doesn't

help
in this situation. What need to know is if the file is open before I

attempt
to access it, so that when I'm done I can close or open it depending on

the
status before I started my processing.

Thanks for any feedback...


FYI, Here's the code:

Public Sub x()
Debug.print FileLocked("C:\", "some.xls")
End sub

Function FileLocked(FilePath As String, FileName As String) As Boolean
On Error Resume Next
' Adapted from http://support.microsoft.com/?kbid=184982
' If the file is already opened by another process,
' and the specified type of access is not allowed,
' the Open operation fails and an error occurs.
Open FilePath & FileName For Binary Access Read Write Lock Read Write

As
#1
Close #1

' If an error occurs, the document is currently open.
If Err.Number < 0 Then
' Display the error number and description.
MsgBox "Error #" & str(Err.Number) & " - " & Err.Description
FileLocked = True
Err.Clear
End If
End Function





All times are GMT +1. The time now is 12:12 AM.

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
ExcelBanter.com