Hide Menus

L

LiAD

Hi,

I am trying to make several worksheets ' fiddle proof'. I have sheets that
contain macros which will unlock the worksheets, perform the calculation
thats needed, updated the data then relock the worksheet from the click on a
macro. Thats fine.

I just realised however that it is very simple ro ruin everything with a
simple right click on the sheet tab to delete sheets, change code etc etc.

How I eliminate this possibility?

I also have a third sheet which at the moment I've hidden. However if a
user reinstalls the menu, he goes to format unhide sheet and the magic sheet
pops up. Is there a way of stopping this as well?

Thanks
 
B

Bob Phillips

Private mFormulaBar

Private Sub Workbook_BeforeClosex()
Dim oCB As CommandBar
For Each oCB In Application.CommandBars
oCB.Enabled = True
Next oCB

Application.DisplayFormulaBar = mFormulaBar
End Sub

Private Sub Workbook_Open()
Dim oCB As CommandBar
For Each oCB In Application.CommandBars
oCB.Enabled = False
Next oCB

mFormulaBar = Application.DisplayFormulaBar
Application.DisplayFormulaBar = False
End Sub

'This is workbook event code.
'To input this code, right click on the Excel icon on the worksheet
'(or next to the File menu if you maximise your workbooks),
'select View Code from the menu, and paste the code
 
L

LiAD

Works great! Thanks

One small point though, if I need to refind the menus to edit the file how
do I do that? As in how do I undo this?

Thanks
 
L

LiAD

Hi,

I ahev just realised that the sheet names are still editable under this
format. Is it possible to lock those as well? If the sheet names can be
changed then that can shoot everything down.

Thanks
LiAD
 
B

Bob Phillips

Just realised I left some debug code in there, it should be

Private mFormulaBar

Private Sub Workbook_BeforeClose(Cancel As Boolean)
Dim oCB As CommandBar
For Each oCB In Application.CommandBars
oCB.Enabled = True
Next oCB

Application.DisplayFormulaBar = mFormulaBar
End Sub

Private Sub Workbook_Open()
Dim oCB As CommandBar
For Each oCB In Application.CommandBars
oCB.Enabled = False
Next oCB

mFormulaBar = Application.DisplayFormulaBar
Application.DisplayFormulaBar = False
End Sub

Other part

application.CommandBars(1).enabled=true
 
B

Bob Phillips

Not really, as there is no event triggered by this change. You could keep a
list of sheets on open, and have an asynch job checking them and resetting
if they get changed.
 
Top