Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/excel/28.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
VBA Excel DLL-错误48_Vba_Excel_Dll - Fatal编程技术网

VBA Excel DLL-错误48

VBA Excel DLL-错误48,vba,excel,dll,Vba,Excel,Dll,我最近得到了一段VBA代码,它是在基于2003年的Office版本上编写的,基于32位。我只有64位的Office 2016,我将代码更新为以下内容-但是当我运行宏时,我得到了一个“运行时错误-找不到文件”Swings4-2.dll“。即使我删除了文件扩展名,仍然会弹出一个错误。DLL文件与XLS/XLSM文件位于同一目录中,即使我引用了文件的完整目录,它仍然会给我一个错误 #If VBA7 And Win64 Then Private Declare PtrSafe Sub Swing

我最近得到了一段VBA代码,它是在基于2003年的Office版本上编写的,基于32位。我只有64位的Office 2016,我将代码更新为以下内容-但是当我运行宏时,我得到了一个“运行时错误-找不到文件”Swings4-2.dll“。即使我删除了文件扩展名,仍然会弹出一个错误。DLL文件与XLS/XLSM文件位于同一目录中,即使我引用了文件的完整目录,它仍然会给我一个错误

#If VBA7 And Win64 Then
    Private Declare PtrSafe Sub Swings Lib "Swings4-2.dll" (ByRef Par1 As Integer, ByRef Par2 As Integer, _
       ByRef Par3 As Single, ByRef Par4 As Single, ByRef Par5 As Single, ByRef Par6 As Single, _
       ByRef Par7 As Single, ByRef Par8 As Single, ByRef Par9 As Single, ByRef Par10 As Single, _
       ByRef Par11 As Single, ByRef Parl2 As Single, ByRef Parl3 As Single, ByRef Parl4 As Single)
#Else
    Private Declare Sub Swings Lib "Swings4-2.dll" (ByRef Par1 As Integer, ByRef Par2 As Integer, _
       ByRef Par3 As Single, ByRef Par4 As Single, ByRef Par5 As Single, ByRef Par6 As Single, _
       ByRef Par7 As Single, ByRef Par8 As Single, ByRef Par9 As Single, ByRef Par10 As Single, _
       ByRef Par11 As Single, ByRef Parl2 As Single, ByRef Parl3 As Single, ByRef Parl4 As Single)
#End If

非常感谢您的帮助

您的dll似乎使用了非标准名称

有时,DLL过程的名称不是合法名称 标识符。它可能具有无效字符,如连字符。什么时候 在这种情况下,请使用Alias关键字指定非法 过程名称


有关更多信息,请参见打开具有管理员权限的命令提示符。键入“regsvr32 path\swings4-2.dll”(省略引号,并用dll文件的路径替换路径)。如果dll神与我们同在,这将解决问题。不确定您是否可以从64位VBA运行时调用32位dll…@Tim Williams我的理解是您可以。例如,我认为需要一个64位或“任何CPU”编译的dll?例如,请参阅,过程名称为“swings”。DLL名称带有连字符。