如何将VBA代码保存到DLL库?

Sku*_*uta 6 excel vba excel-vba source-code-protection dllexport

出于安全目的,我想将我的宏从Excel工作簿中的VBA保存到我稍后将从该文件调用的DLL库文件.

这样就可以将我的宏的任何版本部署到公司的PC上,但没有人会看到它背后的真实代码.

这怎么可能?我已经读过转换为C++和创建DLL.这有什么分步解决方案吗?

Chr*_*Rae 5

首先,让我警告您总体上不要这样做。我们使用公司应用程序进行过一次,移植所需的时间与最初编写应用程序所需的时间大致相同。为此,不存在分步指南,因为您基本上是从头开始重写应用程序。

其次,并不是Excel VBA可以做的所有事情都不一定可以在COM或XLL中使用。可用的事件有所不同;对于XLL,有全新的结构可用于所有数据类型。在COM中没有UDF。在XLL中,没有宏操作。您将不再能够将代码附加到工作表(仅Excel会话),并且安装过程要复杂得多。在踏上一条特定的道路之前,我会花很长时间研究VBA的确切功能。

这取决于您的应用程序的大小,但我鼓励您花钱购买水密许可证并进行一些基本的代码混淆处理(按照原始注释),而不是从头开始采用其他体系结构。

抱歉成为厄运的承担者...

克里斯


Cha*_*ams 4

您可以通过将 VBA 代码转换为受密码保护的 XLA 并混淆代码来保护它。但密码安全性较弱。使 XLA 可以轻松地与所有 Excel 版本配合使用。

一个简单的替代方法是转换为已编译的 VB6 自动化插件。安全性良好,易于转换,它可以处理 UDF 和命令插件。但它不适用于 Excel 2010-64 或早期版本的 Excel(如 XL 2000)。您将需要一个 VB6 编译器,而该编译器可能很难找到。

更困难的替代方案是转换为 .NET。如果您使用众多混淆器之一,那么安全性是合理的。除非您使用允许通过 XLL 接口访问 .NET 的工具之一(例如 Excel DNA 或 Addin Express),否则性能将会很差。还提供 64 位功能。

如果性能和安全性至关重要,您需要转换为 C++ XLL,但如果来自 VBA,这是一项艰巨的工作。