Home |
Search |
Today's Posts |
#1
Posted to microsoft.public.excel.programming
|
|||
|
|||
Changing default menu item behavior
I am doing Excel Automation and I notice that when I close the Excel window
launched from my main form, EXCEL.EXE still remains in my Task Manager. I have a cleanup routine in my main form which kills the Excel process when my main form is closed. But, I would like the ability to detect when the user is closing the Excel window without closing the main form and still be able to run the cleanup function. Is there a way to detect such window closing event? If not, I can disable the close button for the Excel window, but users would still be able to use the FileExit menu item to close. In that case, I would like to change the behavior of the Exit menu item so that I can run my clean up function when FileExit is clicked. Is it possible to do so? I am using C#, but VBA sample code would be helpful too. Thank you so much. |
#2
Posted to microsoft.public.excel.programming
|
|||
|
|||
Changing default menu item behavior
Sounds like you have problems in your code. If you fully qualify your
references to excel and clear those references, then excel should close properly when a quit command issued. http://support.microsoft.com/default...b;en-us;317109 Office application does not quit after automation from Visual Studio .NET client -- Regards, Tom Ogilvy "Mehul" wrote: I am doing Excel Automation and I notice that when I close the Excel window launched from my main form, EXCEL.EXE still remains in my Task Manager. I have a cleanup routine in my main form which kills the Excel process when my main form is closed. But, I would like the ability to detect when the user is closing the Excel window without closing the main form and still be able to run the cleanup function. Is there a way to detect such window closing event? If not, I can disable the close button for the Excel window, but users would still be able to use the FileExit menu item to close. In that case, I would like to change the behavior of the Exit menu item so that I can run my clean up function when FileExit is clicked. Is it possible to do so? I am using C#, but VBA sample code would be helpful too. Thank you so much. |
#3
Posted to microsoft.public.excel.programming
|
|||
|
|||
Changing default menu item behavior
Tom,
Thanks for the prompt reply, but I think you misunderstood my question. My cleanup function correctly clears all my excel references and calls the Quit() function...so whenever the cleanup function gets called, everything is fine. My problem is that when a user manually clicks the close button on an excel window, I am not being able to detect that close event, and thus my cleanup function does not even get called. Does that make sense? Below is my cleanup function which works correctly. private void cleanUpExcel() { if (excelApplication != null) { try { excelApplication.DisplayAlerts = false; foreach (Excel.Workbook workbook in excelApplication.Workbooks) { foreach (Excel.Worksheet worksheet in workbook.Worksheets) { System.Runtime.InteropServices.Marshal.ReleaseComO bject(worksheet); } workbook.Close(false, Type.Missing, Type.Missing); System.Runtime.InteropServices.Marshal.ReleaseComO bject(workbook); } System.Runtime.InteropServices.Marshal.ReleaseComO bject(excelApplication.Workbooks); excelApplication.Quit(); System.Runtime.InteropServices.Marshal.ReleaseComO bject(excelApplication); } catch (Exception) { //Excel may have been closed via Windows Task Manager. Skip the close. } } } Mehul. "Tom Ogilvy" wrote: Sounds like you have problems in your code. If you fully qualify your references to excel and clear those references, then excel should close properly when a quit command issued. http://support.microsoft.com/default...b;en-us;317109 Office application does not quit after automation from Visual Studio .NET client -- Regards, Tom Ogilvy "Mehul" wrote: I am doing Excel Automation and I notice that when I close the Excel window launched from my main form, EXCEL.EXE still remains in my Task Manager. I have a cleanup routine in my main form which kills the Excel process when my main form is closed. But, I would like the ability to detect when the user is closing the Excel window without closing the main form and still be able to run the cleanup function. Is there a way to detect such window closing event? If not, I can disable the close button for the Excel window, but users would still be able to use the FileExit menu item to close. In that case, I would like to change the behavior of the Exit menu item so that I can run my clean up function when FileExit is clicked. Is it possible to do so? I am using C#, but VBA sample code would be helpful too. Thank you so much. |
#4
Posted to microsoft.public.excel.programming
|
|||
|
|||
Changing default menu item behavior
This group is primarily for internal VBA issues. Try asking over in the
below group: http://www.microsoft.com/office/comm...&lang=en&cr=US -- Regards, Tom Ogilvy "Mehul" wrote: Tom, Thanks for the prompt reply, but I think you misunderstood my question. My cleanup function correctly clears all my excel references and calls the Quit() function...so whenever the cleanup function gets called, everything is fine. My problem is that when a user manually clicks the close button on an excel window, I am not being able to detect that close event, and thus my cleanup function does not even get called. Does that make sense? Below is my cleanup function which works correctly. private void cleanUpExcel() { if (excelApplication != null) { try { excelApplication.DisplayAlerts = false; foreach (Excel.Workbook workbook in excelApplication.Workbooks) { foreach (Excel.Worksheet worksheet in workbook.Worksheets) { System.Runtime.InteropServices.Marshal.ReleaseComO bject(worksheet); } workbook.Close(false, Type.Missing, Type.Missing); System.Runtime.InteropServices.Marshal.ReleaseComO bject(workbook); } System.Runtime.InteropServices.Marshal.ReleaseComO bject(excelApplication.Workbooks); excelApplication.Quit(); System.Runtime.InteropServices.Marshal.ReleaseComO bject(excelApplication); } catch (Exception) { //Excel may have been closed via Windows Task Manager. Skip the close. } } } Mehul. "Tom Ogilvy" wrote: Sounds like you have problems in your code. If you fully qualify your references to excel and clear those references, then excel should close properly when a quit command issued. http://support.microsoft.com/default...b;en-us;317109 Office application does not quit after automation from Visual Studio .NET client -- Regards, Tom Ogilvy "Mehul" wrote: I am doing Excel Automation and I notice that when I close the Excel window launched from my main form, EXCEL.EXE still remains in my Task Manager. I have a cleanup routine in my main form which kills the Excel process when my main form is closed. But, I would like the ability to detect when the user is closing the Excel window without closing the main form and still be able to run the cleanup function. Is there a way to detect such window closing event? If not, I can disable the close button for the Excel window, but users would still be able to use the FileExit menu item to close. In that case, I would like to change the behavior of the Exit menu item so that I can run my clean up function when FileExit is clicked. Is it possible to do so? I am using C#, but VBA sample code would be helpful too. Thank you so much. |
Reply |
Thread Tools | Search this Thread |
Display Modes | |
|
|
Similar Threads | ||||
Thread | Forum | |||
Changing Default Paste behavior | Excel Discussion (Misc queries) | |||
How to display the first Item in a combobox as the default item | Excel Programming | |||
How to display the first Item in a combobox as the default item | Excel Programming | |||
Strange Range.item behavior? | Excel Programming | |||
Menu items added with menu item editor in older versions | Excel Discussion (Misc queries) |