我对这个话题很新,所以请原谅我一些虚假的问题 .

主要思想是在VBA中导入(例如Excel)从C编译的DLL . 我正在使用Visual Studio 2017 for DLL . 我按照指导工具,我创建了以下文件:

//KingFunc.h
#pragma once
namespace KingFuncs
{
    extern "C" __declspec(dllexport) int GiveMeNumber(int i);

}

然后.cpp

//KingFunc.cpp
#include "stdafx.h"
#include "KingFunc.h"
#include <stdexcept>

using namespace std;

namespace KingFuncs
{
    int KingFuncs::GiveMeNumber(int i)
{
    return i;
}
}

编译器显然没有错误,并在项目文件夹中生成名为KingFunc.dll的DLL输出 .

然后我打开Excel - > VBA工具并编写以下内容:

Option Explicit

Public Declare Function PASS Lib _
"[PATH]\KingFunc.dll" (x As Integer) As Integer

Sub MAIN()
     Dim a As Integer
     Dim b As Integer

     a = 100
     b = PASS(a)

End Sub

其中PATH是VS项目的长文件夹字符串 .

我希望它有效,但它不会......“找不到文件是不可能的”我不明白为什么 .

我也尝试将VBA调用为

Public Declare Function PASS Lib _
"[PATH]\KingFunc.dll" Alias "GiveMeNumber" (x As Integer) As Integer