![VBA excel - 有什么方法可以确保用户无法在即时窗口中调用/运行宏?](https://linux22.com/image/1600662/VBA%20excel%20-%20%E6%9C%89%E4%BB%80%E4%B9%88%E6%96%B9%E6%B3%95%E5%8F%AF%E4%BB%A5%E7%A1%AE%E4%BF%9D%E7%94%A8%E6%88%B7%E6%97%A0%E6%B3%95%E5%9C%A8%E5%8D%B3%E6%97%B6%E7%AA%97%E5%8F%A3%E4%B8%AD%E8%B0%83%E7%94%A8%2F%E8%BF%90%E8%A1%8C%E5%AE%8F%EF%BC%9F.png)
因此,我编写了一个 VBA 应用程序并锁定了 VBAProject(不可查看)。但当然,用户仍然可以访问即时窗口(例如,如果他们打开另一个 excel 文件并单击我的 VBAProject,即使已锁定)。尽管我的 VBAProject 被锁定且不可查看,但打开另一个 excel 的用户仍可以访问我的即时窗口并尝试运行我的宏或输入一些代码来运行。当然,他们不知道我如何命名我的宏,但可能可以运行代码来获取名称列表(过程名称)。那么 - 是否可以阻止用户在我的 VBAProject 即时窗口中运行任何代码或调用任何宏?
答案1
简短的回答:使用Private
关键字。
较长的回答是:保护源代码的唯一方法就是永远不发布它。
长答案:可以创建一个主动阻止访问 VBA 编辑器的 VBA 项目;但这是不道德的,并且它对您的源代码的保护并不比项目密码多。
考虑一下一个古老的Workbook.Close
恶作剧,即在打开工作簿后立即关闭它。用户需要做的就是禁用宏并重新打开工作簿。对于您在 VBA 中编写的任何内容也是如此。如果您依赖 VBA 来执行安全操作,那么当宏被禁用时,您的安全性就会结束。
将其与项目密码的安全性进行比较。当然,破解密码对大多数开发人员来说很容易,但这需要付出更多努力,并且会阻止大多数普通用户。重要的是,它让您和您的软件处于受人尊敬的一方。
关于使用外部工具代替或与 VBA 结合使用,存在一些讨论,但这比您提出的问题要复杂得多。如果它们的行为符合您的建议,这也符合恶意软件的任何定义。