12

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

我做了一些研究,发现了两种方法:

  • 密码保护VBA项目;但这显然很容易使用现成的在线工具来破解(这对我发送此邮件的人来说是最有利的,以了解宏和功能是如何工作的;所以我几乎 100% 肯定他们会尝试进入它..因此密码保护似乎不足。

  • 转向像 C++ 这样的完全编译的语言;我的技能仅限于 Excel 和 Access 上的 VBA,因此这是理想的解决方案;对我来说不是解决方案:(

还有其他方法吗?我想拥有一个包含所有宏的“主 excel 文档”,然后将“子”数据库发送给最终用户,并让“子”数据库连接到“主”——这样的事情可能吗?通过在线托管主服务器,甚至将主服务器发送给最终用户,但使其完全无法访问,除非“子”数据库访问?

4

3 回答 3

7

您可以创建自动化插件。

自动化插件提供了几个优点

  • 执行速度用 VB6 编写的自动化插件被编译为本机代码,其运行速度比解释的 VBA 语言快得多。

  • 安全性:与 XLA 插件不同,您永远不会将源代码分发给最终用户。如果您的代码具有专有信息或知识产权价值,则在您自己的计算机上仍然受到安全保护。它永远不会分发给用户。您的代码永远不会受到损害。

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

于 2013-05-26T10:15:18.757 回答
2

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

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

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

将代码转换为编译语言确实是保护 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++ 语言知识即可使用它。

于 2019-02-22T21:33:12.300 回答
0

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

于 2021-01-30T00:35:04.097 回答