土木在线论坛 \ 施工技术 \ 工程测量 \ 用VBA实现从EXCEL表到CAD表转换 (转帖)

用VBA实现从EXCEL表到CAD表转换 (转帖)

发布于:2006-04-20 10:44:20 来自:施工技术/工程测量 [复制转发]

作者:查拥军 出处:工测员

摘要:该程序可将Excel表格中的所有单元格全部按原来大小、风格转换到AutoCAD文件中来。在转换过程中,表格线条的转换和文字转换是重点。文字转换采用了直接利用AddMtext命令提供的属性进行转换,避免了已往修改形文件来进行文字标注的方法,直接控制表格文字字体、大小、下划线、上下脚标,倾斜,加粗等,使每个文字的风格均可以得到很好的控制,极大提高了文字标注的灵活性。

---- 一、前言
---- Microsoft Excel
软件具有十分强大的制表、表格计算等功能,是普通人员常用的制表工具。可以通过其内嵌的VBA语言可以控制Microsoft
Excel 的整个操作过程。
----AutoCAD是由AutoDesk公司的工程绘图软件,是CAD市场的主流产品,功能十分强大,是工程制图人员常用的软件之一。AutoDesk公司从R14版以后,为其提供了VBA语言接口。

---- 在工程制图中,常常需要在图中插入绘制表格,一般有两种方法。其一,是利用剪贴板,将Microsoft
Excel表格拷贝至剪贴板中,然后打开AutoCAD文件,再将剪贴板中的文件粘贴至所需位置。这种方法十分简单,但有其固有的缺点。①在保存文件必须将.xls和.dwg文件保存在一起,一旦缺少excel环境,则再对表格继续修改。②同时打开多个表格操作,需要占据较大的内存空间。③文件体积变得很大,表格有时在.dwg文件中以图标形式显示,不便于观察。

---- 第二种方法,即利用Microsoft
Excel、AutoCAD都提供的VBA功能,编制程序进行转换,将Microsoft
Excel表格按原来样子转换,即把Microsoft
Excel表格中的文字和线条信息全部读取出来,在AutoCAD文件里按照一一对应的方式写出来,确保转换后的表格与原表格一致。这样彻底避免了前种方法的缺点,便于表格内容编辑。本文着重介绍此方法。

---- 二、表格转换工作机理分析及具体实现方法
---- 1.表格转换工作机理分析
---- 在制表过程中,经常遇到两个概念,表和方格。
---- 在Microsoft
Excel中,与表对应的对象是工作表(Sheet或Worksheet),与每一个表格方格相对应的对象是单元格区域(range),它可以仅包括一个单元格(cell),也可以由多个单元格合并而成。

全部回复(8 )

只看楼主 我来说两句
  • wgj010
    wgj010 沙发



    什么意思?我搞不懂你说的什么哦!
    2006-04-24 09:27:24

    回复 举报
    赞同0
  • wgj010
    wgj010 板凳
    ‘下面函数控制字体本身属性
    Function ForeFontStr(m As Range, u As Integer) As String
    a1 = "\F" + m.Characters(u, 1).Font.Name + ";" ‘字体
    a2 = IIf(m.Characters(u, 1).Font.Superscri pt =
    True, "\H0.33x;\A2;", "") ’上脚标
    a3 = IIf(m.Characters(u, 1).Font.Subscri pt =
    True, "\H0.33x;\A0;", "") ’下脚标
    a4 = IIf(m.Characters(u, 1).Font.FontStyle =
    "倾斜", "\Q18;", "") ’倾斜
    a5 = IIf(m.Characters(u, 1).Font.FontStyle =
    "加粗", "\W1.2;", "") ’加粗
    a6 = IIf(m.Characters(u, 1).Font.FontStyle =
    "加粗 倾斜", "\W1.2;\Q18;", "") ’ 加粗倾斜
    ForeFontStr = a1 + a2 + a3 + a4 + a5 + a6
    End Function
    ---- (2).表格中表格文字位置的转换
    ---- 对文字对象的属性的直接控制来实现,通过with….end with
    结构可以很容易地控制文字的高度、图层、颜色、书写方向。由于Mtext文字提供支持的排列位置分为9种,必须根据Microsoft
    Excel表格文字的排列方式加以合适的判定,然后进行转换。其具体的实现方法详见下面的程序。
    Sub kz( )
    With textObj ‘文字对象
    .Height = textHgt
    .Layer = newlayer.Name ‘设置图层
    .Color = acRed ‘设置颜色
    .DrawingDirection = 1 ‘设置书写方向
    If (ma.VerticalAlignment = xlTop _
    Or ma.VerticalAlignment = xlGeneral) _
    And (ma.HorizontalAlignment = xlLeft _
    Or ma.HorizontalAlignment = xlGeneral) _
    Then .AttachmentPoint = 1 ’acAttachmentPointTopLeft
    If (ma.VerticalAlignment = xlTop _
    Or ma.VerticalAlignment = xlGeneral) _
    And (ma.HorizontalAlignment = xlCenter _
    Or ma.HorizontalAlignment = xlJustify _
    Or ma.HorizontalAlignment = xlDistributed) _
    Then .AttachmentPoint = 2 ’acAttachmentPointTopCenter
    If (ma.VerticalAlignment = xlTop _
    Or ma.VerticalAlignment = xlGeneral) _
    And ma.HorizontalAlignment = xlRight _
    Then .AttachmentPoint = 3 ’acAttachmentPointTopRight
    If (ma.VerticalAlignment = xlCenter _
    Or ma.VerticalAlignment = xlJustify _
    Or ma.VerticalAlignment = xlDistributed) _
    And (ma.HorizontalAlignment = xlLeft _
    Or ma.HorizontalAlignment = xlGeneral) _
    Then .AttachmentPoint = 4 ’acAttachmentPointMiddleLeft
    If (ma.VerticalAlignment = xlCenter _
    Or ma.VerticalAlignment = xlJustify _
    Or ma.VerticalAlignment = xlDistributed) _
    And (ma.HorizontalAlignment = xlCenter _
    Or ma.HorizontalAlignment = xlJustify _
    Or ma.HorizontalAlignment = xlDistributed) _
    Then .AttachmentPoint = 5 ’acAttachmentPointMiddleCenter
    If (ma.VerticalAlignment = xlCenter _
    Or ma.VerticalAlignment = xlJustify _
    Or ma.VerticalAlignment = xlDistributed) _
    And ma.HorizontalAlignment = xlRight _
    Then .AttachmentPoint = 6 ’acAttachmentPointMiddleRight
    If ma.VerticalAlignment = xlBottom _
    And (ma.HorizontalAlignment = xlLeft _
    Or ma.HorizontalAlignment = xlGeneral) _
    Then .AttachmentPoint = 7 ’acAttachmentPointBottomLeft
    If ma.VerticalAlignment = xlBottom _
    And (ma.HorizontalAlignment = xlCenter _
    Or ma.HorizontalAlignment = xlJustify _
    Or ma.HorizontalAlignment = xlDistributed) _
    Then .AttachmentPoint = 8 ’acAttachmentPointBottomCenter
    If ma.VerticalAlignment = xlBottom _
    And ma.HorizontalAlignment = xlRight _
    Then .AttachmentPoint = 9 ’acAttachmentPointBottomRight
    End With
    textObj.Update
    End Sub
    ---- 三、功能与特点介绍
    ----该程序可将Excel表格中的所有单元格全部按原来大小、风格转换到AutoCAD文件中来。在转换过程中,表格线条的转换和文字转换是重点。文字转换采用了直接利用AddMtext命令提供的属性进行转换,避免了已往修改形文件来进行文字标注的方法,直接控制表格文字字体、大小、下划线、上下脚标,倾斜,加粗等,使每个文字的风格均可以得到很好的控制,极大提高了文字标注的灵活性。

    ---- 本程序采用Visual BASIC编制,需要Microsoft Excel 2000和AutoCAD R14运行环境,编译后通过。





    2006-04-20 10:45:20

    回复 举报
    赞同0
加载更多
这个家伙什么也没有留下。。。

工程测量

返回版块

7.07 万条内容 · 310 人订阅

猜你喜欢

阅读下一篇

坐标法测图的优化程序(转帖)

作者:张明睦 出处:《北京测绘》1999年第1期 一、问题提出在实施坐标法施测大比例尺地形图时,常用是视距极坐标法观测,支距法现场展绘,观测数据按常规的顺序输入,展点以图幅的左下角为零点,数据在图上成1:1000的比例。由于CASIOfx--3600P计算器的程序步的极限, 则就要优化坐标法则图的程序。二、优化的CASIOfx--3600P计算器程序:MODE O INV PCL P1Kout 4 Kin 1 Kout 5 Kin 2 Kout 6 Kin 3

回帖成功

经验值 +10