保护Excel VBA代码的最佳方法?

时间:2013-05-26 07:36:29

标签: excel vba password-protection

我已经组建了一个执行一些宏功能的简单Excel数据库,我需要将这个数据库分发给少数人 - 但他们无法看到宏功能如何实际工作(我必须遵循愚蠢的规则!)。实现这一目标的最佳方法是什么?

我做了一些研究,我找到了两种方法:

  • 密码保护VBA项目;但这显然很容易在网上使用现成的工具打破(我发送的人最感兴趣的是找出宏和功能如何工作;所以我几乎100%肯定他们会尝试进入它...因此密码保护似乎不足。

  • 转移到完全编译的语言,如C ++ ;我的技能非常局限于Excel和Access上的VBA,因此这是理想的解决方案;对我来说不是解决方案:(

还有其他方法吗?我想到了一个包含所有宏的'master excel文档',然后将'children'数据库发送给最终用户并让'children'数据库连接到'master' - 这样的事情可能吗?通过在线托管主人,甚至向最终用户发送主人,但除非被'儿童'数据库访问,否则使其完全无法访问?

3 个答案:

答案 0 :(得分:5)

您可以创建自动化添加。

自动化添加提供了几个优点

  • 执行速度:自动添加用VB6编写编译为 本机机器代码的运行速度比解释的VBA快得多 的语

  • 安全性:与XLA插件不同,您永远不会将源代码分发给最终用户。如果您的代码有专有信息或 知识产权价值,仍然保护您的安全 自己的电脑。它永远不会分发给用户。你的代码可以 永远不要妥协。

http://www.cpearson.com/excel/automationaddins.aspx

答案 1 :(得分:0)

没有太多方法可以可靠地保护Excel VBA代码。

您可以尝试使用密码或VBA混淆器,但是所有的保护都受到限制。密码很容易破解,仍然可以追溯和恢复混淆的VBA代码。

此问题的另一个答案提到使用VB6,但这将您的代码限制为32位Excel。 VB反编译器也可以反编译VB6。

将代码转换为编译语言确实是保护VBA代码的最佳方法,但请注意,在这种情况下,并非所有代码都是相同的。

将代码转换为VBA.NET是一个有缺陷的解决方案,因为.NET程序集的编译后的代码可以转换回原始源代码。

将VBA代码转换为C或C ++是最有效的保护形式,但这需要大量的经验和精力,因为C / C ++和VBA是非常不同的语言。

我建议您看看一个名为VBA Compiler for Excel(https://vbacompiler.com/how-to-compile/)的工具。单击即可将您的Excel VBA代码编译为DLL文件。您不需要使用C或C ++语言的任何知识。

答案 2 :(得分:0)

如果您不熟悉 Visual Studio,那么 XlspadlockUnviewable+vbacompiler 之类的软件很容易配置,并且适用于 VBA6 和 VBA7、32 位或 64 位 Excel。 它们允许您在分发 Excel 工作簿之前将其保存为 EXE 文件,并有一些其他很酷的东西可以分发给最终用户。

相关问题