0

我在 VB6 中成功创建了VB6_IDE_Add_In,它引用了 Microsoft "Visual Basic 6.0 Extensibility"。但是,要在 VBA IDE(Excel、Access)中使用此加载项,我必须复制VB6_IDE_Add_In项目,将其重命名为VBA_IDE_Add_In,重命名其属性等,并且主要更改提到的“Microsoft Visual Basic for应用程序可扩展性 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\插件] ...

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

不幸的是,这是我的第一个加载项,我在这方面的经验不足......

4

1 回答 1

3

我怀疑您是否能够在 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 的支持,但我们正在努力:

具有 OnConnect 和 OnDisconnect 处理的共享 VB6和VBA 可扩展性加载项

于 2016-08-23T00:08:34.763 回答