在Excel中的vbasic宏中使用ATL库的函数 我成功地在C++中创建了一个ATL库,它运行了一些操作并给出了返回的解决方案。因此,我使用自动化在excel中拥有所有功能。现在我想创建一个宏,它可以按照正确的顺序执行所有功能,然后可能会将一个按钮关联到它。 所以我写了这个宏: Sub Macro_test() Dim r As Integer r = setValInput(Range("F21"), Range("G21")) r = initializeCalculation() Range("C24") = r r = getResult("C21") End Sub

在Excel中的vbasic宏中使用ATL库的函数 我成功地在C++中创建了一个ATL库,它运行了一些操作并给出了返回的解决方案。因此,我使用自动化在excel中拥有所有功能。现在我想创建一个宏,它可以按照正确的顺序执行所有功能,然后可能会将一个按钮关联到它。 所以我写了这个宏: Sub Macro_test() Dim r As Integer r = setValInput(Range("F21"), Range("G21")) r = initializeCalculation() Range("C24") = r r = getResult("C21") End Sub,excel,atl,vba,Excel,Atl,Vba,如果我构建这个Excel,它会说setValInput函数是不确定的。ATL的类名为OPclass,也许我必须对此做些什么?您可以使用方法创建对象。参数是当您创建COM类时,您提供给C++ ATL向导的Prime值,或者/您可以在项目中查看它。RGS文件。< /P> 代码段: Set MyServer = CreateObject("ProgettoOPserver") MyServer.setValInput(Range("F21"), Range("G21")) 通过实现的接口

如果我构建这个Excel,它会说setValInput函数是不确定的。ATL的类名为OPclass,也许我必须对此做些什么?

您可以使用方法创建对象。参数是当您创建COM类时,您提供给C++ ATL向导的Prime<代码>值,或者/您可以在项目<代码>中查看它。RGS文件。< /P> 代码段:

   Set MyServer = CreateObject("ProgettoOPserver")
   MyServer.setValInput(Range("F21"), Range("G21"))
通过实现的接口公开的ATL类上的方法和属性将自动可用于VBA脚本代码


另一个选项是首先添加对外部COM服务器(基于ATL的库)的引用,而不是
CreateObject
,您可以使用operator。请参阅有关此的详细信息:。优点是,您可以在对象浏览器中看到可用的方法。

作为类对象成员的方法需要从类对象的实例中调用。由于您已经创建了
OPClass
模块,该模块可能包含方法
setValInput
,请尝试以下操作:

Dim op as New OPClass
Debug.Print op.setValInput(Range("F21"),Range("G21"))

根据Roman的回答,这假设您已经在其他地方创建了对象。

谢谢。我必须这样做,ProgID是‘ProgettoOPserver’,所以我必须写CreateObject(“ProgettoOPserver”)??我试过了,但继续说函数不确定。我必须用类标识符编写函数吗?在示例Web.getResults?中,我更新了代码片段。从这一点来说,一切都准备好了,还有其他问题要问另一方——ATL/C++实现。谢谢。我试着用类名和ProgID来做,但是说类型不确定!等等,我不明白,我必须创建Roman和Dim OPCLASS声明后显示的对象?我不确定你的类对象是什么,所以我很难说。不管怎样,罗曼的建议似乎解决了你的问题,干杯!