如何防止某些宏在工作簿中运行?

时间:2019-01-17 23:55:09

标签: excel vba

我有一组相当复杂的脚本来为我的工作执行某些功能。由于工作的性质,我已经验证了代码,并使用密码将其锁定得很严密,以防止不当使用/编辑(脚本也被锁定了,但是此查询没有问题)。这一切都很好,如果有错误,它将退出并重新保护各个工作表和工作簿。所有宏都通过相关工作表上的按钮(实际上只是分配了宏的对象,而不是较旧样式编码的按钮)运行,并且输出良好。 但是,今天早上我发现宏仍然可以通过标准的“宏”屏幕(Alt + F8)运行。由于我有许多用于开发更新版本的脚本,因此我想禁用此功能。

我搜索了选项并找到了UserInterFaceOnly,但是它不适用于Excel 2010,因此我相信它可能不会在更高版本中使用。 有没有人知道如何禁用用户通过Alt + F8宏窗口运行宏的功能,同时允许运行分配给工作表中对象的宏?

锁定工作表/工作簿的代码如下:

For Each ws In Worksheets
        ws.Cells.Locked = True
        ws.Protect Password:=strPWD
Next ws

ActiveWorkbook.Protect Password:=strPWD

1 个答案:

答案 0 :(得分:0)

我找到了使用其他方法的好的解决方案。我没有尝试锁定功能,而是在模块的开头使用了“选项专用模块”条目,这意味着用户永远不会看到已经编写的宏。

考虑到此解决方案是显而易见的解决方案,但是以前完全没有使用“私有模块”选项,因此我最初并没有想到。希望我对自己问题的回答将来能使其他人受益。