首页 > 解决方案 > C++ DLL(可从 VBA 调用并接收 Range 数据)

问题描述

我很想弄清楚如何构建一个 .dll 来调用 VBA 并使我的自定义公式成为可能。由于性能时间关系,我想制作一个.dll,所以我开始学习C++。作为每个项目,我在 Range 对象特别从 VBA 传递到我的 .dll 的问题之后开始面临问题。

我的项目简介:使用 Visual Studio 2019,我构建了一个项目,其中包含一个文件 .cpp 和另一个 .def 来导出我的函数。

当我必须从 VBA 传递简单的双参数时,一切都很顺利,但是当我应该传递一个单元格范围时,我开始面临严重的问题,这会阻止我的项目。

实际上,我阅读了太多论坛和 Dalton 书籍的部分来处理我的问题,但我真的很清楚。

我发现了一些关于 COM 和 API C 的内容,其他关于“ExportImport.cpp”、SAFEARRAY 和 VARIANT 类型的内容(后者:我可以弄清楚如何将参数从 VBA 传递到 C++ dll,但仍然不明白如何实现并使用单个元素并专门返回它们)。

如果对你们中的一些人来说不是太烦人的话,我想具体描述一下在这种情况下该怎么做。我也是 Stack Overflow 的新手,不知道如何奖励我的救世主,但我会以某种方式回报。

谢谢

这里我的项目叫做square并且有两个函数square我的 _array

.cpp 文件

#include <iostream>
#include <cmath>
#include <OAIdl.h>


double __stdcall square(double& x)
{
    return x * 2;
}

VARIANT __stdcall my_array(VARIANT *p)
{
    //my statements and operation on the array (Range received from VBA)
}

.def 文件

LIBRARY "square"
EXPORTS 
square @1
my_array @2

标签: c++vbadll

解决方案


推荐阅读