在 IDE 加载项中制作 VB6- 或 VBA-IDE 环境相关参考?

Make a VB6- or VBA-IDE environments related reference in IDE Add-In?

我在 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 Applications Extensibility 5.3"

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

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

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

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

明智的做法是跟随领导并使用 .NET 开发解决方案。 32 位和 64 位主机可以使用 MZ 工具或 Rubberduck VBA 等 .NET 解决方案,并通过从 VB 创建您自己的互操作程序集(并嵌入它们的类型) IDE 类型库,您可以为 VB5、VB6 和 VBA.

创建单个 dll

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

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