明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 6368|回复: 11

[分享][讨论]VBA与电子表格

  [复制链接]
发表于 2003-10-7 18:12:00 | 显示全部楼层 |阅读模式
本帖最后由 作者 于 2003-10-11 10:00:07 编辑

大家经常讨论VBA与数据库,却有很少人讨论VBA与EXCEL,我在学这方面的内容,感觉势单力薄啊,特发表下面一段范例程序,望引起各位朋友的兴趣一起探讨之。
  本程序是查找块参考的属性,并将取得的属性值转到EXCEL中。  
Sub vbaexcelsj()
'定义excel.application类型的对象变量
  Dim excelobj As Excel.Application
  Dim excelsheet As Object
  Dim excelworkbook As Object
  Dim rownumber As Integer
  Dim headertf As Boolean
  Dim elemobj As AcadEntity
  Dim arraydata As Variant
  '启动excelobj
  Set excelobj = New Excel.Application
  '创建工作簿和寻找作用中的表
  Set excelworkbook = excelobj.workbooks.Add
  Set excelsheet = excelobj.activesheet
    excelworkbook.SaveAs "attribute.xls"
    rownumber = 1
    hesdertf = False
  '遍历寻找所有图块
  For Each elemobj In ThisDrawing.ModelSpace
    With elemobj
' 发现块参考时,检查其属性
  If StrComp(.EntityName, "acdbblockreference", 1) = 0 Then
    If .HasAttributes Then
     '取得属性值
    arraydata = .GetAttributes
    '复制属性的标签字符串到excel
        For appcount = LBound(arraydata) To UBound(arraydata)
          If headertf = False Then
           If StrComp(arraydata(appcount).EntityName, "acdbattribute", 1) = 0 Then
             excelsheet.cells(rownumber, appcount + 1).Value = arraydata(appcount).TagString
           End If
          End If
        Next appcount
          rownumber = rownumber + 1
        For appcount = LBound(arraydata) To UBound(arraydata)
          excelsheet.cells(rownumber, appcount + 1).Value = arraydata(appcount).TextString
        Next appcount
          headertf = True
    End If
  End If
End With
  Next elemobj
  excelobj.Application.Quit
End Sub
   
在本版块成立之际,现将源程序也传上来




VBA开发指南

本帖子中包含更多资源

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

x
发表于 2003-10-8 21:47:00 | 显示全部楼层
不错!
发表于 2003-10-9 10:15:00 | 显示全部楼层
请问,该程序的编译是在cad环境,还是在excel的vba环境中执行??
 楼主| 发表于 2003-10-9 10:42:00 | 显示全部楼层
在AUTOCAD的VBA环境下,不过你不要忘记了引用MICROSOFT EXCEL哦,生成的EXCEL在我的文档目录下面。
发表于 2003-10-9 11:40:00 | 显示全部楼层
好东东~~~~~~
发表于 2003-10-20 12:29:00 | 显示全部楼层
OK!谢谢!
发表于 2003-11-10 22:20:00 | 显示全部楼层
excelsheet.cells(rownumber, appcount + 1).value = arraydata(appcount).TextString
excellsheet 指电子表格的sheets中的哪一个?
 楼主| 发表于 2003-11-11 09:46:00 | 显示全部楼层
excelapp.activesheet
发表于 2003-11-18 08:32:00 | 显示全部楼层
我好象在哪本书中看到过?不记得了,好象AUTOCAD VBA开发中的CAD与EXCEL通信
 楼主| 发表于 2003-11-18 09:24:00 | 显示全部楼层
是一个范例,李凤华编的。
    好象是开发指南吧。清华大学出的。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2024-12-23 14:31 , Processed in 0.205927 second(s), 26 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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