求救:( VB调用AutoCAD,GetObject,CreateObject函数均无效

cunninglynx 2017-04-21 02:40:38
在XP系统的时候,VB调用AUTOCAD,进行绘图没有问题。WIN7经常会碰到无法调用。困扰很久的问题,请大侠指点~~

在WIN7系统,安装CAD2007 。运行程序, 无法调用AUTOCAD。尝试提前打开AUTOCAD,即然后运行程序,仍无法调用。也就是CreateObject,GetObject 两个函数均无效。
但有的WIN7系统电脑可以直接调用;也有的电脑可用提前打开CAD,再调用。完全昏了。期待大神指点

代码如下:
Public NewDrawing As Object
Public AcadApp As Object
Public acadDoc As Object
Public Mospace As Object

Set AcadApp = GetObject(, "AutoCAD.application")
If ERR Then
ERR.Clear
Set AcadApp = CreateObject("AutoCAD.application")
If ERR Then
MsgBox "本机未安装 AutoCAD。"
Exit Sub
End If
End If
AcadApp.Visible = True

If FileExist(CurDir + "\acad.dwg") Then
Set NewDrawing = AcadApp.Application.Documents.Open(CurDir + "\acad.dwg")
End If
Set acadDoc = AcadApp.ActiveDocument
Set acadDoc = AcadApp.ActiveDocument
Set Mospace = acadDoc.ModelSpace 'you declared it as a global.
Call Draw_Ele_Cad(Mospace)










...全文
2208 20 打赏 收藏 转发到动态 举报
写回复
用AI写文章
20 条回复
切换为时间正序
请发表友善的回复…
发表回复
舉杯邀明月 2018-02-28
  • 打赏
  • 举报
回复
引用 18 楼 zhao4zhong1 的回复:
[quote=引用 17 楼 bakw 的回复:] [quote=引用 16 楼 zhao4zhong1 的回复:] 在64位Windows下: 64位exe和dll在目录c:\windows\system32目录下; 32位exe和dll在目录c:\windows\syswow64目录下; 所以要注意: 在win64位系统下注册32位ocx或dll需要将32位ocx或dll拷贝到c:\windows\syswow64\目录下。 且注册要用c:\windows\syswow64\regsvr32 xxxxxxx.ocx或dll 64 位 Windows 平台注意点之文件系统重定向 http://www.cnblogs.com/jiake/p/4981555.html 64 位 Windows 平台注意点之注册表重定向 http://www.cnblogs.com/jiake/p/4956218.html
终于看明白不是A语言到B语言啦[/quote] “A语言←→文本文件←→B语言”大法好![/quote] 只有脑残才这么认为…………
海鸥软件 2018-02-28
  • 打赏
  • 举报
回复
这个有可能就是xp和win7 dll存放路径存在差异的问题,另外你有没有引用呀?
赵4老师 2018-02-27
  • 打赏
  • 举报
回复
引用 17 楼 bakw 的回复:
[quote=引用 16 楼 zhao4zhong1 的回复:] 在64位Windows下: 64位exe和dll在目录c:\windows\system32目录下; 32位exe和dll在目录c:\windows\syswow64目录下; 所以要注意: 在win64位系统下注册32位ocx或dll需要将32位ocx或dll拷贝到c:\windows\syswow64\目录下。 且注册要用c:\windows\syswow64\regsvr32 xxxxxxx.ocx或dll 64 位 Windows 平台注意点之文件系统重定向 http://www.cnblogs.com/jiake/p/4981555.html 64 位 Windows 平台注意点之注册表重定向 http://www.cnblogs.com/jiake/p/4956218.html
终于看明白不是A语言到B语言啦[/quote] “A语言←→文本文件←→B语言”大法好!
赵4老师 2018-02-26
  • 打赏
  • 举报
回复
在64位Windows下: 64位exe和dll在目录c:\windows\system32目录下; 32位exe和dll在目录c:\windows\syswow64目录下; 所以要注意: 在win64位系统下注册32位ocx或dll需要将32位ocx或dll拷贝到c:\windows\syswow64\目录下。 且注册要用c:\windows\syswow64\regsvr32 xxxxxxx.ocx或dll 64 位 Windows 平台注意点之文件系统重定向 http://www.cnblogs.com/jiake/p/4981555.html 64 位 Windows 平台注意点之注册表重定向 http://www.cnblogs.com/jiake/p/4956218.html
笨狗先飞 2018-02-26
  • 打赏
  • 举报
回复
引用 16 楼 zhao4zhong1 的回复:
在64位Windows下: 64位exe和dll在目录c:\windows\system32目录下; 32位exe和dll在目录c:\windows\syswow64目录下; 所以要注意: 在win64位系统下注册32位ocx或dll需要将32位ocx或dll拷贝到c:\windows\syswow64\目录下。 且注册要用c:\windows\syswow64\regsvr32 xxxxxxx.ocx或dll 64 位 Windows 平台注意点之文件系统重定向 http://www.cnblogs.com/jiake/p/4981555.html 64 位 Windows 平台注意点之注册表重定向 http://www.cnblogs.com/jiake/p/4956218.html
终于看明白不是A语言到B语言啦
zzyong00 2018-02-11
  • 打赏
  • 举报
回复
这种一般和autocad安装有关,有些autocad是什么所谓的绿化版,少一些东西,所以会联不上,建议客户放弃哪些低版本autocad吧,高版本的性能还是更好一些
DQYDXT 2018-02-03
  • 打赏
  • 举报
回复
引用 4 楼 Chen8013 的回复:
[quote=引用 3 楼 zhao4zhong1 的回复:] [quote=引用 2 楼 Chen8013 的回复:] 目测赵4回贴机患了老年痴呆症,已经是病入膏肓,不可救药了!!! 你知道什么叫做“二次开发”不??? 不懂就不要胡言乱语! 不要只知道A语言B语言的瞎BB!!!
总有一天,你会掉到A语言B语言的坑里。[/quote] [/quote] z这个赵四是脑残么,怎么又来捣乱了
DQYDXT 2018-02-03
  • 打赏
  • 举报
回复
引用 2 楼 Chen8013 的回复:
目测赵4回贴机患了老年痴呆症,已经是病入膏肓,不可救药了!!! 你知道什么叫做“二次开发”不??? 不懂就不要胡言乱语! 不要只知道A语言B语言的瞎BB!!!
每次还是您的回复比较一阵见血,确实是二次开发,您有办法吗
DQYDXT 2018-02-03
  • 打赏
  • 举报
回复
引用 1 楼 zhao4zhong1 的回复:
不要做A语言代码修改为B语言代码的无用功。 也不要做用A语言代码直接调用B语言代码库这样复杂、这样容易出错的傻事。 只需让A、B语言代码的输入输出重定向到文本文件,或修改A、B语言代码让其通过文本文件输入输出。 即可很方便地让A、B两种语言之间协调工作。 比如: A将请求数据写到文件a.txt,写完后改名为aa.txt B发现aa.txt存在时,读取其内容,调用相应功能,将结果写到文件b.txt,写完后删除aa.txt,改名为bb.txt A发现bb.txt存在时,读取其内容,读完后删除bb.txt 以上A可以替换为任何一种开发语言或开发环境,B可以替换为任何一种与A不同的开发语言或开发环境。 除非A或B不支持判断文件是否存在、文件读写和文件更名。 但是谁又能举出不支持判断文件是否存在、文件读写和文件更名的开发语言或开发环境呢? 可以将临时文件放在RamDisk上提高效率减少磨损磁盘。 数据的结构很复杂的话,文本文件的格式问题可参考json或xml 共享临时文本文件这种进程之间的通讯方法相比其它方法的优点有很多,下面仅列出我现在能想到的: ·进程之间松耦合 ·进程可在同一台机器上,也可跨机,跨操作系统,跨硬件平台,甚至跨国。 ·方便调试和监视,只需让第三方或人工查看该临时文本文件即可。 ·方便在线开关服务,只需删除或创建该临时文本文件即可。 ·方便实现分布式和负载均衡。 ·方便队列化提供服务,而且几乎不可能发生队列满的情况(除非硬盘空间满) ·…… “跨语言、跨机,跨操作系统,跨硬件平台,跨国,跨*.*的”苦海无边, 回头是“使用共享纯文本文件进行信息交流”的岸!
请问,您是在说什么?
舉杯邀明月 2017-04-26
  • 打赏
  • 举报
回复
引用 5 楼 zhao4zhong1 的回复:
[quote=引用 4 楼 Chen8013 的回复:] . . . . . . . .
等到那天时,别忘了使用1楼这种恶心的绳子把你自己拉上来。[/quote] 你就拉倒吧 !!! 对我来说,根本就不存在这种问题。 各种计算机语言,都有其“优势”(当然也许会有某些不足之处),否则它就不会有“活力”。 等你对计算机语言的认识达到一定的境界时,就能理解了。 最关键的是: 楼主的问题,跟你所谓的“A语言、B语言”的事情,毛关系都没有!!!
赵4老师 2017-04-26
  • 打赏
  • 举报
回复
引用 4 楼 Chen8013 的回复:
[quote=引用 3 楼 zhao4zhong1 的回复:] [quote=引用 2 楼 Chen8013 的回复:] 目测赵4回贴机患了老年痴呆症,已经是病入膏肓,不可救药了!!! 你知道什么叫做“二次开发”不??? 不懂就不要胡言乱语! 不要只知道A语言B语言的瞎BB!!!
总有一天,你会掉到A语言B语言的坑里。[/quote] [/quote] 等到那天时,别忘了使用1楼这种恶心的绳子把你自己拉上来。
赵4老师 2017-04-26
  • 打赏
  • 举报
回复
引用 10 楼 Chen8013 的回复:
[quote=引用 9 楼 zhao4zhong1 的回复:] AutoCAD不是一种语言?!
AutoCAD是一种“语言” ??? 照你这种说法,Excel是一种语言、Word是一种语言、PowerPoint是一种语言、OutLook也是一种语言………… 还有我们“国产”的,wps、et、wpp,这些也分别“是一种语言”了………… [/quote] 为什么不是呢? 自行车是一种语言,车床是一种语言,卡车是一种语言,联合收割机是一种语言,数学是一种语言,微积分是一种语言,集成电路设计是一种语言,《人民的名义》是一种语言,脑神经外科是一种语言…………
舉杯邀明月 2017-04-26
  • 打赏
  • 举报
回复
引用 9 楼 zhao4zhong1 的回复:
AutoCAD不是一种语言?!
AutoCAD是一种“语言” ??? 照你这种说法,Excel是一种语言、Word是一种语言、PowerPoint是一种语言、OutLook也是一种语言………… 还有我们“国产”的,wps、et、wpp,这些也分别“是一种语言”了…………
赵4老师 2017-04-26
  • 打赏
  • 举报
回复
AutoCAD不是一种语言?!
舉杯邀明月 2017-04-26
  • 打赏
  • 举报
回复
引用 7 楼 PctGL 的回复:
[quote=引用 6 楼 Chen8013 的回复:] [quote=引用 5 楼 zhao4zhong1 的回复:] [quote=引用 4 楼 Chen8013 的回复:] . . . . . . . .
等到那天时,别忘了使用1楼这种恶心的绳子把你自己拉上来。[/quote] 你就拉倒吧 !!! 对我来说,根本就不存在这种问题。 各种计算机语言,都有其“优势”(当然也许会有某些不足之处),否则它就不会有“活力”。 等你对计算机语言的认识达到一定的境界时,就能理解了。 最关键的是: 楼主的问题,跟你所谓的“A语言、B语言”的事情,毛关系都没有!!! [/quote] 那个家伙有点恶心[/quote] 哇,楼上这位大神,好久不见…………
PctGL 2017-04-26
  • 打赏
  • 举报
回复
引用 6 楼 Chen8013 的回复:
[quote=引用 5 楼 zhao4zhong1 的回复:] [quote=引用 4 楼 Chen8013 的回复:] . . . . . . . .
等到那天时,别忘了使用1楼这种恶心的绳子把你自己拉上来。[/quote] 你就拉倒吧 !!! 对我来说,根本就不存在这种问题。 各种计算机语言,都有其“优势”(当然也许会有某些不足之处),否则它就不会有“活力”。 等你对计算机语言的认识达到一定的境界时,就能理解了。 最关键的是: 楼主的问题,跟你所谓的“A语言、B语言”的事情,毛关系都没有!!! [/quote] 那个家伙有点恶心
赵4老师 2017-04-25
  • 打赏
  • 举报
回复
引用 2 楼 Chen8013 的回复:
目测赵4回贴机患了老年痴呆症,已经是病入膏肓,不可救药了!!! 你知道什么叫做“二次开发”不??? 不懂就不要胡言乱语! 不要只知道A语言B语言的瞎BB!!!
总有一天,你会掉到A语言B语言的坑里。
舉杯邀明月 2017-04-25
  • 打赏
  • 举报
回复
引用 3 楼 zhao4zhong1 的回复:
[quote=引用 2 楼 Chen8013 的回复:] 目测赵4回贴机患了老年痴呆症,已经是病入膏肓,不可救药了!!! 你知道什么叫做“二次开发”不??? 不懂就不要胡言乱语! 不要只知道A语言B语言的瞎BB!!!
总有一天,你会掉到A语言B语言的坑里。[/quote]
赵4老师 2017-04-24
  • 打赏
  • 举报
回复
不要做A语言代码修改为B语言代码的无用功。 也不要做用A语言代码直接调用B语言代码库这样复杂、这样容易出错的傻事。 只需让A、B语言代码的输入输出重定向到文本文件,或修改A、B语言代码让其通过文本文件输入输出。 即可很方便地让A、B两种语言之间协调工作。 比如: A将请求数据写到文件a.txt,写完后改名为aa.txt B发现aa.txt存在时,读取其内容,调用相应功能,将结果写到文件b.txt,写完后删除aa.txt,改名为bb.txt A发现bb.txt存在时,读取其内容,读完后删除bb.txt 以上A可以替换为任何一种开发语言或开发环境,B可以替换为任何一种与A不同的开发语言或开发环境。 除非A或B不支持判断文件是否存在、文件读写和文件更名。 但是谁又能举出不支持判断文件是否存在、文件读写和文件更名的开发语言或开发环境呢? 可以将临时文件放在RamDisk上提高效率减少磨损磁盘。 数据的结构很复杂的话,文本文件的格式问题可参考json或xml 共享临时文本文件这种进程之间的通讯方法相比其它方法的优点有很多,下面仅列出我现在能想到的: ·进程之间松耦合 ·进程可在同一台机器上,也可跨机,跨操作系统,跨硬件平台,甚至跨国。 ·方便调试和监视,只需让第三方或人工查看该临时文本文件即可。 ·方便在线开关服务,只需删除或创建该临时文本文件即可。 ·方便实现分布式和负载均衡。 ·方便队列化提供服务,而且几乎不可能发生队列满的情况(除非硬盘空间满) ·…… “跨语言、跨机,跨操作系统,跨硬件平台,跨国,跨*.*的”苦海无边, 回头是“使用共享纯文本文件进行信息交流”的岸!
舉杯邀明月 2017-04-24
  • 打赏
  • 举报
回复
目测赵4回贴机患了老年痴呆症,已经是病入膏肓,不可救药了!!! 你知道什么叫做“二次开发”不??? 不懂就不要胡言乱语! 不要只知道A语言B语言的瞎BB!!!

7,762

社区成员

发帖
与我相关
我的任务
社区描述
VB 基础类
社区管理员
  • VB基础类社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧