Problem with handling on error when file is already open

F

Frank

I have tried to make a event handler to view a warning message, but before it
displayed, this system message pops up first: "<Filename> is already open.
Reopening will cause any changes you made to be discarded. Do you want to
reopen <filename>?"

How can I avoid the system message and only display my own message?

Regards

Frank Krogh

_________________________

Option Explicit
Sub ChangeDateFormat()

Dim strFileName As Variant
Dim wkbk As Workbook
Dim showMsg As String

strFileName = Application.GetOpenFilename("Report (*.xls),*.xls")
'Application.ScreenUpdating = False
If strFileName <> False Then
On Error GoTo ErrorHandler ' Enable error-handling routine.
Set wkbk = Workbooks.Open(Filename:=strFileName)
With wkbk.Worksheets(1)
' Do something
End With
End If
Exit Sub ' Exit to avoid handler.
ErrorHandler: ' Error-handling routine.
showMsg = MsgBox("File is already open. Please close and try again",
vbExclamation, "File already open")
Exit Sub

End Sub
 
D

Die_Another_Day

Frank, "Set" the workbook to your variable before opening, then test to
see if it is open.
On Error Resume Next
Set wkbk = Workbooks(strFileName)
If Not wkbk Is Nothing Then
'Trigger Msg
Else
'Not Open
End If

HTH

Charles Chickering
 
F

Frank

Thank you for the solution. It worked fine.

Die_Another_Day said:
Frank, "Set" the workbook to your variable before opening, then test to
see if it is open.
On Error Resume Next
Set wkbk = Workbooks(strFileName)
If Not wkbk Is Nothing Then
'Trigger Msg
Else
'Not Open
End If

HTH

Charles Chickering
 
N

NickHK

Frank,
Or if you that someone else has the file open, you can try to open it
Exclusive first.
If that fails, you know it is already open.

Dim FileNum as long
dim MyFile as string
dim WB as workbook

myfile="C:\Whatever.xls"
Filenum=freefile
on error resume next
Open MyFile For Input Read Lock As FileNum

Select case err.number
case 0
'OK, so close and open normally
close filenum
Set WB=Workbooks.open(myfile)
case ?? 'Forget the number fpor a locked file, but you can test

case else
'Decide what to do
end select

Or maybe you can call a function in this
http://www.dr-hoiby.com/WhoLockMe/index.php

Haven't used it so can't tell you much.


NickHK
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Top