我正在使用Visual Studio 2012中用C#编写的ActiveX模块,并将其插入 用于VBA的Excel 2010工作表。
我已经定义了许多方法和属性,我可以在VBA中无问题地调用。
但是,每当我尝试向接口添加一个新方法时,奇怪的事情就会发生,例如VBA解释器(编译器?)说错误的参数数量(错误450)被用于特定的方法foo(),甚至VBA编译器抱怨语法foo()错误的C#函数void foo()。
我的猜测是,activeX控件在某种程度上没有在注册表中正确更新,因此新添加的方法完全混淆了调用接口。这可以解释为什么例如foo()会产生错误:它可能被解释为属性而不是方法?
最后一点:我可以在VBA的编辑器对象浏览器中正确地看到新定义的方法吗?
无论如何,我尝试过以下方法: 从我的XL表单中删除activeX控件,删除对Control的引用,保存XL,然后退出。然后我取消注册并重新注册了新控件(DLL和TLB),并以我的XL形式读取它。 但是,我仍然会遇到同样的错误。
有什么想法吗?
谢谢!