找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 710|回复: 4

[VBA程序]:求教AutoCAD和Microsoft应用程序Excel之间的数据交换

[复制链接]
发表于 2003-5-19 15:21:41 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?立即注册

×
各位老师:
我们在南亚一个小国搞道路施工,资讯缺乏。最近国内来人,带来几本有关AutoCAD程序设计的书。
在下有一个困扰我多日的问题,由于求教无门,只好请同事上网查询有关网站,冒昧向各位老师求救!
我们有一本“AutoCAD VBA从入门到精通”([美]Marion Cottingham著  电子工业出版社)一书,其中第16章讲述ActiveX控件,通过这些控件进行AutoCAD和Microsoft应用程序Excel、Word和Access之间的数据交换。
其范例16-1是用AutoCAD VBA代码编写,在AutoCAD窗口输入直线的两个点,由VBA程序打开Excel,将其直线数据存储到Excel中,该范例演示成功。     
我们最感兴趣的范例是16-2,是用 Excel VBA代码编写,该范例是直接利用Excel中的数据在AutoCAD窗口绘制直线。然而不幸的是;该范例未能运行下去。只要一运行该范例,就在调用AutoCAD.Application对象时出错,其语句为AutoCADApplication As AutoCAD.Application。总是提示:“编译错误:用户定义类型未定义”。
而我们已按步骤在Excel中打开引用对话框,在可使用的引用项目中勾选了“AutoCAD类型库及AutoCAD/Object DBX Ommon 1.0 类型库。
是何原因导致出错?
是我们操作方面的问题还是Excel不支持这类操作?
原代码如下:
Public Sub DrawLineInAutoCAD()
Dim AutoCADApplication As AutoCAD.Application
AutoCADApplication.Visible = True
Dim StartLine(0 To 2) As Double
Dim Endline(0 To 2) As Double
Set AutoCADApplication = CreateObject(" AutoCADapplication")
StartLine(0) = Cells(2, 2).Value
StartLine(1) = Cells(3, 2).Value
endtline(0) = Cells(2, 3).Value
endtline(1) = Cells(3, 3).Value
AutoCADApplication.ActiveDocument.ModelSpace.Addlinestartline , Endline
End Sub
我们使用的是AutoCAD2000及Office XP Professional。
烦请各位老师援手,给我们指点迷津,则不胜感激之至。
                                                                                                阮少清
2003/5/18
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
发表于 2003-5-19 16:08:05 | 显示全部楼层
可能性1
ACAD没有安装好(这个我碰到过)
解决方法:ACAD SETUP 修复

可能性2
AutoCADApplication As AutoCAD.Application
APPLICATION不是正确类名.
由于版本不同,类名的表示可能不同.如,ACAD2004的定义为AcadApplication
EXCEL中 Dim AA As AutoCAD.AcadApplication
解决方法,Dim AA As AutoCAD.输入[.]后,在弹出选择框中查找带有Application字样的类名
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 181个

财富等级: 日进斗金

发表于 2003-5-19 20:08:42 | 显示全部楼层
一、AutoCAD VBA中的对象类型都是以Acad开头的,如Application对象为AcadApplication,而Document对象为AcadDocument,这一点与Excel中的VBA是不一样的。
二、当声明完Application对象后,不能直接就使用它的属性或者方法,因为它还没赋值,还不是一个有效的对象。因而这一句AutoCADApplication.Visible = True应该在后面使用。
三、Endline数组在后面使用中中间多了一个t。endtline[/COLOR]

  1.   [FONT=courier new]
  2. Public Sub DrawLineInAutoCAD()
  3.     Dim AutoCADApplication As AcadApplication
  4.     Set AutoCADApplication = CreateObject(" AutoCADapplication")
  5.     AutoCADApplication.Visible = True
  6.    
  7.     Dim StartLine(0 To 2) As Double
  8.     Dim Endline(0 To 2) As Double
  9.     StartLine(0) = Cells(2, 2).Value
  10.     StartLine(1) = Cells(3, 2).Value
  11.     Endline(0) = Cells(2, 3).Value
  12.     Endline(1) = Cells(3, 3).Value
  13.     AutoCADApplication.ActiveDocument.ModelSpace.AddLine StartLine, Endline
  14. End Sub
  15.   [/FONT]
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2003-5-24 22:51:09 | 显示全部楼层
最初由 efan2000 发布
[B]一、AutoCAD VBA中的对象类型都是以Acad开头的,如Application对象为AcadApplication,而Document对象为AcadDocument,这一点与Excel中的VBA是不一样的。
二、当声明完Application对象后,不能直接就使用它的属性或... [/B]


斑竹的这段代码还是不行,是我引用错了,还是……
我已学会在CAD打开EXCEL;但在EXCEL中却打不开CAD。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 181个

财富等级: 日进斗金

发表于 2003-5-24 23:20:36 | 显示全部楼层
找到原因了,主要是要创建的应用程序名称和类的问题。AutoCAD的clss应为:AutoCAD.application。在类名称的字符串之前不能在空格,而且应用程序和类名之间必须用点号隔开。如CreateObject(" AutoCADapplication"),就是多了一个空格,中间少了一个“.”。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|申请友链|Archiver|手机版|小黑屋|辽公网安备|晓东CAD家园 ( 辽ICP备15016793号 )

GMT+8, 2024-11-22 13:18 , Processed in 0.169427 second(s), 38 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表