Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/windows/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
windows DLL问题_Windows_Vba_Dll - Fatal编程技术网

windows DLL问题

windows DLL问题,windows,vba,dll,Windows,Vba,Dll,我在使用C DLL的Excel VBA应用程序中遇到问题。DLL始终存储在电子表格上方的目录中,其方法在VBA中使用调用 #If Win64 Then Public Declare PtrSafe Function <function name> Lib "..\<dllname>" () As Long #else Declare Function <function name> Lib "..\<dllname>" () As Lo

我在使用C DLL的Excel VBA应用程序中遇到问题。DLL始终存储在电子表格上方的目录中,其方法在VBA中使用调用

#If Win64 Then
   Public Declare PtrSafe Function <function name> Lib "..\<dllname>" () As Long
#else
   Declare Function <function name> Lib "..\<dllname>" () As Long
#end if
#如果是Win64那么
公共声明PtrSafe函数库“.\”()的长度为
#否则
将函数库“.\”()声明为
#如果结束
您可以将这两个文件及其目录结构包装在一个zip文件中,在windows安装(不同版本和32位或64位)中移动它,它可以正常工作,除了一台计算机,我们不知道为什么。我们得到的只是一个错误,程序无法从调用dll方法的VBA方法中找到位于..\的dll。安装MFC100.dll解决了以前的运行时错误53问题,使我们达到了现在的位置

如果您对如何解决这个问题有任何建议,或者对尝试什么有任何想法,我将非常感激,
James

VBA倾向于抱怨它“找不到”DLL,如果问题实际上是缺少DLL的依赖项之一。我想这就是问题所在。请尝试(重新)安装。或者,打开(或类似的工具)中的冒犯DLL,以准确地找出它想要的东西。

< P>下载下载依赖性Walk,下载以查看VBA应用程序实际上在运行时的位置。

< P>问题是,我们没有安装VS C++可重分发的64位版本,只是32位版本。安装后,一切正常。

我认为只有在当前目录是包含电子表格的目录时,代码才会工作。例如,如果打开电子表格时Excel已经打开,则情况可能并非如此。也许这是你的问题?我们已经安装了MS VC++2012 DLL,并检查了Dependency Walker标记的依赖项,它们都如你所料。MFC100.DLL、MSVCR100.DLL、KERNEL32.DLL、USER32.DLL、GDI32.DLL、ADVAPI32.DLL、SHELL32.DLL、OLEAUT32.DLL、MSVCP100.DLL。“我想知道这是否是一个注册表问题?”詹姆斯可能。根据上面@HarryJohnston的评论,这可能是一个路径问题。在加载DLL之前,请尝试发出以下语句:
ChDir thishworkbook.Path
。你也试过@ElectricLlama的建议吗?Procmon将向您显示Excel在何处查找DLL文件,或者在找到DLL文件时,它接下来会查找什么。