【问题标题】:Make a VB6- or VBA-IDE environments related reference in IDE Add-In?在 IDE Add-In 中制作 VB6- 或 VBA-IDE 环境相关参考?
【发布时间】:2016-08-16 03:47:56
【问题描述】:

我在 VB6 中成功创建了 VB6_IDE_Add_In,它引用了 Microsoft “Visual Basic 6.0 可扩展性”。但是,要在 VBA IDE(Excel、Access)中使用此插件,我必须复制 VB6_IDE_Add_In 项目,将其重命名为 VBA_IDE_Add_In,重命名其属性等。并且,主要的更改提到了对 “Microsoft Visual Basic for Applications Extensibility 5.3” 的引用。

最后我有两个 dll - 一个用于 VB6,第二个用于 VBA。他们两个我都必须 "regsvr32" 并手动移动 VBA-IDE-Add-In 注册表项从 VB6 键 "[HKCU\Software\Microsoft\Visual Basic\6.0\Addins]" 到 VBA 键 [HKCU\Software\Microsoft\VBA\VBE\6.0\Addins]...

有没有办法使用条件编译或命令行参数编译单个 dll,该 dll 将根据 VB6 或 VBA 环境使用正确的引用?

很遗憾,这是我的第一个插件,在这件事上我的经验不足……

【问题讨论】:

  • @Rory 你真的很明智地剪掉了我的标签,几乎没有什么要求。很少有人看到这个复杂的问题,我根本没有得到答案。谢谢。
  • 您的问题是关于 VB6 而不是 VBA,因为您不能再使用 VBA 构建 dll。如果您对此有任何疑问,请随时利用现有的权力来处理它。
  • OP 问题关于 VB6 VBA。您不能再在 VBA 中编写 dll,但您可以在 VB6 中 VBA 编写 dll。

标签: vba vb6 vbe vbide


【解决方案1】:

我怀疑您能否在 VB6 中为 VB6 和 VBA 编译单个加载项,因为这两个库共享相同的名称 VBIDE,并且您的 VB6 项目不允许使用相同名称的两个引用。 MZTools 3.0 是用 VB6 编写的,用于发布 VB5(它使用另一个早期版本的 VB 可扩展库)、VB6 和 VBA 的版本。自 MZ Tools Version 8 发布以来,源代码已迁移到 .NET,并且更容易支持多种环境 32 位/64 位版本的 VB/VBA 主机。

您最好跟随领导,并使用 .NET 开发解决方案。 MZ Tools 或 Rubberduck VBA 等 .NET 解决方案可供 32 位和 64 位主机使用,通过从 VBIDE 类型库创建自己的互操作程序集(并嵌入它们的类型),您可以创建单个 dll适用于 VB5、VB6 和 VBA。

Rubberduck VBA 尚未添加对 VB6 的支持,但我们正在努力:

Shared VB6 and VBA extensibility add-in with OnConnect and OnDisconnect handling

【讨论】:

  • 好的。我将停止朝这个方向搜索。我的方案 - 两个 dll,代码相同,但名称和对可扩展性的引用不同 - 运行良好。非常感谢您让我免于浪费时间进行搜索。
猜你喜欢
  • 1970-01-01
  • 2021-01-18
  • 1970-01-01
  • 2011-03-17
  • 1970-01-01
  • 1970-01-01
  • 2010-09-05
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多