我的目标是创建一个COM Visible Type,可以导入VBA(Excel)并在那里消费。
Excel对象浏览器可以看到我的类,但不能看到该类的任何公共方法,并且在尝试调用公共方法时失败。
我的F#代码:
namespace DotNetLibrary
type public Class1() =
member public this.DotNetMethod (x:string) = "Hello" + x
在AssemblyInfo.fs中,我也修改为[<assembly: ComVisible(true)>]
我使用/codebase /tlb
的开关运行regasm并生成.tlb文件。
VBA在参考浏览器中找到我的库,但没有选择上面DotNetMethod
上定义的Class1
。
我已经尝试按照C#指导来了解这个主题,但是我还没到达终点。
答案 0 :(得分:1)
VBA无法成功运行该方法的原因是因为我使用了32位版本的regasm实用程序而不是64位版本来为COM注册类型库。鉴于我使用的是64位Excel,它需要64位COM类型库。
VBA无法识别IDE中的方法的原因可能与上述有关,但也可能是由于接口问题引起的 @HansPassant在上面的评论中。