Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/vba/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Vba 在COM中公开静态函数?_Vba_Vb6 - Fatal编程技术网

Vba 在COM中公开静态函数?

Vba 在COM中公开静态函数?,vba,vb6,Vba,Vb6,我有一个VB6 DLL项目,它将许多类作为COM对象公开给引用该DLL的项目 我在BAS模块中也有几个功能。有没有办法将这些静态函数公开给引用DLL的项目?我创建了一个测试项目。它可以访问类,但不能访问静态函数,即使它们被标记为public 这可能吗?或者我只能公开类吗?如果您将代码复制到一个新类,并在设计器中将该类实例化属性设置为GlobalMultiUse,则该类的任何公共成员都将添加到全局命名空间中,以便您可以使用ProjectName.XXX 这在VB6/VBA之间的调用中效果很好,但对

我有一个VB6 DLL项目,它将许多类作为COM对象公开给引用该DLL的项目

我在BAS模块中也有几个功能。有没有办法将这些静态函数公开给引用DLL的项目?我创建了一个测试项目。它可以访问类,但不能访问静态函数,即使它们被标记为public


这可能吗?或者我只能公开类吗?

如果您将代码复制到一个新类,并在设计器中将该类实例化属性设置为
GlobalMultiUse
,则该类的任何公共成员都将添加到全局命名空间中,以便您可以使用
ProjectName.XXX


这在VB6/VBA之间的调用中效果很好,但对于其他调用方,您需要创建该类的实例。

谢谢。对我来说,没有必要使用
ProjectName.XXX
。我可以直接引用符号。但是,如果我尝试在同一个DLL项目中执行此操作,我会得到一个符号未定义错误。在项目中,引用函数的唯一方法是创建类的实例。你知道有什么办法吗?啊,是的,对不起,我忘了它在同一个项目中不起作用。对于外部COM调用者,它的工作方式是使用存根代码以不可见的方式创建类的实例,并跨隐藏的实例变量进行调用,但当您在同一项目中工作时,管道将被忽略。您总是需要一个实例。您可以始终使cGlobalMuClass.XXX()成为对在bas中声明的fXXX()的简单调用,并在DLL项目中使用后者。