1

我成功地在 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 表示函数 setValInput 不确定。ATL 的类被命名为 OPclass,也许我需要对此做些什么?

4

2 回答 2

3

CreateObject您使用方法创建对象。参数是您在创建 COM 类时提供给 C++ ATL 向导的值,或者/您可以在项目文件ProgID中查找它。.RGS

代码片段:

   Set MyServer = CreateObject("ProgettoOPserver")
   MyServer.setValInput(Range("F21"), Range("G21"))

通过实现接口公开的 ATL 类上的方法和属性将自动可用于您的 VBA 脚本代码。

另一种选择是首先添加对外部 COM 服务器(基于 ATL 的库)的引用,而不是CreateObject您可以使用Newoperator. 查看更多信息:如何以编程方式添加引用。优点是您将能够在对象浏览器中看到可用的方法。

于 2013-09-21T19:06:49.327 回答
0

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

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

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

于 2013-09-21T19:06:58.247 回答