既然我知道锁定和密码保护的VBA代码有easy workaround standard way,我想继续采用更有效的方法来保护代码。我将向客户提供基于Excel的工具,但想要的不仅仅是简单的烦恼型保护,只会阻止最懒的黑客。
Excel-VBA中是否有任何选项,或者我们是否真的需要编译单独的应用程序而忘记基于Excel的界面?
答案 0 :(得分:8)
最简单,最有效的方法是将您的VBA代码移动到VB6编译的Com /自动化插件。
或者,如果性能不重要,您可能需要考虑使用.Net(带混淆器)解决方案。
答案 1 :(得分:2)
另一个技巧是在Access中针对excel对象编写代码,然后将访问文件设置为.mde http://www.blog.methodsinexcel.co.uk/?s=Access+MDB 可怜但是很惨; - )
答案 2 :(得分:1)
无需转换为其他语言 - 您应该能够通过www.vbsobfuscator.com对大多数VBA代码进行模糊处理[注意:链接到archive.org]
答案 3 :(得分:1)
实际上, VBA混淆器不保护VBA代码,因为它们使算法的结构保持不变,这可以追溯到原始算法,然后可以恢复。
将 VBA代码转换为VB6 意味着您的应用程序将限制为32位Excel(VB6没有64位版本),并且可以通过VB反编译器进行反编译,例如{{3 }}
将 VBA代码转换为VB.NET 也不是一个完美的解决方案,因为.NET具有“反射”机制,可以将.NET程序集的编译代码转换为原始源代码
您可以将 VBA代码转换为C / C ++ ,这是一种非常有效的保护形式,但由于C / C ++和VBA是非常不同的编程语言,因此将VBA代码转换为C / C ++很难,容易出错,并且通常不值得花费大量的时间和精力。
有一个名为 VbaCompiler for Excel (https://www.vb-decompiler.org/)的工具,它将 VBA代码转换为C语言代码,然后将其编译为DLL 。此工具声称提供的保护级别与将VBA代码转换为C / C ++的保护级别相似,但没有此类过程所需的大量手动工作。