XL97: Auto_Close Macros Run When You Use Application.Quit

Last reviewed: March 9, 1998
Article ID: Q160462
The information in this article applies to:
  • Microsoft Excel 97 for Windows

SYMPTOMS

In Microsoft Excel, when you run a Visual Basic for Applications macro that contains the command Application.Quit, and any open workbooks contain Auto_Close macros, all of the Auto_Close macros run before Microsoft Excel quits.

CAUSE

This behavior occurs because Microsoft Excel 97 allows Auto_Close macros to run when you use Application.Quit to quit the program. When you use Application.Quit in earlier versions of Microsoft Excel, the program quits immediately without running any Auto_Close macros.

WORKAROUND

Microsoft provides examples of Visual Basic for Applications procedures for illustration only, without warranty either expressed or implied, including, but not limited to the implied warranties of merchantability and/or fitness for a particular purpose. The Visual Basic procedures in this article are provided 'as is' and Microsoft does not guarantee that they can be used in all situations. While Microsoft support engineers can help explain the functionality of a particular macro, they will not modify these examples to provide added functionality, nor will they help you construct macros to meet your specific needs. If you have limited programming experience, you may want to consult one of the Microsoft Solution Providers. Solution Providers offer a wide range of fee-based services, including creating custom macros. For more information about Microsoft Solution Providers, call Microsoft Customer Information Service at (800) 426-9400.

To quit Microsoft Excel without running any Auto_Close macros, use additional code with the Application.Quit command. The following example illustrates how to do this:

   Sub QuitMSExcel()

       'Loop through all open workbooks.
       For Each xWkbk In Workbooks

           'If the active workbook does not contain this macro, its name is
           'different. If this is the case, then
           If xWkbk.Name <> ThisWorkbook.Name Then

               'Close the workbook and save changes. Note that you
               'don't have to save changes if you don't want to. Closing
               'the workbook through this code, prevents the Auto_Close
               'macros from running.
               xWkbk.Close SaveChanges:=True

           End If

       'Loop to the next workbook. When all workbooks except for this
       'workbook are closed, exit the loop.
       Next xWkbk

       'Quit Microsoft Excel.
       Application.Quit

       'This line makes sure that an Auto_Close macro in this workbook
       'does not run, if it exists.
       ThisWorkbook.Close SaveChanges:=True

   End Sub

STATUS

This behavior is by design of Microsoft Excel 97.

MORE INFORMATION

In earlier versions of Microsoft Excel, when you use Application.Quit to quit, Microsoft Excel may still prompt you to save changes in any open workbooks. However, Auto_Close macros in these workbooks do not run.

In Microsoft Excel 97, when you use Application.Quit to quit Microsoft Excel, the Auto_Close macros run. Because of this behavior, you may want to make changes to macros that use the Application.Quit command. If you modify your macros using the workaround in this article, they still work correctly in earlier versions of Microsoft Excel.


Additional query words: XL97
Keywords : kbdta kbdtacode xlvbainfo xl97vbmigrate
Version : WINDOWS:97
Platform : WINDOWS
Issue type : kbprb


THE INFORMATION PROVIDED IN THE MICROSOFT KNOWLEDGE BASE IS PROVIDED "AS IS" WITHOUT WARRANTY OF ANY KIND. MICROSOFT DISCLAIMS ALL WARRANTIES, EITHER EXPRESS OR IMPLIED, INCLUDING THE WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. IN NO EVENT SHALL MICROSOFT CORPORATION OR ITS SUPPLIERS BE LIABLE FOR ANY DAMAGES WHATSOEVER INCLUDING DIRECT, INDIRECT, INCIDENTAL, CONSEQUENTIAL, LOSS OF BUSINESS PROFITS OR SPECIAL DAMAGES, EVEN IF MICROSOFT CORPORATION OR ITS SUPPLIERS HAVE BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. SOME STATES DO NOT ALLOW THE EXCLUSION OR LIMITATION OF LIABILITY FOR CONSEQUENTIAL OR INCIDENTAL DAMAGES SO THE FOREGOING LIMITATION MAY NOT APPLY.

Last reviewed: March 9, 1998
© 1998 Microsoft Corporation. All rights reserved. Terms of Use.