C#-VBA对象浏览器未在我的.NET dll库中显示类成员
作者:互联网
我正在尝试制作一个可以从VBA(MS Office)访问的简单(无依赖项).NET dll文件.我正在使用VS2015 Express,并使我的dll成为最简单的方法:创建一个类库,添加一个简单的类,并检查“使程序集对COM可见”以及“注册COM互操作”选项.
我的C#代码:
namespace TestLib {
public class Hello {
public int timestwo(int i) {
return 2 * i;
}
}
}
该库在构建时自动添加到Windows注册表中.我可以从工具-> MS Office VBA编辑器中的引用以及以下VBA代码均按预期工作:
Sub test()
Dim h as TestLib.Hello
MsgBox h.timestwo(2)
End Sub
现在有趣的是:对象浏览器显示了我的类,但是没有成员函数!因此,自动完成功能不起作用…这是怎么回事?
解决方法:
嗯,在我看来,您对所做工作的描述缺少几个步骤.您需要GUID.您需要一个类需要实现的接口.并且您需要指定该类应如何与Interface一起使用.为了使Intellisense等正常工作,需要将其设置为“ None”类型.
这是我的.NET COM DLL的摘录,它确实出现在对象浏览器中,并在为VBA项目引用时提供Intellisense.
[Guid("149F7A5F-7DAC-4426-8AA0-28975A2CE203")]
[ComVisible(true)]
public interface ITest
{
string testLT(string FilePath, object Args);
string RemoveListTemplates(string FilePath, object Args);
void test(string arg);
}
[Guid("D86307C2-3FFA-4518-BABC-DA5F26ABC445")]
[ClassInterface(ClassInterfaceType.None)]
[ComVisible(true)]
public class Test : ITest
标签:c,net,excel,vba,excel-vba 来源: https://codeday.me/bug/20191027/1943942.html