Here's what I've seen done before.
Set up a worksheet that explains to the user that macros need to be
enabled, and how to enable them. Make all other sheets xlVeryHidden.
Password your VBA project so that users cannot change this property.
They won't be able to do it from the Immediate window either, if
macros are disabled.
In your Workbook_Open code, call a procedure to unhide the data entry
sheets, and hide the "enable your macros" sheet. This will only occur
if macros are enabled. Likewise, insert code to re-hide them in your
This way, while the workbook won't close by itself with macros
disabled, it will not allow the user to perform data entry either.
Instead, it will instruct the user to close and reopen the workbook,
and enable macros. If the user screws it up again, this process
If the user does enable macros, the Workbook_Open code will setup the
workbook for proper data entry, with all your macros operating as
Hope this helps your situation.