在Excel中使用DLL 由C++制成的VBA

Using DLL in ExcelVBA made from C++

本文关键字:C++ VBA DLL Excel      更新时间:2023-10-16

我正在将一个函数从DLL导入到Excel VBA中。 DLL 是在 Microsoft Visual C++ 中创建的(默认示例的大部分未修改版本)。 VB中函数调用的返回值不正确,但我不知道原因。

我看到的值是 0,但我希望得到的值是 42。

我在这里发现了一个几乎相同的问题。 我尝试了他们的实验,从电子表格中调用了该函数。 我看到了相同的行为,电子表格返回是正确的,而 vba 代码中的返回不正确。

C++代码如下所示:

addnum.h

#ifdef ADDNUM_EXPORTS
#define ADDNUM_API __declspec(dllexport)
#else
#define ADDNUM_API __declspec(dllimport)
#endif
extern "C" {
ADDNUM_API int  fnaddnum(void);
}

阿德南.cpp

#include "stdafx.h"
#include "addnum.h
ADDNUM_API int fnaddnum(void)
{
    return 42;
}

VB 代码如下所示:

Declare Function fnaddnum _
   Lib " ... path to dll ... " _
   () As Integer

Sub use_dll()
   Dim return_val As Integer
   return_val = fnaddnum()
   MsgBox ("Value is" & Str(return_var))
End Sub

问题是我有一个错字。 我指的是"return_var"而不是"return_val"。 实际上,dll 函数引用正确返回了该值。