Hi Mary,
Your last point is a bit like the chicken and egg situation. If you haven't enabled macros how can you force the workbook to be closed?
The best alternative is the one that you have already discovered, hiding all but one of the sheets in the workbook BeforeClose event and showing them again with the Open event.
Something along these lines:
In the ThisWorkbook object:<pre>Private Sub Workbook_BeforeClose(Cancel As Boolean)
Module1.HideAll
End Sub
Private Sub Workbook_Open()
Module1.ShowAll
End Sub</pre>
And in a general module, eg Module1:<pre>Sub HideAll()
Dim ws As Worksheet
'hide all sheets bar one, named "Warning"
'call from Workbook_BeforeClose
Application.ScreenUpdating = False
ThisWorkbook.Worksheets("Warning").Visible = xlSheetVisible
For Each ws In ThisWorkbook.Worksheets
If ws.Name<> "Warning" Then ws.Visible = xlSheetVeryHidden
Next
Application.ScreenUpdating = True
End Sub
Sub ShowAll()
Dim ws As Worksheet
'show all sheets, except Warning
'call from Workbook_Open
Application.ScreenUpdating = False
For Each ws In ThisWorkbook.Worksheets
If ws.Name<> "Warning" Then ws.Visible = xlSheetVisible
Next
ThisWorkbook.Worksheets("Warning").Visible = xlSheetVeryHidden
Application.ScreenUpdating = True
End Sub</pre>
Keep in mind that with Excel if the user is knowledgeable and really 'wants in' then they will find a way. The above should deter the casual user though.
EDIT: Sorry Roy. Yes, or download Dave's example workbook (which I suspect will b ealong the same lines).
_________________<font color="blue"> «««<font color="red">¤<font color="blue"><font size=+1>Richie</font><font color="red">¤<font color="blue"> »»»</font>
</gif>
This message was edited by Richie(UK) on 2002-12-13 08:56