Home |
Search |
Today's Posts |
|
#1
![]()
Posted to microsoft.public.excel.programming
|
|||
|
|||
![]()
Excel XP & Win XP
I'm helping an OP and he has come up with an interesting requirement that I have never run into. Using the Workbook_BeforeClose event macro, he wants to close only the active workbook if there are other workbooks open. However, if the active workbook is the only open workbook, he wants to close the application (Excel) as well. The tricky part is that the code for this is in the active workbook. Once the active workbook closes, the code stops running and cannot check for an open workbook. The only solution I see is to check to see if more than one workbook is open BEFORE closing the active workbook. My first question: How can I check to see if more than one workbook is open? My second question: How can I code to close Excel AFTER the workbook containing the code is closed? Thanks for your time. Otto |
#2
![]()
Posted to microsoft.public.excel.programming
|
|||
|
|||
![]()
Hi,
Try the below code. It will check to see if any other WorkBooks are open, if there is a another open then they will remain open and the ActiveWork book will close. If there is No other WB opened, then Excel quits. Private Sub Workbook_BeforeClose(Cancel As Boolean) On Error Resume Next Dim WB As Workbook For Each WB In Application.Workbooks Debug.Print WB.Name If WB.Name < ThisWorkbook.Name Then If WB.Windows(1).Visible = True Then Exit Sub End If Next Sheets("Sheet1").Select Application.Quit End Sub Might help you out Corey.... "Otto Moehrbach" wrote in message ... Excel XP & Win XP I'm helping an OP and he has come up with an interesting requirement that I have never run into. Using the Workbook_BeforeClose event macro, he wants to close only the active workbook if there are other workbooks open. However, if the active workbook is the only open workbook, he wants to close the application (Excel) as well. The tricky part is that the code for this is in the active workbook. Once the active workbook closes, the code stops running and cannot check for an open workbook. The only solution I see is to check to see if more than one workbook is open BEFORE closing the active workbook. My first question: How can I check to see if more than one workbook is open? My second question: How can I code to close Excel AFTER the workbook containing the code is closed? Thanks for your time. Otto |
#3
![]()
Posted to microsoft.public.excel.programming
|
|||
|
|||
![]()
How about:
Option Explicit Private Sub Workbook_BeforeClose(Cancel As Boolean) If Application.Workbooks.Count 1 Then 'just let the workbook close Else Application.Quit End If End Sub Otto Moehrbach wrote: Excel XP & Win XP I'm helping an OP and he has come up with an interesting requirement that I have never run into. Using the Workbook_BeforeClose event macro, he wants to close only the active workbook if there are other workbooks open. However, if the active workbook is the only open workbook, he wants to close the application (Excel) as well. The tricky part is that the code for this is in the active workbook. Once the active workbook closes, the code stops running and cannot check for an open workbook. The only solution I see is to check to see if more than one workbook is open BEFORE closing the active workbook. My first question: How can I check to see if more than one workbook is open? My second question: How can I code to close Excel AFTER the workbook containing the code is closed? Thanks for your time. Otto -- Dave Peterson |
#4
![]()
Posted to microsoft.public.excel.programming
|
|||
|
|||
![]()
Dave
Maybe I misunderstood your code, but I used the following exactly as written. The result, if only the one workbook is open, is that the WB closes and Excel just sits there, open. Private Sub Workbook_BeforeClose(Cancel As Boolean) If Application.Workbooks.Count 1 Then 'just let the workbook close Else Application.Quit End If End Sub "Dave Peterson" wrote in message ... How about: Option Explicit Private Sub Workbook_BeforeClose(Cancel As Boolean) If Application.Workbooks.Count 1 Then 'just let the workbook close Else Application.Quit End If End Sub Otto Moehrbach wrote: Excel XP & Win XP I'm helping an OP and he has come up with an interesting requirement that I have never run into. Using the Workbook_BeforeClose event macro, he wants to close only the active workbook if there are other workbooks open. However, if the active workbook is the only open workbook, he wants to close the application (Excel) as well. The tricky part is that the code for this is in the active workbook. Once the active workbook closes, the code stops running and cannot check for an open workbook. The only solution I see is to check to see if more than one workbook is open BEFORE closing the active workbook. My first question: How can I check to see if more than one workbook is open? My second question: How can I code to close Excel AFTER the workbook containing the code is closed? Thanks for your time. Otto -- Dave Peterson |
#5
![]()
Posted to microsoft.public.excel.programming
|
|||
|
|||
![]()
Excel closed for me.
You sure you only have one open workbook. Try adding: msgbox application.workbooks.count to the top of the routine. Otto Moehrbach wrote: Dave Maybe I misunderstood your code, but I used the following exactly as written. The result, if only the one workbook is open, is that the WB closes and Excel just sits there, open. Private Sub Workbook_BeforeClose(Cancel As Boolean) If Application.Workbooks.Count 1 Then 'just let the workbook close Else Application.Quit End If End Sub "Dave Peterson" wrote in message ... How about: Option Explicit Private Sub Workbook_BeforeClose(Cancel As Boolean) If Application.Workbooks.Count 1 Then 'just let the workbook close Else Application.Quit End If End Sub Otto Moehrbach wrote: Excel XP & Win XP I'm helping an OP and he has come up with an interesting requirement that I have never run into. Using the Workbook_BeforeClose event macro, he wants to close only the active workbook if there are other workbooks open. However, if the active workbook is the only open workbook, he wants to close the application (Excel) as well. The tricky part is that the code for this is in the active workbook. Once the active workbook closes, the code stops running and cannot check for an open workbook. The only solution I see is to check to see if more than one workbook is open BEFORE closing the active workbook. My first question: How can I check to see if more than one workbook is open? My second question: How can I code to close Excel AFTER the workbook containing the code is closed? Thanks for your time. Otto -- Dave Peterson -- Dave Peterson |
#6
![]()
Posted to microsoft.public.excel.programming
|
|||
|
|||
![]()
Try it another way:
Private Sub Workbook_BeforeClose(Cancel As Boolean) If Application.Workbooks.Count < 2 Then ActiveWorkbook.Saved = True Application.Quit End If End Sub "Otto Moehrbach" wrote: Dave Maybe I misunderstood your code, but I used the following exactly as written. The result, if only the one workbook is open, is that the WB closes and Excel just sits there, open. Private Sub Workbook_BeforeClose(Cancel As Boolean) If Application.Workbooks.Count 1 Then 'just let the workbook close Else Application.Quit End If End Sub "Dave Peterson" wrote in message ... How about: Option Explicit Private Sub Workbook_BeforeClose(Cancel As Boolean) If Application.Workbooks.Count 1 Then 'just let the workbook close Else Application.Quit End If End Sub Otto Moehrbach wrote: Excel XP & Win XP I'm helping an OP and he has come up with an interesting requirement that I have never run into. Using the Workbook_BeforeClose event macro, he wants to close only the active workbook if there are other workbooks open. However, if the active workbook is the only open workbook, he wants to close the application (Excel) as well. The tricky part is that the code for this is in the active workbook. Once the active workbook closes, the code stops running and cannot check for an open workbook. The only solution I see is to check to see if more than one workbook is open BEFORE closing the active workbook. My first question: How can I check to see if more than one workbook is open? My second question: How can I code to close Excel AFTER the workbook containing the code is closed? Thanks for your time. Otto -- Dave Peterson |
#7
![]()
Posted to microsoft.public.excel.programming
|
|||
|
|||
![]()
That should be:
ThisWorkbook.Saved = True "Otto Moehrbach" wrote: Dave Maybe I misunderstood your code, but I used the following exactly as written. The result, if only the one workbook is open, is that the WB closes and Excel just sits there, open. Private Sub Workbook_BeforeClose(Cancel As Boolean) If Application.Workbooks.Count 1 Then 'just let the workbook close Else Application.Quit End If End Sub "Dave Peterson" wrote in message ... How about: Option Explicit Private Sub Workbook_BeforeClose(Cancel As Boolean) If Application.Workbooks.Count 1 Then 'just let the workbook close Else Application.Quit End If End Sub Otto Moehrbach wrote: Excel XP & Win XP I'm helping an OP and he has come up with an interesting requirement that I have never run into. Using the Workbook_BeforeClose event macro, he wants to close only the active workbook if there are other workbooks open. However, if the active workbook is the only open workbook, he wants to close the application (Excel) as well. The tricky part is that the code for this is in the active workbook. Once the active workbook closes, the code stops running and cannot check for an open workbook. The only solution I see is to check to see if more than one workbook is open BEFORE closing the active workbook. My first question: How can I check to see if more than one workbook is open? My second question: How can I code to close Excel AFTER the workbook containing the code is closed? Thanks for your time. Otto -- Dave Peterson |
#8
![]()
Posted to microsoft.public.excel.programming
|
|||
|
|||
![]()
Don't forget the personal.xls is included in the workbook count.
"Otto Moehrbach" wrote: Dave Maybe I misunderstood your code, but I used the following exactly as written. The result, if only the one workbook is open, is that the WB closes and Excel just sits there, open. Private Sub Workbook_BeforeClose(Cancel As Boolean) If Application.Workbooks.Count 1 Then 'just let the workbook close Else Application.Quit End If End Sub "Dave Peterson" wrote in message ... How about: Option Explicit Private Sub Workbook_BeforeClose(Cancel As Boolean) If Application.Workbooks.Count 1 Then 'just let the workbook close Else Application.Quit End If End Sub Otto Moehrbach wrote: Excel XP & Win XP I'm helping an OP and he has come up with an interesting requirement that I have never run into. Using the Workbook_BeforeClose event macro, he wants to close only the active workbook if there are other workbooks open. However, if the active workbook is the only open workbook, he wants to close the application (Excel) as well. The tricky part is that the code for this is in the active workbook. Once the active workbook closes, the code stops running and cannot check for an open workbook. The only solution I see is to check to see if more than one workbook is open BEFORE closing the active workbook. My first question: How can I check to see if more than one workbook is open? My second question: How can I code to close Excel AFTER the workbook containing the code is closed? Thanks for your time. Otto -- Dave Peterson |
#9
![]()
Posted to microsoft.public.excel.programming
|
|||
|
|||
![]()
Yes, I meant to mention that any hidden workbooks will be in the count, so if
Excel is not closing when you think you only have one wb open, then step through the code and see how many shows with the Workbooks.Count and if it is more than 1, you have a hidden wb somewhere. "JMB" wrote: Don't forget the personal.xls is included in the workbook count. "Otto Moehrbach" wrote: Dave Maybe I misunderstood your code, but I used the following exactly as written. The result, if only the one workbook is open, is that the WB closes and Excel just sits there, open. Private Sub Workbook_BeforeClose(Cancel As Boolean) If Application.Workbooks.Count 1 Then 'just let the workbook close Else Application.Quit End If End Sub "Dave Peterson" wrote in message ... How about: Option Explicit Private Sub Workbook_BeforeClose(Cancel As Boolean) If Application.Workbooks.Count 1 Then 'just let the workbook close Else Application.Quit End If End Sub Otto Moehrbach wrote: Excel XP & Win XP I'm helping an OP and he has come up with an interesting requirement that I have never run into. Using the Workbook_BeforeClose event macro, he wants to close only the active workbook if there are other workbooks open. However, if the active workbook is the only open workbook, he wants to close the application (Excel) as well. The tricky part is that the code for this is in the active workbook. Once the active workbook closes, the code stops running and cannot check for an open workbook. The only solution I see is to check to see if more than one workbook is open BEFORE closing the active workbook. My first question: How can I check to see if more than one workbook is open? My second question: How can I code to close Excel AFTER the workbook containing the code is closed? Thanks for your time. Otto -- Dave Peterson |
#10
![]()
Posted to microsoft.public.excel.programming
|
|||
|
|||
![]()
Sub wbks()
x = Workbooks.Count MsgBox x 'Gives number or workbooks ThisWorkbook.Saved = True Application.Quit 'closes the active workbook and Excel. If you have other wb open, Excel won't close. "Otto Moehrbach" wrote: Excel XP & Win XP I'm helping an OP and he has come up with an interesting requirement that I have never run into. Using the Workbook_BeforeClose event macro, he wants to close only the active workbook if there are other workbooks open. However, if the active workbook is the only open workbook, he wants to close the application (Excel) as well. The tricky part is that the code for this is in the active workbook. Once the active workbook closes, the code stops running and cannot check for an open workbook. The only solution I see is to check to see if more than one workbook is open BEFORE closing the active workbook. My first question: How can I check to see if more than one workbook is open? My second question: How can I code to close Excel AFTER the workbook containing the code is closed? Thanks for your time. Otto |
Reply |
Thread Tools | Search this Thread |
Display Modes | |
|
|
![]() |
||||
Thread | Forum | |||
How to: Open closed workbook/Search data tables/Return data to open workbook | Excel Discussion (Misc queries) | |||
Opening Excel, Book1 opens, remains open with other workbook open | Excel Discussion (Misc queries) | |||
how do i open a data workbook when i open a timesheet workbook | Excel Discussion (Misc queries) | |||
Open a specific workbook...find value from other open workbook and then insert cells values in cell next to it. | Excel Programming | |||
How do you program so that Workbook B cannot be open unless Workbook A is open? Plus I need to validation | Excel Programming |