编程语言
首页 > 编程语言> > C#-VBA对象浏览器未在我的.NET dll库中显示类成员

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