PC Review


Reply
Thread Tools Rate Thread

Closing Hidden Workbook when Active Workbook is Closed

 
 
=?Utf-8?B?U3VzYW5LNTIx?=
Guest
Posts: n/a
 
      23rd Sep 2005
Data.xls is a shared workbook which, when opened, also opens View.xls via the
following:

Private Sub Workbook_Open()
Workbooks.Open Filename:="C:\My Documents\TestBook\View.xls", updateLinks:=0
ActiveWorkbook.UpdateRemoteReferences = False
Workbooks("View.xls").Worksheets("Sheet1").Activate
Windows("Data.xls").Activate
ActiveWindow.Visible = False
End Sub

Data.xls remains hidden to the user throughout the session.
View.xls has 6 protected worksheets, linked to Data.xls, and is nothing more
than a user interface, allowing the user to input to and sort the information
on Data. xls, all of which is done through macros.

All of the above works fine. The problem I'm having is finding a means of
closing Data.xls when the user closes View. xls.

Currently the following is in View.xls:

Private Sub Workbook_BeforeClose(Cancel As Boolean)
Workbooks("Data.xls").Close False
ActiveWorkbook.Close False
End Sub

This results in Run-time error 9 Subscript out of range.

Both workbooks need to close, without saving, when View.xls is closed.
After numerous variations of activating & closing windows, workbooks, etc. I
am at my (admittedly limited) wits end.
Any help would be greatly appreciated.
Susan



 
Reply With Quote
 
 
 
 
=?Utf-8?B?SyBEYWxlcw==?=
Guest
Posts: n/a
 
      23rd Sep 2005
Your trouble is in the line Workbooks("Data.xls").Close False and the problem
seems to be that it does not recognize Data.xls as the workbook name. Check
the name against what appears in the project explorer (VBA editor) when the
book is open. Or refer to it as Workbooks(2).
--
- K Dales


"SusanK521" wrote:

> Data.xls is a shared workbook which, when opened, also opens View.xls via the
> following:
>
> Private Sub Workbook_Open()
> Workbooks.Open Filename:="C:\My Documents\TestBook\View.xls", updateLinks:=0
> ActiveWorkbook.UpdateRemoteReferences = False
> Workbooks("View.xls").Worksheets("Sheet1").Activate
> Windows("Data.xls").Activate
> ActiveWindow.Visible = False
> End Sub
>
> Data.xls remains hidden to the user throughout the session.
> View.xls has 6 protected worksheets, linked to Data.xls, and is nothing more
> than a user interface, allowing the user to input to and sort the information
> on Data. xls, all of which is done through macros.
>
> All of the above works fine. The problem I'm having is finding a means of
> closing Data.xls when the user closes View. xls.
>
> Currently the following is in View.xls:
>
> Private Sub Workbook_BeforeClose(Cancel As Boolean)
> Workbooks("Data.xls").Close False
> ActiveWorkbook.Close False
> End Sub
>
> This results in Run-time error 9 Subscript out of range.
>
> Both workbooks need to close, without saving, when View.xls is closed.
> After numerous variations of activating & closing windows, workbooks, etc. I
> am at my (admittedly limited) wits end.
> Any help would be greatly appreciated.
> Susan
>
>
>

 
Reply With Quote
 
=?Utf-8?B?U3VzYW5LNTIx?=
Guest
Posts: n/a
 
      23rd Sep 2005
Thank you for your suggestion. Referring to Workbooks(2) did remove the
run-time error, but did not close the workbook.

"K Dales" wrote:

> Your trouble is in the line Workbooks("Data.xls").Close False and the problem
> seems to be that it does not recognize Data.xls as the workbook name. Check
> the name against what appears in the project explorer (VBA editor) when the
> book is open. Or refer to it as Workbooks(2).
> --
> - K Dales
>
>
> "SusanK521" wrote:
>
> > Data.xls is a shared workbook which, when opened, also opens View.xls via the
> > following:
> >
> > Private Sub Workbook_Open()
> > Workbooks.Open Filename:="C:\My Documents\TestBook\View.xls", updateLinks:=0
> > ActiveWorkbook.UpdateRemoteReferences = False
> > Workbooks("View.xls").Worksheets("Sheet1").Activate
> > Windows("Data.xls").Activate
> > ActiveWindow.Visible = False
> > End Sub
> >
> > Data.xls remains hidden to the user throughout the session.
> > View.xls has 6 protected worksheets, linked to Data.xls, and is nothing more
> > than a user interface, allowing the user to input to and sort the information
> > on Data. xls, all of which is done through macros.
> >
> > All of the above works fine. The problem I'm having is finding a means of
> > closing Data.xls when the user closes View. xls.
> >
> > Currently the following is in View.xls:
> >
> > Private Sub Workbook_BeforeClose(Cancel As Boolean)
> > Workbooks("Data.xls").Close False
> > ActiveWorkbook.Close False
> > End Sub
> >
> > This results in Run-time error 9 Subscript out of range.
> >
> > Both workbooks need to close, without saving, when View.xls is closed.
> > After numerous variations of activating & closing windows, workbooks, etc. I
> > am at my (admittedly limited) wits end.
> > Any help would be greatly appreciated.
> > Susan
> >
> >
> >

 
Reply With Quote
 
Dave Peterson
Guest
Posts: n/a
 
      23rd Sep 2005
Which line was causing the error?

Private Sub Workbook_BeforeClose(Cancel As Boolean)
Workbooks("Data.xls").Close False
ActiveWorkbook.Close False
End Sub

When I tested, I had data.xls open as a hidden workbook and it worked fine.

But I think I'd change it slightly--just in case data.xls was already closed:

Private Sub Workbook_BeforeClose(Cancel As Boolean)
on error resume next
Workbooks("Data.xls").Close False
on error goto 0

me.Close False

End Sub

Me refers to the object owning the code--in this case, it refers to the view.xls
workbook. (I'd be afraid that the wrong workbook was active.)

And how do you know that data.xls wasn't closed? Did you look at the VBE
(sometimes the project appears there--even after the workbook is closed) or did
you unhide the window to see?





SusanK521 wrote:
>
> Data.xls is a shared workbook which, when opened, also opens View.xls via the
> following:
>
> Private Sub Workbook_Open()
> Workbooks.Open Filename:="C:\My Documents\TestBook\View.xls", updateLinks:=0
> ActiveWorkbook.UpdateRemoteReferences = False
> Workbooks("View.xls").Worksheets("Sheet1").Activate
> Windows("Data.xls").Activate
> ActiveWindow.Visible = False
> End Sub
>
> Data.xls remains hidden to the user throughout the session.
> View.xls has 6 protected worksheets, linked to Data.xls, and is nothing more
> than a user interface, allowing the user to input to and sort the information
> on Data. xls, all of which is done through macros.
>
> All of the above works fine. The problem I'm having is finding a means of
> closing Data.xls when the user closes View. xls.
>
> Currently the following is in View.xls:
>
> Private Sub Workbook_BeforeClose(Cancel As Boolean)
> Workbooks("Data.xls").Close False
> ActiveWorkbook.Close False
> End Sub
>
> This results in Run-time error 9 Subscript out of range.
>
> Both workbooks need to close, without saving, when View.xls is closed.
> After numerous variations of activating & closing windows, workbooks, etc. I
> am at my (admittedly limited) wits end.
> Any help would be greatly appreciated.
> Susan


--

Dave Peterson
 
Reply With Quote
 
=?Utf-8?B?U3VzYW5LNTIx?=
Guest
Posts: n/a
 
      23rd Sep 2005
Using your code worked! It closed both workbooks! Thank you so much!

Just to answer your question, though...
Workbooks("Data.xls").Close False
is the line that was causing the run-time error.

I did change it to Workbooks(2) as suggested earlier and I didn't get the
run-time error but it did not close Data.xls. I determined Data.xls was still
open by unhiding it.

Thanks again,
Susan

"Dave Peterson" wrote:

> Which line was causing the error?
>
> Private Sub Workbook_BeforeClose(Cancel As Boolean)
> Workbooks("Data.xls").Close False
> ActiveWorkbook.Close False
> End Sub
>
> When I tested, I had data.xls open as a hidden workbook and it worked fine.
>
> But I think I'd change it slightly--just in case data.xls was already closed:
>
> Private Sub Workbook_BeforeClose(Cancel As Boolean)
> on error resume next
> Workbooks("Data.xls").Close False
> on error goto 0
>
> me.Close False
>
> End Sub
>
> Me refers to the object owning the code--in this case, it refers to the view.xls
> workbook. (I'd be afraid that the wrong workbook was active.)
>
> And how do you know that data.xls wasn't closed? Did you look at the VBE
> (sometimes the project appears there--even after the workbook is closed) or did
> you unhide the window to see?
>
>
>
>
>
> SusanK521 wrote:
> >
> > Data.xls is a shared workbook which, when opened, also opens View.xls via the
> > following:
> >
> > Private Sub Workbook_Open()
> > Workbooks.Open Filename:="C:\My Documents\TestBook\View.xls", updateLinks:=0
> > ActiveWorkbook.UpdateRemoteReferences = False
> > Workbooks("View.xls").Worksheets("Sheet1").Activate
> > Windows("Data.xls").Activate
> > ActiveWindow.Visible = False
> > End Sub
> >
> > Data.xls remains hidden to the user throughout the session.
> > View.xls has 6 protected worksheets, linked to Data.xls, and is nothing more
> > than a user interface, allowing the user to input to and sort the information
> > on Data. xls, all of which is done through macros.
> >
> > All of the above works fine. The problem I'm having is finding a means of
> > closing Data.xls when the user closes View. xls.
> >
> > Currently the following is in View.xls:
> >
> > Private Sub Workbook_BeforeClose(Cancel As Boolean)
> > Workbooks("Data.xls").Close False
> > ActiveWorkbook.Close False
> > End Sub
> >
> > This results in Run-time error 9 Subscript out of range.
> >
> > Both workbooks need to close, without saving, when View.xls is closed.
> > After numerous variations of activating & closing windows, workbooks, etc. I
> > am at my (admittedly limited) wits end.
> > Any help would be greatly appreciated.
> > Susan

>
> --
>
> Dave Peterson
>

 
Reply With Quote
 
Dave Peterson
Guest
Posts: n/a
 
      24th Sep 2005
Workbooks(2) may work if you lived a very saintly life--it would be a
coincidence (in my mind) that data.xls just happened to be workbooks(2).

I really don't see a big difference between your code and mine, though. Keep an
eye out for problems.

SusanK521 wrote:
>
> Using your code worked! It closed both workbooks! Thank you so much!
>
> Just to answer your question, though...
> Workbooks("Data.xls").Close False
> is the line that was causing the run-time error.
>
> I did change it to Workbooks(2) as suggested earlier and I didn't get the
> run-time error but it did not close Data.xls. I determined Data.xls was still
> open by unhiding it.
>
> Thanks again,
> Susan
>
> "Dave Peterson" wrote:
>
> > Which line was causing the error?
> >
> > Private Sub Workbook_BeforeClose(Cancel As Boolean)
> > Workbooks("Data.xls").Close False
> > ActiveWorkbook.Close False
> > End Sub
> >
> > When I tested, I had data.xls open as a hidden workbook and it worked fine.
> >
> > But I think I'd change it slightly--just in case data.xls was already closed:
> >
> > Private Sub Workbook_BeforeClose(Cancel As Boolean)
> > on error resume next
> > Workbooks("Data.xls").Close False
> > on error goto 0
> >
> > me.Close False
> >
> > End Sub
> >
> > Me refers to the object owning the code--in this case, it refers to the view.xls
> > workbook. (I'd be afraid that the wrong workbook was active.)
> >
> > And how do you know that data.xls wasn't closed? Did you look at the VBE
> > (sometimes the project appears there--even after the workbook is closed) or did
> > you unhide the window to see?
> >
> >
> >
> >
> >
> > SusanK521 wrote:
> > >
> > > Data.xls is a shared workbook which, when opened, also opens View.xls via the
> > > following:
> > >
> > > Private Sub Workbook_Open()
> > > Workbooks.Open Filename:="C:\My Documents\TestBook\View.xls", updateLinks:=0
> > > ActiveWorkbook.UpdateRemoteReferences = False
> > > Workbooks("View.xls").Worksheets("Sheet1").Activate
> > > Windows("Data.xls").Activate
> > > ActiveWindow.Visible = False
> > > End Sub
> > >
> > > Data.xls remains hidden to the user throughout the session.
> > > View.xls has 6 protected worksheets, linked to Data.xls, and is nothing more
> > > than a user interface, allowing the user to input to and sort the information
> > > on Data. xls, all of which is done through macros.
> > >
> > > All of the above works fine. The problem I'm having is finding a means of
> > > closing Data.xls when the user closes View. xls.
> > >
> > > Currently the following is in View.xls:
> > >
> > > Private Sub Workbook_BeforeClose(Cancel As Boolean)
> > > Workbooks("Data.xls").Close False
> > > ActiveWorkbook.Close False
> > > End Sub
> > >
> > > This results in Run-time error 9 Subscript out of range.
> > >
> > > Both workbooks need to close, without saving, when View.xls is closed.
> > > After numerous variations of activating & closing windows, workbooks, etc. I
> > > am at my (admittedly limited) wits end.
> > > Any help would be greatly appreciated.
> > > Susan

> >
> > --
> >
> > Dave Peterson
> >


--

Dave Peterson
 
Reply With Quote
 
 
 
Reply

Thread Tools
Rate This Thread
Rate This Thread:

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off
Trackbacks are On
Pingbacks are On
Refbacks are Off


Similar Threads
Thread Thread Starter Forum Replies Last Post
Automatically closing slave workbook when main workbook is closed... Potsy Microsoft Excel Discussion 0 9th Mar 2010 11:48 AM
Automatically closing slave workbook when main workbook is closed... Potsy Microsoft Excel Discussion 0 9th Mar 2010 11:46 AM
Workbook closed by VBA not Closing Properly =?Utf-8?B?YmxheW5l?= Microsoft Excel Programming 2 17th Nov 2005 07:35 PM
Error on closing a hidden workbook =?Utf-8?B?QmVTbWFydA==?= Microsoft Excel Programming 3 23rd Sep 2005 01:41 AM
copy worksheet from closed workbook to active workbook using vba =?Utf-8?B?bWFuZ28=?= Microsoft Excel Worksheet Functions 6 9th Dec 2004 07:55 AM


Features
 

Advertising
 

Newsgroups
 


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