2013-05-26 26 views
11

我已经把一个简单的Excel数据库放在一起,执行一些宏功能,我需要将这个数据库分发给几个人 - 但他们无法看到宏功能是如何工作的(我必须遵循的愚蠢规则!)。达到此目的的最佳方法是什么?保护Excel VBA代码的最佳方法?

我已经做了一些研究,我发现有两种方式:

  • 密码保护VBA项目;但是这显然很容易在网上使用现成的工具来打破(这对于我发送这些信息的人来说是最有利的,以了解宏和函数是如何工作的;所以我几乎100%肯定他们会尝试进入它..所以密码保护问题显得不足

  • 移动到C++等完全编译的语言。我的技能是非常有限的,以VBA在Excel和Access所以这是理想的解决方案,是不是对于我一个解决方案:(

是否有其他方法吗?我想有的“主excel文件”,在所有的宏,然后发送“孩子”数据库TH e最终用户并将“儿童”数据库连接到“主” - 是否可能这样?通过在线托管主数据库,甚至将最终用户发送给主数据库,但除非通过“儿童”数据库访问,否则完全无法访问数据库?

+0

检查VSTO以创建加载项,然后使用ClickOnce来部署它们 –

+1

检出http://hivelink.io,它允许你创建一个没有计算的用户界面电子表格,并且可以轻松地定义输入/输出来将它们与你的数据库连接起来进行验证等。我在这里写了一篇广泛的文章:http://stackoverflow.com/questions/16363621/protecting- code-in-a-excel-workbook/28968867#28968867 – stuzor

回答

4

您可以创建自动化添加。

自动化外接提供了几个优点

  • 执行速度:自动化外接在写在VB6被编译到它运行比解释VBA 的语快得多 本机代码。

  • 安全:与XLA插件不同,您绝不会将源代码分发给最终用户。如果您的代码拥有专有信息或知识产权价值,那么您的计算机仍可以安全地保护您的代码。它永远不会分发给用户。你的代码可以不会受到威胁。

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

+5

vb6已过时。我会推荐VSTO :) –

+0

兼容性问题呢?我现在正在阅读VSTO的文档,但如果你有一个快速的答案,那将是非常棒的。 - VSTO插件是否支持旧版本的Office? - 它是否支持Office/Open Office的MAC版本? – Chronix3

+1

@ Chronix3我建议自动化添加在bcoz中,语法类似于VBA,可以更快地完成。试一试。尽管VB6已经过时,但它仍然有效。 – Santosh