XL97: Cannot Programmatically Close Referenced Workbook (159794)
The information in this article applies to:
- Microsoft Excel 97 for Windows
This article was previously published under Q159794 SYMPTOMS
When you set an object variable to a workbook that references another
workbook, you may be unable to programmatically close the referenced
workbook even when the workbook containing the reference is closed. You may
receive the error:
Run-time error '1004':
This workbook is currently referenced by another workbook and
cannot be closed.
For example, if Book2.xls contains a reference to Book1.xls, then the
following macro produces the error when the macro attempts to close
Book1.xls:
Sub OpenClose()
Dim wb1, wb2
'Open the workbooks and set the object variables
Set wb1 = Workbooks.Open("Book1.xls")
Set wb2 = Workbooks.Open("Book2.xls")
'Close both workbooks
wb2.close
wb1.close ' ---- This line produces the error
End Sub
CAUSE
This behavior occurs if the object variable is still set to the workbook
that contains the reference to the workbook you are trying to close.
You cannot close a workbook in Microsoft Excel 97 while that workbook is
referenced by another open workbook or by an object variable that is set to
the referenced workbook.
This is behavior by design of Microsoft Excel.
RESOLUTION
To correct this problem, set the object variable for the workbook that
contains the reference to Nothing prior to closing the referenced workbook.
By setting the object variable to Nothing, it no longer refers to the
workbook. The macro below demonstrates how to set the object variable to
Nothing so that the referenced workbook can be closed programmatically:
Sub OpenClose()
Dim wb1, wb2
'Open the workbooks and set the object variables
Set wb1 = Workbooks.Open("Book1.xls")
Set wb2 = Workbooks.Open("Book2.xls")
'Close book2
wb2.close
'Set the object variable wb2 to Nothing
Set wb2 = Nothing
'Close book1
wb1.close
End Sub
Modification Type: | Minor | Last Reviewed: | 10/11/2006 |
---|
Keywords: | kbdtacode kbProgramming KB159794 |
---|
|