【问题标题】:Secure VBA Excel Addin Code安全的 VBA Excel 插件代码
【发布时间】:2017-04-03 17:15:42
【问题描述】:

我有一个 Excel 插件,用 VBA 开发,部署在网络上。

插件从 Oracle 数据库中读取数据,并将表格粘贴到新工作表中,该工作表还将包含一个按钮(三角形)以刷新表格。

一切都很好,但我必须用密码保护代码。

当我这样做时,某些机器上会出现以下错误:

隐藏模块中的编译错误:Main。 当代码与此应用程序的版本、平台或架构不兼容时,通常会发生此错误。

虽然解锁后编译完美。

在其他机器上,它需要 VBA 密码才能关闭,即使我没有在关闭事件下定义的那种类型。

我希望保护我的代码,而不会遇到上述问题。 任何建议表示赞赏。

【问题讨论】:

  • 虽然我知道很痛苦,而且我从经验中讲,你试过VSTO和Click一次吗?并签署您的代码?
  • 我没有。我认为与轻量级 VBA 相比,VSTO 会慢得多。
  • 我请求不同,但我明白你来自哪里。微软一直在推动 VSTO,他们鼓励在 .Net 中完成此类工作。
  • Office 是什么版本?我已经用纯 VBA 代码编写了一些加载项,并且密码保护了源代码,并且之前没有见过这个错误。
  • 你需要什么更好的代码错误处理

标签: vba excel excel-addins


【解决方案1】:

我知道发生此错误的两种情况:

1:32 位与 64 位的问题(已在 cmets 中提及)。如果您开发了 32 位插件并尝试在 64 位 Excel 中部署/使用它,则会出现您引用的错误消息。

2:缺少引用。

我认为第二个选项更可能是问题的原因,因为通常公司中的所有客户端 PC 都会安装相同版本的 MS Office,并且此错误仅在 some machines 上发生。

所以我建议检查您的参考资料。在 VBA 编辑器 (Alt+F11) 中,转到工具 --> 引用并记下任何勾选的模块。然后将此与发生错误的客户端进行比较(转到客户端 PC 并重复该过程)。

如果勾选的模块在开发和客户端 PC 之间不匹配,这很可能是导致此问题的原因。您可能还会在客户端 PC 上遇到在其名称前写有“MISSING”的模块。在这种情况下,请从缺少的模块中删除勾号并尝试执行您的插件。

如果它可以完美运行,您应该可以继续使用,否则您将不得不在客户端 PC 上手动安装缺少的模块。

希望这会对你有所帮助。

【讨论】:

  • 感谢您的帮助。我确认所有都是 64 位的。我在安装 oracle 客户端时确定了这一点。没有遗漏的参考资料。出于这个原因,我通常避免添加引用。
  • 好的。您是否尝试过在其中一台引发错误的机器上本地运行插件?只是为了确认这不是网络/防火墙/...问题。
  • @Kelaref Re: 32bit/64bit - 我指的是 Office 的版本,而不是 Windows 的版本。您的 Oracle 评论让我觉得您可能指的是 Windows ?只是想澄清一下,以防我们在那里做出假设。
  • 我支持这个答案,id 总是以 32 位编译,无论它运行在什么版本上,它都不太可能导致这样的问题。
猜你喜欢
  • 2014-09-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多