Home | Contact Us | FAQ | Search & Site Map | Link to Us
Sign In | Join | Other 45 Sites in Network
Home
DiscussionsAccessExcelInfoPathOutlookPowerPointPublisherWord
DirectoryUser Groups
Related Topics
Outlook ExpressInternet ExplorerWindowsMS Server ProductsMore Topics ...

MS Office Forum / Excel / Programming / September 2007

Tip: Looking for answers? Try searching our database.

Changing default menu item behavior

Thread view: 
Enable EMail Alerts  Start New Thread
Thread rating: 
Mehul - 20 Sep 2007 15:28 GMT
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 File>Exit 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 File>Exit is clicked. Is it possible to do so?

I am using C#, but VBA sample code would be helpful too.

Thank you so much.
Tom Ogilvy - 20 Sep 2007 15:52 GMT
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.aspx?scid=kb;en-us;317109
Office application does not quit after automation from Visual Studio .NET
client

Signature

Regards,
Tom Ogilvy

> 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
[quoted text clipped - 11 lines]
>
> Thank you so much.
Mehul - 20 Sep 2007 16:04 GMT
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.ReleaseComObject(worksheet);
                 }
                 workbook.Close(false, Type.Missing, Type.Missing);
                 
System.Runtime.InteropServices.Marshal.ReleaseComObject(workbook);
             }
             
System.Runtime.InteropServices.Marshal.ReleaseComObject(excelApplication.Workbooks);
             excelApplication.Quit();
             
System.Runtime.InteropServices.Marshal.ReleaseComObject(excelApplication);
         }
         catch (Exception)
         {
             //Excel may have been closed via Windows Task Manager.  Skip
the close.
          }
     }
}

Mehul.

> Sounds like you have problems in your code.   If you fully qualify your
> references to excel and clear those references, then excel should close
[quoted text clipped - 19 lines]
> >
> > Thank you so much.
Tom Ogilvy - 20 Sep 2007 16:44 GMT
This group is primarily for internal VBA issues.  Try asking over in the
below group:

http://www.microsoft.com/office/community/en-us/default.mspx?dg=microsoft.public
.office.developer.automation&lang=en&cr=US


Signature

Regards,
Tom Ogilvy

> Tom,
>
[quoted text clipped - 65 lines]
> > >
> > > Thank you so much.
 
Sign In
Join
My Latest Posts
My Monitored Threads
My Blog
My Photo Gallery
My Profile
My Homepage

Start New Thread
Enable EMail Alerts
Rate this Thread



©2008 Advenet LLC   Privacy Policy - Terms of Use
This website includes both content owned or controlled by Advenet as well as content owned or controlled by third parties.