我已经组建了一个执行一些宏功能的简单Excel数据库,我需要将这个数据库分发给少数人 - 但他们无法看到宏功能如何实际工作(我必须遵循愚蠢的规则!)。实现这一目标的最佳方法是什么?
我做了一些研究,我找到了两种方法:
密码保护VBA项目;但这显然很容易在网上使用现成的工具打破(我发送的人最感兴趣的是找出宏和功能如何工作;所以我几乎100%肯定他们会尝试进入它...因此密码保护似乎不足。
转移到完全编译的语言,如C ++ ;我的技能非常局限于Excel和Access上的VBA,因此这是理想的解决方案;对我来说不是解决方案:(
还有其他方法吗?我想到了一个包含所有宏的'master excel文档',然后将'children'数据库发送给最终用户并让'children'数据库连接到'master' - 这样的事情可能吗?通过在线托管主人,甚至向最终用户发送主人,但除非被'儿童'数据库访问,否则使其完全无法访问?
答案 0 :(得分:5)
您可以创建自动化添加。
自动化添加提供了几个优点
执行速度:自动添加用VB6编写编译为 本机机器代码的运行速度比解释的VBA快得多 的语
安全性:与XLA插件不同,您永远不会将源代码分发给最终用户。如果您的代码有专有信息或 知识产权价值,仍然保护您的安全 自己的电脑。它永远不会分发给用户。你的代码可以 永远不要妥协。
答案 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,那么 Xlspadlock 或 Unviewable+ 或 vbacompiler 之类的软件很容易配置,并且适用于 VBA6 和 VBA7、32 位或 64 位 Excel。 它们允许您在分发 Excel 工作簿之前将其保存为 EXE 文件,并有一些其他很酷的东西可以分发给最终用户。