用VBA将Excel表格与CAD交互
工作之后才开始接触VBA,现在已经两年了,也没有怎么认真学过做了个CAD跟Excel表格转换的,但是水平有限,代码太乱了,写完有时自己都不记得为什么这样写的,发出来希望有大神看看,
给点建议,也顺便看看能不能解决些遗留问题。代码基本都是抄抄改改的,
用了哪些大神的也不记得了,抱歉了,上传的是源码,还有使用的相关说明。
最新文件
导入表格过程
导出表格过程
**** Hidden Message ***** 补一个CAD导出Excel的思路,目前单元格内的文字排序和上下标问题没处理好,由于上下标位置太复杂,CAD各种字体宽度又不是固定的,确实想不出什么好办法。
1、拾取由线(包括多段线和直线)和文字组成的表格对象,文字和线分开两个数组存放
2、遍历线数组,提取线的点XY坐标,坐标每两个点为一组,直线的话就是起终点,多段线的话就是1、2点一组、2、3点一组,……,n-1、n点一组。这一步主要是将多段线坐标转成直线。最终得到许多直线的XY坐标数组。
3、循环XY坐标数组,将坐标数组按竖线和横线分开,横线取Y坐标,竖线取X坐标,去掉重复数字,还可以根据文字高度和宽度,去掉一些可能在单元格中的短线,这样得到表格的行线的坐标数组和列线的坐标数组。
4、循环行线坐标数组
循环列线坐标数组
如果单元格的左边线和顶边线存在,则说明单元格存在(否则单元格被合并)
向下循环行线坐标数组直到找到下边线,确定本单元格合并的行数
向右循环列线坐标数组直到找到右边线,确定本单元格合并的列数
其中,判断单元格上下左右边线是否存在如下:
计算单元格的边线中心点坐标
顶、底边线则循环第2步整理的行线行线坐标数组,通过点是否在直线上判断是否存在
左、右变线则循环第2步整理的竖线行线坐标数组
5、到此,就可以得到一个表格框架,表格的行数,行高,列数,列高,行线Y坐标,竖线X坐标,每个单元格合并的单元格情况等。
6、循环每个单元格,根据单元格的上下左右坐标为控制
循环文字的中心坐标,在单元格范围的,就拾取
将所有在单元格内的文字整理排序,处理上下标等
7、到此,就可以得到完整的表格内容。
8、循环单元格,没有被合并的则将文字输出至Excel,处理合并的单元格
是前面想只用单行文字特意去掉的,忘记改了,斜线我用得太少了,而且很多插件也没有这个,感觉是没什么需求
更新了下文件,修复了些bug,也去掉了密码,自己可行看下错误,解决了记得来反馈一下 1. 闪烁应该是ACAD刷新所致,跟EXCEL没关系。可以先zoom到一个很小的空的区域,这个区域内没有图形,刷新的影响降到最低。
2. 单元格内多个文字,可以按照大小坐标等排序,可以实现多个文字带上下标输出。 你好兄弟我有录gif的软件加我扣扣3298554767
谢谢,今天找到了解决办法
极简录屏软件 Gif123 , 操作特别简单 https://gif123.aardio.com
http://bbs.mjtd.com/forum.php?mod=attachment&aid=MTE5NjM3fGY0YmI4MmIyfDE2NTkwNzAwMTB8NzMyNjkxOHwxODQ4MTM%3D&noupdate=yes¬humb=yes
感谢,确实很好用 谢谢分享,下载学习下
页:
[1]
2