MickD 发表于 2015-11-25 14:31:04

vba代码在2004年有效,但在2016年无效

我有一个VBA程序(LatLong.dvb)将坐标从X,Y转换为纬度,经度。它在我的Windows 7 64位机器上的Autocad 2004中运行良好,但在Autocad 2016中出现错误。(使用对DLL的调用。)
(我安装了“Autocad\u 2016\u AcVbaInstaller\u Win\u 64bit\u dlm.sfx.exe”)
我还将支持文件搜索路径设置为包括路径&nbsp C: 拉特朗&nbsp C: 下面是我认为可能是我的问题的代码部分:模块1-常规-声明:如果是VBA7,则声明PtrSafe函数SetNadconPath Lib;c: \program files\corpscon6\corpscon\u v6.dll“;(ByVal路径作为字符串)作为LongPtr,Else
声明函数GetNadconPath Lib“;c: \program files\corpscon6\corpscon\u v6.dll“;(ByVal path As String)As Long#End IfModule1-General-convptsDim test7 As LongLong>test7=SetNadconPath(“c:\program files\corpscon6\nadcon”)&nbsp&nbsp'corpscon数据文件的路径上面的最后一行导致此错误:
运行时错误'48:找不到文件c:\program files\corpscon6\corpscon\u V6.dll。我不知道,corpscon\u V6.dll应该在哪里;我不知道还能尝试什么
请帮忙
比尔

n.yuan 发表于 2015-11-25 16:27:50

嗨,比尔,我用vba已经很久了,但是你设置了'参考#039;在vba项目中找到正在使用的库的路径
或者这就是我假设的AutoCAD支持路径所指的支持路径吗?

dhawk 发表于 2015-11-26 09:29:50

您可能已经知道,这很可能是32位(Acad2004)和64位(Acad2016)的问题
虽然您可能认为#If指令可以通过使外部函数根据相应的VBA版本返回正确的数据类型来解决问题,但它可能不起作用,因为在35;If…#Else 35)End If中,两个分支都指向相同的DLL文件,不太可能是同一DLL文件中的32位版本和64位版本。它是32位或64位。对于Acad2016 64位,您'我们需要64位版本的DLL。

dhawk 发表于 2015-11-30 09:31:35

谢谢你的回复。参考路径就在我的VBA程序中。我联系了USACE(美国陆军工程公司),他们没有64位版本的DLL 我曾尝试安装Autodesk 32位VBA enabler for Autocad 2016,但无法在64位计算机上安装 现在我'当我想使用我的程序时,我只使用2004
考虑使用Python和一些临时文本文件进行转换的变通方法。

n.yuan 发表于 2020-11-3 17:57:22

此DLL的64位版本位于https://github.com/dhawk/corpscon_v6_64bit.dll
页: [1]
查看完整版本: vba代码在2004年有效,但在2016年无效