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
uj5u.com熱心網友回復:
你裝的是不是“綠色版”的CAD?
你在VB的參考里面能不能看到CAD?
uj5u.com熱心網友回復:
應該不是吧。
他已經“參考”了,肯定能“看到”啊。
要不然,在 Dim cad As AcadApplication 就提示“型別沒有定義”(大概是這樣的錯誤提示吧)之類的了。
但是我再代碼最前面加上 on error resume next,然后去掉if 的判斷陳述句,就可以運行代碼,但是我不想用on erroe resume next,
怕后面的程式有錯誤,找不出來,其實用onerror和if err都是為了判斷cad是否打開,為什么就是 if err陳述句每次都會出現無法創建
物件的錯誤呢,哎
uj5u.com熱心網友回復:
在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
uj5u.com熱心網友回復:
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 ,能“正確運行”才怪!!!
“可以運行”,跟“能正確運行”相比,是天壤之別!!!
uj5u.com熱心網友回復:
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
您覺得是這樣嗎
uj5u.com熱心網友回復:
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 ,能“正確運行”才怪!!!
“可以運行”,跟“能正確運行”相比,是天壤之別!!!