明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 4086|回复: 15

新人入门:求入门教程,另求CADVBA直接读取EXCEL数据教程

[复制链接]
发表于 2019-7-28 11:02 | 显示全部楼层 |阅读模式
      各位大佬好,本人十几年的工作和EXCEL和CAD完全紧密连接;所以就唠几句;
      基本上所有的工科专业都会涉及到数据和图形两个问题,而数据用的最多最普遍的是就EXCEL,图形最多的就是CAD;
但是EXCEL处理数据很强大,确不能直接出图;CAD基本是图形必备的,之前确没有简单的做法引用EXCEL的数据;所以一直在想:有什么办法可以把EXCEL的数据和CAD的绘图简单的结合起来;来到咱们社区请各位大佬指点;


      之前一直用EXCEL用些简单的筛选和函数,后来工作量剧增,而且容易出错,就从0开始在各个论坛发帖子,百度搜索学习了EXCEL VBA,自己一边问一边学,一边写,码了大概几万行的代码,基本上解决了EXCEL上的问题,效率提高了数十倍甚至上百倍;希望学习CADVBA提高工作效率和减少错误;


      现在来到明经,也是从0开始学习CADVBA,(因为之前自学的是EXCEL 里的VBA,应该会有些帮助,所以就没选LISP等),希望各位论坛的大佬,师兄弟帮助,指导;

       目前入门的两个问题,请各位老师,师兄弟指点:
       ①有什么入门教程,教材可以购买下载;
       ②有什么办法读取EXCEL工作表中单元格的数据来作图;

       祝大家,工作顺利,学习进步!

发表于 2019-7-28 13:54 | 显示全部楼层
本帖最后由 风言无际 于 2019-7-28 14:02 编辑

你的问题无非就是读取EXCEL单元格的数据,然后传到CAD中进行绘图。现在你EXCEL VBA肯定是相当熟练的了,只是CAD VBA不会,有EXCEL VBA的基础,CAD VBA很容易上手的。CAD VBA引用的是CAD的类型库,与EXCEL相比,不同的地方就是操作各类CAD对象。
你可以在EXCEL VBA中引用CAD类库,然后操作CAD;或者在CAD VBA中引用EXCEL类型库,读取EXCEL单元格内容,然后在CAD中绘图等操作。
给你介绍一本好用的教程《AutoCAD VBA工程及VBA交互开发环境教程》,这本教程比较全面。


另外这里还有一份比较简易的入门教程,作者写的也比较用心,内容是测绘方面的。可以很快的入门。


我跟你情况差不多,也是EXCEL VBA用的比较多,CAD VBA最近才开始研究的。可以交流交流。
我一般喜欢用VB6.0操作EXCEL和CAD,这样可以做出来独立的EXE文件。


本帖子中包含更多资源

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

x

评分

参与人数 2明经币 +1 金钱 +20 收起 理由
北辰没有南 + 10 赞一个!
mikewolf2k + 1 + 10 很给力!

查看全部评分

回复 支持 1 反对 0

使用道具 举报

发表于 2019-7-28 14:29 | 显示全部楼层
本帖最后由 风言无际 于 2019-7-28 14:40 编辑

下面给你一个简单的例子,读取EXCEL表格中的数据,绘制一条直线,
打开EXCEL,在A1至C2单元格分别添加100,100,0,300,400,0,如下所示

打开CAD,在命令行中输入VBAIDE,打开VBA编辑器,点击菜单栏 工具 - 引用,勾选Microsoft Excel xx.x Object Library,(xx.x跟你安装的EXCEL的版本有关),然后双击左侧的ThisDrawing,如下图

将以下代码贴入右侧空白处,

  1. Sub test()
  2.     Dim xlApp As Excel.Application 'EXCEL对象
  3.     Dim xlBook As Excel.Workbook 'EXCEL工作簿
  4.     Dim xlSheet As Excel.Worksheet 'EXCEL工作表
  5.     Set xlApp = GetObject(, "EXCEL.APPLICATION") '获取当前打开的EXCEL软件
  6.     Set xlBook = xlApp.Workbooks(1) '获取第一个工作簿
  7.     Set xlSheet = xlBook.Sheets(1) '获取第一个工作表
  8.     Dim BL(0 To 2) As Double '左下角坐标数组
  9.     Dim UR(0 To 2) As Double '右上角坐标数组
  10.     BL(0) = xlSheet.Cells(1, 1).Value: BL(1) = xlSheet.Cells(1, 2).Value: BL(2) = xlSheet.Cells(1, 3).Value '读取第一行的三个数据到数组BL
  11.     UR(0) = xlSheet.Cells(2, 1).Value: UR(1) = xlSheet.Cells(2, 2).Value: UR(2) = xlSheet.Cells(2, 3).Value '读取第二行的三个数据到数组UR
  12.     ThisDrawing.ModelSpace.AddLine BL, UR '在CAD中绘制直线,左下角坐标为BL,右上角坐标为UR
  13.     ThisDrawing.Application.ZoomExtents '按图形范围缩放窗口
  14.     ThisDrawing.Application.Update '更新对象
  15. End Sub


按F5运行,查看CAD窗口,可以看到画了一条线,左下角坐标为100,100,右上角坐标为300,400。

反过来,你也可以在EXCEL的VBA编辑器中引用CAD类型库,可以试一下。无非就是引用CAD类型库,然后定义一个CAD应用程序对象AcadApplication,一个CAD文档对象AcadDocument。

或者你可以在VB6.0软件中同时引用CAD类型库和EXCEL类型库,对二者进行操作,这样可以生成独立的EXE程序,便于传播。

 楼主| 发表于 2019-7-28 16:38 | 显示全部楼层
风言无际 发表于 2019-7-28 13:54
你的问题无非就是读取EXCEL单元格的数据,然后传到CAD中进行绘图。现在你EXCEL VBA肯定是相当熟练的了,只 ...

多谢大佬,太感谢了;其实EXCEL 的VBA也是半路出家,半懂不懂的,一边学一边用,因为我正好有大量的数据需要处理,就针对需要处理的数据进行的搜索和学习;
 楼主| 发表于 2019-7-28 16:41 | 显示全部楼层
你就是我CADVBA的第一个师兄。。。
 楼主| 发表于 2019-7-28 16:43 | 显示全部楼层
Set xlApp = GetObject(, "EXCEL.APPLICATION") '获取当前打开的EXCEL软件

获取指定位置的指定名称EXCEL表格里的sheet表怎么写呢
 楼主| 发表于 2019-7-28 17:07 | 显示全部楼层
哪个大佬把我放进QQ群里吧,申请了几回都没进去。。。
发表于 2019-7-28 17:13 | 显示全部楼层
本帖最后由 风言无际 于 2019-7-28 17:38 编辑
彼岸狼 发表于 2019-7-28 16:43
Set xlApp = GetObject(, "EXCEL.APPLICATION") '获取当前打开的EXCEL软件

获取指定位置的指定名称EXCE ...

这其实是很基础的知识,你既然都写了几万行的代码了,应该学会用百度搜索来解决问题的。
    Set xlApp = CreateObject("EXCEL.APPLICATION") '打开EXCEL软件        xlApp.Visible = True
    Set xlBook = xlApp.Workbooks.Open("C:\test.xls")  '打开工作簿
    Set xlSheet = xlBook.Sheets(1) '获取第一个工作表
可以查询MSDN获取帮助的。



 楼主| 发表于 2019-7-28 20:22 | 显示全部楼层
风言无际 发表于 2019-7-28 17:13
这其实是很基础的知识,你既然都写了几万行的代码了,应该学会用百度搜索来解决问题的。
    Set xlApp = ...

多谢,我之前一直写的代码基本上没有出工作表,没有引用过本身之外的。
发表于 2019-7-29 22:38 | 显示全部楼层
我觉得站长写的 《AutoCAD VBA 二次开发教程》以及《XXX 精彩实例》挺好,这两本书一直在用,基本没有解决不了的问题。可以淘宝上搜索下,不知道是不是绝版了。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|CAD论坛|CAD教程|CAD下载|联系我们|关于明经|明经通道 ( 粤ICP备05003914号 )  
©2000-2023 明经通道 版权所有 本站代码,在未取得本站及作者授权的情况下,不得用于商业用途

GMT+8, 2024-4-25 22:55 , Processed in 0.961983 second(s), 27 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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