Home |
Search |
Today's Posts |
|
#1
![]()
Posted to microsoft.public.excel.programming
|
|||
|
|||
![]()
That is all I need to know: Just how can I obtain what is probably a boolean
value telling me the user canceled a close. -- TomThumb |
#2
![]()
Posted to microsoft.public.excel.programming
|
|||
|
|||
![]()
"user canceled a close" - do you mean if user cancels Excel-quit or merely
while doing file-close, that might be relevant depending on your ultimate objective. However in either case there is no direct method to return your boolean if user cancelled close during the 'save unsaved file(s) prompt'. I assume you want to know so as to determine whether or not to run your close event code. One workaround is to run the close event as normal, but also call a routine with the OnTime method to restore as-was. Eg with an addins, might want to remove all menus as normal in the close event then put them back again a few seconds later if the workbook is still open. A different approach is to use a Com-addin. This has the advantage that its close event only fires when Excel really is about to quit and won't be cancelled. There are various ways to get the CAI to call a routine in the wb to run close code 'only' if Excel and hence the file is about to close. I believe Chip Pearson has made available on his site a CAI to do that, which makes use of the 'hidden namespace'. I have a CAI that does similar but with a different approach (doesn't use the namespace) if interested. Regards, Peter T "TomThumb" wrote in message ... That is all I need to know: Just how can I obtain what is probably a boolean value telling me the user canceled a close. -- TomThumb |
#3
![]()
Posted to microsoft.public.excel.programming
|
|||
|
|||
![]()
Peter T:
Thank you for responding to my plea for help. I should have spelled out what I have in mind: I have an Add-In Toolbar that I delete in my WorkBookBeforeClose event procedure. But when the user closes and then clicks "Cancel" when asked to Save, the Close is terminated and the toolbar is gone. I want to restore that toolbar, or not delete it in the first place. Can I somehow get a boolean from WorkbookBeforeSave? -- TomThumb "Peter T" wrote: "user canceled a close" - do you mean if user cancels Excel-quit or merely while doing file-close, that might be relevant depending on your ultimate objective. However in either case there is no direct method to return your boolean if user cancelled close during the 'save unsaved file(s) prompt'. I assume you want to know so as to determine whether or not to run your close event code. One workaround is to run the close event as normal, but also call a routine with the OnTime method to restore as-was. Eg with an addins, might want to remove all menus as normal in the close event then put them back again a few seconds later if the workbook is still open. A different approach is to use a Com-addin. This has the advantage that its close event only fires when Excel really is about to quit and won't be cancelled. There are various ways to get the CAI to call a routine in the wb to run close code 'only' if Excel and hence the file is about to close. I believe Chip Pearson has made available on his site a CAI to do that, which makes use of the 'hidden namespace'. I have a CAI that does similar but with a different approach (doesn't use the namespace) if interested. Regards, Peter T "TomThumb" wrote in message ... That is all I need to know: Just how can I obtain what is probably a boolean value telling me the user canceled a close. -- TomThumb |
#4
![]()
Posted to microsoft.public.excel.programming
|
|||
|
|||
![]()
Afraid all I can do is reiterate my previous response which, as it turns
out, appears to have fully anticipated your scenario and objective - Can I somehow get a boolean from WorkbookBeforeSave? No, neither can you get it (user cancelled close) from any other event, at least not directly. I want to restore that toolbar, or not delete it in the first place. Try the workaround I suggested previously - If working with VBA only, you will need to let your close event code run as normally, ie delete your Toolbar. Then call your routine to add or restore your toolbar with the Ontime method and a small delay. Five seconds should be plenty, doesn't matter if user hangs around for more than that as it will fire when allowed, assuming of course the workbook is still open, ie user cancelled close. Eg, add the following in your close event - ' in Workbook_BeforeClose or sub auto_close Dim sMacro as string code to delete toolbar, or call relevant routine to do that sMacro = "AddToolBar" sMacro = "'" & ThisWorkbook.Name & "'!" & sMacro Application.Ontime Now + timeserial(0,0,5) sMacro ' adjust the 5 second delay to suit Put Sub AddToolBar() in a normal module with code to add or restore your toolbar. This might be the same routine as called in the Open event. You can include additional arguments in the macro string if necessary. Alternatively try Chip Pearson's Com-addin http://www.cpearson.com/excel/ExcelShutdown.htm or as I mentioned I also have a Com-addin that employs some different methods you're welcome to try if interested. Regards, Peter T "TomThumb" wrote in message ... Peter T: Thank you for responding to my plea for help. I should have spelled out what I have in mind: I have an Add-In Toolbar that I delete in my WorkBookBeforeClose event procedure. But when the user closes and then clicks "Cancel" when asked to Save, the Close is terminated and the toolbar is gone. I want to restore that toolbar, or not delete it in the first place. Can I somehow get a boolean from WorkbookBeforeSave? -- TomThumb "Peter T" wrote: "user canceled a close" - do you mean if user cancels Excel-quit or merely while doing file-close, that might be relevant depending on your ultimate objective. However in either case there is no direct method to return your boolean if user cancelled close during the 'save unsaved file(s) prompt'. I assume you want to know so as to determine whether or not to run your close event code. One workaround is to run the close event as normal, but also call a routine with the OnTime method to restore as-was. Eg with an addins, might want to remove all menus as normal in the close event then put them back again a few seconds later if the workbook is still open. A different approach is to use a Com-addin. This has the advantage that its close event only fires when Excel really is about to quit and won't be cancelled. There are various ways to get the CAI to call a routine in the wb to run close code 'only' if Excel and hence the file is about to close. I believe Chip Pearson has made available on his site a CAI to do that, which makes use of the 'hidden namespace'. I have a CAI that does similar but with a different approach (doesn't use the namespace) if interested. Regards, Peter T "TomThumb" wrote in message ... That is all I need to know: Just how can I obtain what is probably a boolean value telling me the user canceled a close. -- TomThumb |
#5
![]()
Posted to microsoft.public.excel.programming
|
|||
|
|||
![]()
To Peter T:
Thanks for your help. -- TomThumb "Peter T" wrote: Afraid all I can do is reiterate my previous response which, as it turns out, appears to have fully anticipated your scenario and objective - Can I somehow get a boolean from WorkbookBeforeSave? No, neither can you get it (user cancelled close) from any other event, at least not directly. I want to restore that toolbar, or not delete it in the first place. Try the workaround I suggested previously - If working with VBA only, you will need to let your close event code run as normally, ie delete your Toolbar. Then call your routine to add or restore your toolbar with the Ontime method and a small delay. Five seconds should be plenty, doesn't matter if user hangs around for more than that as it will fire when allowed, assuming of course the workbook is still open, ie user cancelled close. Eg, add the following in your close event - ' in Workbook_BeforeClose or sub auto_close Dim sMacro as string code to delete toolbar, or call relevant routine to do that sMacro = "AddToolBar" sMacro = "'" & ThisWorkbook.Name & "'!" & sMacro Application.Ontime Now + timeserial(0,0,5) sMacro ' adjust the 5 second delay to suit Put Sub AddToolBar() in a normal module with code to add or restore your toolbar. This might be the same routine as called in the Open event. You can include additional arguments in the macro string if necessary. Alternatively try Chip Pearson's Com-addin http://www.cpearson.com/excel/ExcelShutdown.htm or as I mentioned I also have a Com-addin that employs some different methods you're welcome to try if interested. Regards, Peter T "TomThumb" wrote in message ... Peter T: Thank you for responding to my plea for help. I should have spelled out what I have in mind: I have an Add-In Toolbar that I delete in my WorkBookBeforeClose event procedure. But when the user closes and then clicks "Cancel" when asked to Save, the Close is terminated and the toolbar is gone. I want to restore that toolbar, or not delete it in the first place. Can I somehow get a boolean from WorkbookBeforeSave? -- TomThumb "Peter T" wrote: "user canceled a close" - do you mean if user cancels Excel-quit or merely while doing file-close, that might be relevant depending on your ultimate objective. However in either case there is no direct method to return your boolean if user cancelled close during the 'save unsaved file(s) prompt'. I assume you want to know so as to determine whether or not to run your close event code. One workaround is to run the close event as normal, but also call a routine with the OnTime method to restore as-was. Eg with an addins, might want to remove all menus as normal in the close event then put them back again a few seconds later if the workbook is still open. A different approach is to use a Com-addin. This has the advantage that its close event only fires when Excel really is about to quit and won't be cancelled. There are various ways to get the CAI to call a routine in the wb to run close code 'only' if Excel and hence the file is about to close. I believe Chip Pearson has made available on his site a CAI to do that, which makes use of the 'hidden namespace'. I have a CAI that does similar but with a different approach (doesn't use the namespace) if interested. Regards, Peter T "TomThumb" wrote in message ... That is all I need to know: Just how can I obtain what is probably a boolean value telling me the user canceled a close. -- TomThumb |
#6
![]()
Posted to microsoft.public.excel.programming
|
|||
|
|||
![]()
TomThumb,
Instead of the Open and BeforeClose events, look at using Activate and Deactivate instead. When a workbook closes the Deactivate event fires after the BeforeClose and the Cancel message. Also, then your toolbar will be deleted when you switch to another workbook, which I'm guessing is also what you want. hth, Doug "TomThumb" wrote in message ... Peter T: Thank you for responding to my plea for help. I should have spelled out what I have in mind: I have an Add-In Toolbar that I delete in my WorkBookBeforeClose event procedure. But when the user closes and then clicks "Cancel" when asked to Save, the Close is terminated and the toolbar is gone. I want to restore that toolbar, or not delete it in the first place. Can I somehow get a boolean from WorkbookBeforeSave? -- TomThumb "Peter T" wrote: "user canceled a close" - do you mean if user cancels Excel-quit or merely while doing file-close, that might be relevant depending on your ultimate objective. However in either case there is no direct method to return your boolean if user cancelled close during the 'save unsaved file(s) prompt'. I assume you want to know so as to determine whether or not to run your close event code. One workaround is to run the close event as normal, but also call a routine with the OnTime method to restore as-was. Eg with an addins, might want to remove all menus as normal in the close event then put them back again a few seconds later if the workbook is still open. A different approach is to use a Com-addin. This has the advantage that its close event only fires when Excel really is about to quit and won't be cancelled. There are various ways to get the CAI to call a routine in the wb to run close code 'only' if Excel and hence the file is about to close. I believe Chip Pearson has made available on his site a CAI to do that, which makes use of the 'hidden namespace'. I have a CAI that does similar but with a different approach (doesn't use the namespace) if interested. Regards, Peter T "TomThumb" wrote in message ... That is all I need to know: Just how can I obtain what is probably a boolean value telling me the user canceled a close. -- TomThumb |
#7
![]()
Posted to microsoft.public.excel.programming
|
|||
|
|||
![]()
Hi Doug,
The Deactivate & Activate events are not triggered in an addin, which as I understand is what the OP wants to cater for. Regards, Peter T "Doug Glancy" wrote in message ... TomThumb, Instead of the Open and BeforeClose events, look at using Activate and Deactivate instead. When a workbook closes the Deactivate event fires after the BeforeClose and the Cancel message. Also, then your toolbar will be deleted when you switch to another workbook, which I'm guessing is also what you want. hth, Doug "TomThumb" wrote in message ... Peter T: Thank you for responding to my plea for help. I should have spelled out what I have in mind: I have an Add-In Toolbar that I delete in my WorkBookBeforeClose event procedure. But when the user closes and then clicks "Cancel" when asked to Save, the Close is terminated and the toolbar is gone. I want to restore that toolbar, or not delete it in the first place. Can I somehow get a boolean from WorkbookBeforeSave? -- TomThumb "Peter T" wrote: "user canceled a close" - do you mean if user cancels Excel-quit or merely while doing file-close, that might be relevant depending on your ultimate objective. However in either case there is no direct method to return your boolean if user cancelled close during the 'save unsaved file(s) prompt'. I assume you want to know so as to determine whether or not to run your close event code. One workaround is to run the close event as normal, but also call a routine with the OnTime method to restore as-was. Eg with an addins, might want to remove all menus as normal in the close event then put them back again a few seconds later if the workbook is still open. A different approach is to use a Com-addin. This has the advantage that its close event only fires when Excel really is about to quit and won't be cancelled. There are various ways to get the CAI to call a routine in the wb to run close code 'only' if Excel and hence the file is about to close. I believe Chip Pearson has made available on his site a CAI to do that, which makes use of the 'hidden namespace'. I have a CAI that does similar but with a different approach (doesn't use the namespace) if interested. Regards, Peter T "TomThumb" wrote in message ... That is all I need to know: Just how can I obtain what is probably a boolean value telling me the user canceled a close. -- TomThumb |
#8
![]()
Posted to microsoft.public.excel.programming
|
|||
|
|||
![]()
Peter T,
Then why is the user being prompted to save changes? I thought it was the situation where the toolbar is created at workbook open and deleted at close. Doug "Peter T" <peter_t@discussions wrote in message ... Hi Doug, The Deactivate & Activate events are not triggered in an addin, which as I understand is what the OP wants to cater for. Regards, Peter T "Doug Glancy" wrote in message ... TomThumb, Instead of the Open and BeforeClose events, look at using Activate and Deactivate instead. When a workbook closes the Deactivate event fires after the BeforeClose and the Cancel message. Also, then your toolbar will be deleted when you switch to another workbook, which I'm guessing is also what you want. hth, Doug "TomThumb" wrote in message ... Peter T: Thank you for responding to my plea for help. I should have spelled out what I have in mind: I have an Add-In Toolbar that I delete in my WorkBookBeforeClose event procedure. But when the user closes and then clicks "Cancel" when asked to Save, the Close is terminated and the toolbar is gone. I want to restore that toolbar, or not delete it in the first place. Can I somehow get a boolean from WorkbookBeforeSave? -- TomThumb "Peter T" wrote: "user canceled a close" - do you mean if user cancels Excel-quit or merely while doing file-close, that might be relevant depending on your ultimate objective. However in either case there is no direct method to return your boolean if user cancelled close during the 'save unsaved file(s) prompt'. I assume you want to know so as to determine whether or not to run your close event code. One workaround is to run the close event as normal, but also call a routine with the OnTime method to restore as-was. Eg with an addins, might want to remove all menus as normal in the close event then put them back again a few seconds later if the workbook is still open. A different approach is to use a Com-addin. This has the advantage that its close event only fires when Excel really is about to quit and won't be cancelled. There are various ways to get the CAI to call a routine in the wb to run close code 'only' if Excel and hence the file is about to close. I believe Chip Pearson has made available on his site a CAI to do that, which makes use of the 'hidden namespace'. I have a CAI that does similar but with a different approach (doesn't use the namespace) if interested. Regards, Peter T "TomThumb" wrote in message ... That is all I need to know: Just how can I obtain what is probably a boolean value telling me the user canceled a close. -- TomThumb |
#9
![]()
Posted to microsoft.public.excel.programming
|
|||
|
|||
![]()
Thanks, Doug, the following code did what I wanted:
Private Sub Workbook_Deactivate() CreateToolBar Application.CommandBars(Version).Delete End Sub -- TomThumb "Doug Glancy" wrote: TomThumb, Instead of the Open and BeforeClose events, look at using Activate and Deactivate instead. When a workbook closes the Deactivate event fires after the BeforeClose and the Cancel message. Also, then your toolbar will be deleted when you switch to another workbook, which I'm guessing is also what you want. hth, Doug "TomThumb" wrote in message ... Peter T: Thank you for responding to my plea for help. I should have spelled out what I have in mind: I have an Add-In Toolbar that I delete in my WorkBookBeforeClose event procedure. But when the user closes and then clicks "Cancel" when asked to Save, the Close is terminated and the toolbar is gone. I want to restore that toolbar, or not delete it in the first place. Can I somehow get a boolean from WorkbookBeforeSave? -- TomThumb "Peter T" wrote: "user canceled a close" - do you mean if user cancels Excel-quit or merely while doing file-close, that might be relevant depending on your ultimate objective. However in either case there is no direct method to return your boolean if user cancelled close during the 'save unsaved file(s) prompt'. I assume you want to know so as to determine whether or not to run your close event code. One workaround is to run the close event as normal, but also call a routine with the OnTime method to restore as-was. Eg with an addins, might want to remove all menus as normal in the close event then put them back again a few seconds later if the workbook is still open. A different approach is to use a Com-addin. This has the advantage that its close event only fires when Excel really is about to quit and won't be cancelled. There are various ways to get the CAI to call a routine in the wb to run close code 'only' if Excel and hence the file is about to close. I believe Chip Pearson has made available on his site a CAI to do that, which makes use of the 'hidden namespace'. I have a CAI that does similar but with a different approach (doesn't use the namespace) if interested. Regards, Peter T "TomThumb" wrote in message ... That is all I need to know: Just how can I obtain what is probably a boolean value telling me the user canceled a close. -- TomThumb |
#10
![]()
Posted to microsoft.public.excel.programming
|
|||
|
|||
![]()
TomThumb,
Good! It looks like you were trying to use application-level events before. Those require extra code - a class module among other things - and are not necessary if you are just trapping events for the workbook the code is in. Doug "TomThumb" wrote in message ... Thanks, Doug, the following code did what I wanted: Private Sub Workbook_Deactivate() CreateToolBar Application.CommandBars(Version).Delete End Sub -- TomThumb "Doug Glancy" wrote: TomThumb, Instead of the Open and BeforeClose events, look at using Activate and Deactivate instead. When a workbook closes the Deactivate event fires after the BeforeClose and the Cancel message. Also, then your toolbar will be deleted when you switch to another workbook, which I'm guessing is also what you want. hth, Doug "TomThumb" wrote in message ... Peter T: Thank you for responding to my plea for help. I should have spelled out what I have in mind: I have an Add-In Toolbar that I delete in my WorkBookBeforeClose event procedure. But when the user closes and then clicks "Cancel" when asked to Save, the Close is terminated and the toolbar is gone. I want to restore that toolbar, or not delete it in the first place. Can I somehow get a boolean from WorkbookBeforeSave? -- TomThumb "Peter T" wrote: "user canceled a close" - do you mean if user cancels Excel-quit or merely while doing file-close, that might be relevant depending on your ultimate objective. However in either case there is no direct method to return your boolean if user cancelled close during the 'save unsaved file(s) prompt'. I assume you want to know so as to determine whether or not to run your close event code. One workaround is to run the close event as normal, but also call a routine with the OnTime method to restore as-was. Eg with an addins, might want to remove all menus as normal in the close event then put them back again a few seconds later if the workbook is still open. A different approach is to use a Com-addin. This has the advantage that its close event only fires when Excel really is about to quit and won't be cancelled. There are various ways to get the CAI to call a routine in the wb to run close code 'only' if Excel and hence the file is about to close. I believe Chip Pearson has made available on his site a CAI to do that, which makes use of the 'hidden namespace'. I have a CAI that does similar but with a different approach (doesn't use the namespace) if interested. Regards, Peter T "TomThumb" wrote in message ... That is all I need to know: Just how can I obtain what is probably a boolean value telling me the user canceled a close. -- TomThumb |
Reply |
Thread Tools | Search this Thread |
Display Modes | |
|
|
![]() |
||||
Thread | Forum | |||
Unhiding worksheets if Close is Canceled | Excel Programming | |||
Don't let user close. Use macro button to close? | Excel Programming | |||
VBA Script to detect user input | Excel Programming | |||
How to detect user quitting excel | Excel Programming | |||
how to detect if user has a dialogbox open | Excel Programming |