在Excel 2010中隐藏MS VBA屏幕

我在一个办公室里工作,我们有许多业余的Excel“专家”,他们不断地尝试“改进”(即快捷方式,改变逻辑,重写“更快”)电子表格。 当我在一个非常规范的世界工作时,macros需要得到公司,客户和监pipe机构的批准,所以更改macros是非常重要的。

其中一个问题是,即使在我们设置了密码保护以将表单设置为只读之后,人们也能够进入代码,并且还可以在VBA属性屏幕中设置密码。 用户似乎可以绕过密码,进入主代码,没有设置密码。

还有什么可以阻止他们进入代码? 一个被提到的想法,但我找不到一个参考是阻止VBA屏幕打开。 可以这样做吗? 任何其他意见将受到感谢。

一旦你让你的用户物理访问一台PC,你不能保证你的安全不会被打败。 整个行业甚至说:

如果一个坏家伙有无限制的物理访问你的电脑,它不是你的电脑了

密码保护至多是一种威慑。 如果您的用户已经绕过了您的保护,那么您无法完全阻止来自VBA的操作,除了完全删除VBA。

可以在没有VBAfunction的情况下安装Office,但是不能运行任何macros,所以在locking时可能会损失更多。

你可以尝试混淆你的代码,但这并不能阻止你的用户编写更多的代码。

但是,您可以使用托pipe加载项和VSTO,将代码从Excel工作簿和VBA模块中移出,然后移入.NET源代码。 组件被部署和/或安装,不能被用户轻易改变。

与我合作的大多数监pipe机构都知道VBA和密码保护的局限性,但他们也意识到允许用户使用Excel和VBA提供的function的业务优势。 他们通常认为,只要您已经实施了合理的密码和保护措施,那么对这些保护措施的任何规避都超出了典型用户的能力范围。

你必须提供合理的保护措施,并分发和执行健全的政策和程序。 是的,你会得到违反政策的人,但是如果监pipe机构对你的方法提出质疑,你将会有明确的案例。

另一方面,不要假设你的某些“专家”是恶意的,也许会组织一系列会议来讨论如何改进。 你永远不知道,他们可能有真正的优化,降低你的成本和/或提高你的性能和弹性。