S
Stephen Lloyd
I'm using Excel 2003. I have an add-in that creates a menu in the
workbook open event and uses a class module to handle application
level events. Call that xlApp.
In the xlApp_WorkbookBeforeClose() event I call code to remove the
menu. This works fine if the user is removing the add-in in the
traditional sense, i.e. Tools>AddIns etc. There is, however, an
undesired behavior when a user is attempting to close a workbook and
mistakenly clicks the close icon for the Excel Application.
If all workbooks were saved when the user misclicked, then tough luck,
restart excel. If, however, there were unsaved changes in one or more
workbooks the user is graced with an opportunity to catch their
error. A dialog box appears with options Yes, [Yes to all], No, and
Cancel. If the user selects cancel, then none of the workbooks will
close.
The problem is that the BeforeClose() events for one or more workbooks
have already fired and the add-ins menu was removed.
So, I'm looking for a way to detect this situation and either avoid
deleting the menu or add the menu again.
In what order does Excel run the BeforeClose() events? ( I assume in
the index order of the workbooks)
Application level events are fairly limited and consist mostly of
events for child objects, however, as I write this I'm wondering if
something in the WindowActivate event might work.
Any one have a solution to this problem
workbook open event and uses a class module to handle application
level events. Call that xlApp.
In the xlApp_WorkbookBeforeClose() event I call code to remove the
menu. This works fine if the user is removing the add-in in the
traditional sense, i.e. Tools>AddIns etc. There is, however, an
undesired behavior when a user is attempting to close a workbook and
mistakenly clicks the close icon for the Excel Application.
If all workbooks were saved when the user misclicked, then tough luck,
restart excel. If, however, there were unsaved changes in one or more
workbooks the user is graced with an opportunity to catch their
error. A dialog box appears with options Yes, [Yes to all], No, and
Cancel. If the user selects cancel, then none of the workbooks will
close.
The problem is that the BeforeClose() events for one or more workbooks
have already fired and the add-ins menu was removed.
So, I'm looking for a way to detect this situation and either avoid
deleting the menu or add the menu again.
In what order does Excel run the BeforeClose() events? ( I assume in
the index order of the workbooks)
Application level events are fairly limited and consist mostly of
events for child objects, however, as I write this I'm wondering if
something in the WindowActivate event might work.
Any one have a solution to this problem