XL97: Auto_Close Macros Run When You Use Application.Quit (160462)
The information in this article applies to:
- Microsoft Excel 97 for Windows
This article was previously published under Q160462 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.
This behavior is by design of Microsoft Excel.
WORKAROUNDMicrosoft provides programming examples 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. This article assumes
that you are familiar with the programming language being demonstrated and the
tools used to create and debug procedures. Microsoft support professionals can
help explain the functionality of a particular procedure, but they will not
modify these examples to provide added functionality or construct procedures to
meet your specific needs. If you have limited programming experience, you may
want to contact a Microsoft Certified Partner or the Microsoft fee-based
consulting line at (800) 936-5200. For more information about Microsoft Certified
Partners, please visit the following Microsoft Web site:
For more information about the support options that are available and about how to contact Microsoft, visit the following Microsoft Web site:
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
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.
Modification Type: | Major | Last Reviewed: | 6/23/2005 |
---|
Keywords: | kbdtacode kbprb KB160462 |
---|
|