VBA传递数组给C++ DLL函数,以进行函数计算。
工具/原料
方法/步骤
1打开VS2015,生成一个可供EXCEL VBA使用的DLL文件。
2在EXCEL VBA(ALT+F11打开,ALT+M)新建一个模板,键入以下命令,F5运行,测试DLL文件是否能够使用。此步骤非必须存往此宿在。
3在EXCEL VBA(ALT+F11打开,ALT+M)新建一个模板,键入以下命令,然后保存关闭EXCEL
4在VS中打开EXCEL调试,方便查看数据。将调试数据弄到输出显示,需要#include 头文件,用OutputDebugStringA(sst);命令。
5在VS里F5进行调试,会自动弹出EXCEL,然后打开刚才保存的EXCEL,F5运行SUB函数CC,下图为调试数据,说明VBA传递数组成功。
6另:国趣指针传递数组的元素序号排序如下,须特别注匠脾意。附所有命令,方便随时借用:c++:#include #include using namespace arma;__declspec(dllexport) double __stdcall test1(long *psiz, double *inp, double *outp) { long inrow, incol; inrow = psiz[0]; incol = psiz[1]; mat amat(4, 5); char sst[512]; long k = 0; for (int j = 0; j < incol; j++) { for (int i = 0; i < inrow; i++) { outp[i + j*inrow] = inp[i + j*inrow] +0.1; amat(i, j) = outp[i + j*inrow]; sprintf_s(sst, 'the data of row %d col %d : %10.6f\n', i+1, j+1, amat(i,j)); OutputDebugStringA(sst); k++; } } return 1;}
注意事项