c++ - 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
解决方案
推荐阅读
- javalite - Javalite for Microservice 项目,是否提供应用程序跟踪/监控支持?
- python - Python Selenium - 尝试/排除不起作用
- laravel - 将父模型的数据提取到 static::saving() 启动函数中
- azure-devops - 发布成功后触发发布
- javascript - 根据首先返回的异步调用执行函数
- java - 如何查找是否在会话中添加或删除了所有数据?
- bash - 如果目标失败,Makefile 应该退出
- vb.net - VB替换列表中的对象
- wordpress - 强制在 SSL / HTTPS 中安装 WordPress
- python - 未使用 sys 模块的 Python 模块导入错误