无法从VBA代码访问dll文件。如何找到DLL的问题?

时间:2012-11-21 14:34:39

标签: vba dll

我在使用VBA代码引用DLL时遇到问题。

我的目标是: 我有一个DLL文件,用C ++编写的代码(我猜是这样)并编译。我不知道那里有什么编码。 我必须从我的VBA代码访问此dll,从dll获取结果。我对dll的输入是3个整数值,它们在excel表中。

我已经宣布了这样的dll     公共声明函数二次Lib“C:... \ Desktop \ Test \ quadratic.dll”(ByVal a As Integer,ByVal b As Integer,ByVal c As Integer)As Double (...三点只是窗口目录)

在按钮上单击,我从工作表中读取输入值a,b,c并调用传递参数的函数     getvalue =二次方(a,b,c)

  1. 运行脚本时出现Microsoft Visual Basic错误,说 “运行时错误'48':找不到文件:C:... \ Desktop \ Test \ quadratic.dll”

  2. 在此之后我尝试使用Tools-> Reference->浏览然后映射保存在桌面上的dll文件来引用此dll,我得到一个Microsoft Visual Basic for Application错误说 可以添加对指定文件的引用。

  3. 我尝试使用命令regsvr32 C:... \ dllname.dll使用cmd提示注册DLL,这给出了以下错误 “LoadLibrary(”C:\ Documents“)失败 - 无法找到特定模块”

  4. 我尝试使用命令rundll32.exe C:... \ dllname.dll在cmd提示符下使用第二种方法注册DLL,这给出了以下错误 “加载C:\ Documents时出错。无法找到特定模块”

  5. 我不知道如何解决这个问题。我通过改变VB代码尝试了各种方法,但没有快乐。

    我需要, 1.如何使用VBA脚本引用它? 2.如何在DLL中找到问题,为什么我不能在VBA中引用它?

    请尽早帮助我,因为它非常紧急。

    此致 卡比兰

1 个答案:

答案 0 :(得分:0)

如果不了解您正在使用的Dll和文件结构的更多信息,很难诊断问题,但看起来Dll当前位于“我的文档”下的目录中或类似。请记住,DOS不会自动处理空格 - 您需要添加双引号。

再次尝试运行register命令,但这次用带引号的路径,例如

regsvr32 "C:\Documents and Settings\dllname.dll"

假设这样做,应该能够以您在步骤2中指定的方式引用Dll。