ExcelBanter

ExcelBanter (https://www.excelbanter.com/)
-   Excel Programming (https://www.excelbanter.com/excel-programming/)
-   -   workbooks.open and error handling (https://www.excelbanter.com/excel-programming/330356-workbooks-open-error-handling.html)

John Keith[_2_]

workbooks.open and error handling
 
Im getting an error when running this code on the Set. (I found this code as
a solution on another post, but it won't seem to work.)

thedir = CurDir()
On Error GoTo notOpen
Set xlTest = Workbooks("ThePlayingboard.xls") ***
GoTo itsOpenNow
notOpen:
Workbooks.Open Filename:=theDir & "\" & "ThePlayingboard.xls",
UpdateLinks:=0
itsOpenNow:
Workbooks("ThePlayingboard.xls").Worksheets("Comba t").Activate

At the *** marker, this is the line that gets a "runtime error 9, subscript
out of range" which I assume is the Workbooks(sub) its talking about. and
this Should happen because the file was not open. I was under the impression
that the On Error GoTo label would trap the error and force the execution
pointer to jump on past the error.

I'm just trying to make sure the file is open, if it is open then Activate,
else open it then activate. How do you do that?

--
Regards,
John

Vasant Nanavati

workbooks.open and error handling
 
From the VBE menu:

Tools | Options | General | Error Trapping.

Perhaps "Break on All Errors" is selected?

--

Vasant



"John Keith" wrote in message
...
Im getting an error when running this code on the Set. (I found this code

as
a solution on another post, but it won't seem to work.)

thedir = CurDir()
On Error GoTo notOpen
Set xlTest = Workbooks("ThePlayingboard.xls") ***
GoTo itsOpenNow
notOpen:
Workbooks.Open Filename:=theDir & "\" & "ThePlayingboard.xls",
UpdateLinks:=0
itsOpenNow:
Workbooks("ThePlayingboard.xls").Worksheets("Comba t").Activate

At the *** marker, this is the line that gets a "runtime error 9,

subscript
out of range" which I assume is the Workbooks(sub) its talking about. and
this Should happen because the file was not open. I was under the

impression
that the On Error GoTo label would trap the error and force the execution
pointer to jump on past the error.

I'm just trying to make sure the file is open, if it is open then

Activate,
else open it then activate. How do you do that?

--
Regards,
John




Dave Peterson[_5_]

workbooks.open and error handling
 
I find this more straightforward:

dim xlTest as workbook

set xltest = nothing
on error resume next
set xltest = workbooks("theplayingboard.xls")
on error goto 0

if xltest is nothing then
set xltest = workbooks.open(....)
end if

xltest.activate
xltest.worksheets("combat").activate

===


I think this'll cause trouble if ThePlayingBoard.xls isn't active:
Workbooks("ThePlayingboard.xls").Worksheets("Comba t").Activate



John Keith wrote:

Im getting an error when running this code on the Set. (I found this code as
a solution on another post, but it won't seem to work.)

thedir = CurDir()
On Error GoTo notOpen
Set xlTest = Workbooks("ThePlayingboard.xls") ***
GoTo itsOpenNow
notOpen:
Workbooks.Open Filename:=theDir & "\" & "ThePlayingboard.xls",
UpdateLinks:=0
itsOpenNow:
Workbooks("ThePlayingboard.xls").Worksheets("Comba t").Activate

At the *** marker, this is the line that gets a "runtime error 9, subscript
out of range" which I assume is the Workbooks(sub) its talking about. and
this Should happen because the file was not open. I was under the impression
that the On Error GoTo label would trap the error and force the execution
pointer to jump on past the error.

I'm just trying to make sure the file is open, if it is open then Activate,
else open it then activate. How do you do that?

--
Regards,
John


--

Dave Peterson

John Keith[_2_]

workbooks.open and error handling
 
That was a great thought, but it wasn't the case. "Break on unhandled
errors" was selected.

I have tried the same code on Excel 2003 and 2002. The same problem exists
that the On Error goto... is not catching the run time error 9; Subscript
out of range on the workbooks.open

Or am i misunderstanding how the "On Error" works? (im still new to VBA)

--
Regards,
John


"Vasant Nanavati" wrote:

From the VBE menu:

Tools | Options | General | Error Trapping.

Perhaps "Break on All Errors" is selected?

--

Vasant



"John Keith" wrote in message
...
Im getting an error when running this code on the Set. (I found this code

as
a solution on another post, but it won't seem to work.)

thedir = CurDir()
On Error GoTo notOpen
Set xlTest = Workbooks("ThePlayingboard.xls") ***
GoTo itsOpenNow
notOpen:
Workbooks.Open Filename:=theDir & "\" & "ThePlayingboard.xls",
UpdateLinks:=0
itsOpenNow:
Workbooks("ThePlayingboard.xls").Worksheets("Comba t").Activate

At the *** marker, this is the line that gets a "runtime error 9,

subscript
out of range" which I assume is the Workbooks(sub) its talking about. and
this Should happen because the file was not open. I was under the

impression
that the On Error GoTo label would trap the error and force the execution
pointer to jump on past the error.

I'm just trying to make sure the file is open, if it is open then

Activate,
else open it then activate. How do you do that?

--
Regards,
John





Vasant Nanavati

workbooks.open and error handling
 
I tried your code on Excel 2002 and it worked just fine. The error was
handled as desired.

Do you have any error handling statements (that are not reset to 0) in an
earlier part of your code, or possibly in another sub that is calling this
sub?

--

Vasant


"John Keith" wrote in message
...
That was a great thought, but it wasn't the case. "Break on unhandled
errors" was selected.

I have tried the same code on Excel 2003 and 2002. The same problem

exists
that the On Error goto... is not catching the run time error 9; Subscript
out of range on the workbooks.open

Or am i misunderstanding how the "On Error" works? (im still new to VBA)

--
Regards,
John


"Vasant Nanavati" wrote:

From the VBE menu:

Tools | Options | General | Error Trapping.

Perhaps "Break on All Errors" is selected?

--

Vasant



"John Keith" wrote in message
...
Im getting an error when running this code on the Set. (I found this

code
as
a solution on another post, but it won't seem to work.)

thedir = CurDir()
On Error GoTo notOpen
Set xlTest = Workbooks("ThePlayingboard.xls") ***
GoTo itsOpenNow
notOpen:
Workbooks.Open Filename:=theDir & "\" & "ThePlayingboard.xls",
UpdateLinks:=0
itsOpenNow:
Workbooks("ThePlayingboard.xls").Worksheets("Comba t").Activate

At the *** marker, this is the line that gets a "runtime error 9,

subscript
out of range" which I assume is the Workbooks(sub) its talking about.

and
this Should happen because the file was not open. I was under the

impression
that the On Error GoTo label would trap the error and force the

execution
pointer to jump on past the error.

I'm just trying to make sure the file is open, if it is open then

Activate,
else open it then activate. How do you do that?

--
Regards,
John







jai

workbooks.open and error handling
 
Hi John,

Firstly the problem with your code.
Workbooks("Filename.xls") works only if the workbook is part of the
workbooks collection ie if it is already open. Since at the point of
invocation, it is not open, it will give an error. You may set a workbook
variable to it after opening the file without error.

What you need to do is to
1. Determine if the file is existing in the given path. Use the Dir
function
dim Fil as String
Fil = dir(path &"\" filename.xls") will return an empty string if
the file is not in the given path, else it will return the filename. You may
use wild cards on Windows - apparantly does not work on Macs.

2. Determine if the workbook is already open. To do so, you have to
search the workbooks collection

Dim wb as workbook, isOpen as Boolean
IsOpen = False
for each wb in workbooks
if wb.name = "xyz.xls" then
IsOpen = True
exit For
endif
end for
[use IsOpen logical variable at this point to check]



"John Keith" wrote:

Im getting an error when running this code on the Set. (I found this code as
a solution on another post, but it won't seem to work.)

thedir = CurDir()
On Error GoTo notOpen
Set xlTest = Workbooks("ThePlayingboard.xls") ***
GoTo itsOpenNow
notOpen:
Workbooks.Open Filename:=theDir & "\" & "ThePlayingboard.xls",
UpdateLinks:=0
itsOpenNow:
Workbooks("ThePlayingboard.xls").Worksheets("Comba t").Activate

At the *** marker, this is the line that gets a "runtime error 9, subscript
out of range" which I assume is the Workbooks(sub) its talking about. and
this Should happen because the file was not open. I was under the impression
that the On Error GoTo label would trap the error and force the execution
pointer to jump on past the error.

I'm just trying to make sure the file is open, if it is open then Activate,
else open it then activate. How do you do that?

--
Regards,
John



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

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