我在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" 并从VB6键"手动移动 VBA-IDE-Add-In 注册表项。 [HKCU \ Software \ Microsoft \ Visual Basic \ 6.0 \ Addins]" 到VBA密钥 [HKCU \ Software \ Microsoft \ VBA \ VBE \ 6.0 \ Addins] ...
有没有办法编译一个单独的dll,它将使用条件编译或命令行参数相应地对VB6或VBA环境使用正确的引用?
不幸的是,这是我的第一个加载项,我的经验在这个问题上是不够的......
答案 0 :(得分:3)
我怀疑你能否在VB6中为VB6和VBA编译一个加载项,因为两个库共享相同的名称VBIDE
,而你的VB6项目将不允许两个具有相同名称的引用。 MZTools 3.0,当它是用VB6编写的时候,用于发布VB5的版本(它使用另一个早期版本的VB扩展性库),VB6和VBA。自MZ Tools Version 8发布以来,源代码已迁移到.NET,并且支持多个环境和 32位/ 64位版本的VB / VBA主机更容易。< / p>
你应该明智地跟随领导,并使用.NET开发解决方案。像MZ Tools或Rubberduck VBA这样的.NET解决方案可以被32位和64位主机使用,通过从VBIDE类型库创建自己的Interop程序集(并嵌入它们的类型),您可以创建一个单独的dll对于VB5,VB6和VBA。
Rubberduck VBA尚未添加对VB6的支持,但我们正在努力:
Shared VB6 and VBA extensibility add-in with OnConnect and OnDisconnect handling