Private Sub Command1_Click() Dim cad As AcadApplication Set cad = GetObject(, "AutoCAD.Application") If Err Then Err.Clear Set cad = CreateObject("AutoCAD.Application") End If cad.Visible = True End Sub
我觉得没有错啊,一开始以为是cad版本的问题然后试了试具体版本号的代码(我的cad是2014)
Private Sub Command1_Click() Dim cad As AcadApplication Set cad = GetObject(, "AutoCAD.Application.19") If Err Then Err.Clear Set cad = CreateObject("AutoCAD.Application.19") End If cad.Visible = True End Sub
还是不能解决,抓狂!求大神帮忙,分数已经快没了,真心感谢1
15 个解决方案
#1
你装的是不是“绿色版”的CAD?
你在VB的引用里面能不能看到CAD?
#2
应该不是吧。
他已经“引用”了,肯定能“看到”啊。
要不然,在 Dim cad As AcadApplication 就提示“类型没有定义”(大概是这样的错误提示吧)之类的了。
但是我再代码最前面加上 on error resume next,然后去掉if 的判断语句,就可以运行代码,但是我不想用on erroe resume next,
怕后面的程序有错误,找不出来,其实用onerror和if err都是为了判断cad是否打开,为什么就是 if err语句每次都会出现无法创建
对象的错误呢,哎
#9
在64位Windows下:
64位exe和dll在目录c:\windows\sys
tem32目录下;
32位exe和dll在目录c:\windows\sys
wow64目录下;
所以要注意:
在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
#10
Dim cad As new AcadApplication
走起
小心一点按钮,然后提示“OLE自动化错误”之类的(大概是这个意思的……)。
但是我再代码最前面加上 on error resume next,然后去掉if 的判断语句,就可以运行代码,但是我不想用on erroe resume next,
怕后面的程序有错误,找不出来,其实用onerror和if err都是为了判断cad是否打开,为什么就是 if err语句每次都会出现无法创建
对象的错误呢,哎
明明是“有错误的”,你用 on error resume next ,能“正确运行”才怪!!!
“可以运行”,跟“能正确运行”相比,是天壤之别!!!
#11
Dim cad As new AcadApplication
走起
小心一点按钮,然后提示“OLE自动化错误”之类的(大概是这个意思的……)。
但是我再代码最前面加上 on error resume next,然后去掉if 的判断语句,就可以运行代码,但是我不想用on erroe resume next,
怕后面的程序有错误,找不出来,其实用onerror和if err都是为了判断cad是否打开,为什么就是 if err语句每次都会出现无法创建
对象的错误呢,哎
明明是“有错误的”,你用 on error resume next ,能“正确运行”才怪!!!
“可以运行”,跟“能正确运行”相比,是天壤之别!!!
不是这个意思,我大概知道原因了,比如这段代码
Private Sub Command2_Click() Dim p1(2) As Double, p2(2) As Double, p3(2) As Double Dim MyCad As AcadApplication 'mechaniacal 对象 Dim MyDoc As AcadDocument Dim MyLine As AcadLine Dim dima As AcadDimAligned On Error Resume Next Set MyCad = GetObject(, "AutoCad.application") If Err Then Err.Clear Set MyCad = CreateObject("AutoCad.application") End If
MyCad.Visible = True end sub
我不加 on error resume next,那么我再cad运行的时候,用 Set MyCad =
GetObject(, "AutoCad.application"),肯定会出错
然后出错了,程序自然也不会往下一行读取 If Err 语句,自然起不到判断cad是否在运行的作用,但是加上on on error resume next,出错后程序继续
往下执行,才能执行
If Err Then if err Err.Clear Set MyCad = CreateObject("AutoCad.application") End If
您觉得是这样吗
#12
Dim cad As new AcadApplication
走起
小心一点按钮,然后提示“OLE自动化错误”之类的(大概是这个意思的……)。
但是我再代码最前面加上 on error resume next,然后去掉if 的判断语句,就可以运行代码,但是我不想用on erroe resume next,
怕后面的程序有错误,找不出来,其实用onerror和if err都是为了判断cad是否打开,为什么就是 if err语句每次都会出现无法创建
对象的错误呢,哎
明明是“有错误的”,你用 on error resume next ,能“正确运行”才怪!!!
“可以运行”,跟“能正确运行”相比,是天壤之别!!!
但是我再代码最前面加上 on error resume next,然后去掉if 的判断语句,就可以运行代码,但是我不想用on erroe resume next,
怕后面的程序有错误,找不出来,其实用onerror和if err都是为了判断cad是否打开,为什么就是 if err语句每次都会出现无法创建
对象的错误呢,哎
#9
在64位Windows下:
64位exe和dll在目录c:\windows\sys
tem32目录下;
32位exe和dll在目录c:\windows\sys
wow64目录下;
所以要注意:
在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
#10
Dim cad As new AcadApplication
走起
小心一点按钮,然后提示“OLE自动化错误”之类的(大概是这个意思的……)。
但是我再代码最前面加上 on error resume next,然后去掉if 的判断语句,就可以运行代码,但是我不想用on erroe resume next,
怕后面的程序有错误,找不出来,其实用onerror和if err都是为了判断cad是否打开,为什么就是 if err语句每次都会出现无法创建
对象的错误呢,哎
明明是“有错误的”,你用 on error resume next ,能“正确运行”才怪!!!
“可以运行”,跟“能正确运行”相比,是天壤之别!!!
#11
Dim cad As new AcadApplication
走起
小心一点按钮,然后提示“OLE自动化错误”之类的(大概是这个意思的……)。
但是我再代码最前面加上 on error resume next,然后去掉if 的判断语句,就可以运行代码,但是我不想用on erroe resume next,
怕后面的程序有错误,找不出来,其实用onerror和if err都是为了判断cad是否打开,为什么就是 if err语句每次都会出现无法创建
对象的错误呢,哎
明明是“有错误的”,你用 on error resume next ,能“正确运行”才怪!!!
“可以运行”,跟“能正确运行”相比,是天壤之别!!!
不是这个意思,我大概知道原因了,比如这段代码
Private Sub Command2_Click() Dim p1(2) As Double, p2(2) As Double, p3(2) As Double Dim MyCad As AcadApplication 'mechaniacal 对象 Dim MyDoc As AcadDocument Dim MyLine As AcadLine Dim dima As AcadDimAligned On Error Resume Next Set MyCad = GetObject(, "AutoCad.application") If Err Then Err.Clear Set MyCad = CreateObject("AutoCad.application") End If
MyCad.Visible = True end sub
我不加 on error resume next,那么我再cad运行的时候,用 Set MyCad =
GetObject(, "AutoCad.application"),肯定会出错
然后出错了,程序自然也不会往下一行读取 If Err 语句,自然起不到判断cad是否在运行的作用,但是加上on on error resume next,出错后程序继续
往下执行,才能执行
If Err Then if err Err.Clear Set MyCad = CreateObject("AutoCad.application") End If
您觉得是这样吗
#12
Dim cad As new AcadApplication
走起
小心一点按钮,然后提示“OLE自动化错误”之类的(大概是这个意思的……)。
但是我再代码最前面加上 on error resume next,然后去掉if 的判断语句,就可以运行代码,但是我不想用on erroe resume next,
怕后面的程序有错误,找不出来,其实用onerror和if err都是为了判断cad是否打开,为什么就是 if err语句每次都会出现无法创建
对象的错误呢,哎
明明是“有错误的”,你用 on error resume next ,能“正确运行”才怪!!!
“可以运行”,跟“能正确运行”相比,是天壤之别!!!