|
|
发表于 2009-11-14 08:21:05
|
显示全部楼层
来自: 中国
使用下面代码前,必须先在VBAIDE中引用EXCEL类库- ! ^ A# R$ O( \' G0 O& q+ A
- Sub TableToExcel()
- q$ Z' {* |1 K0 J7 v - Dim SS As AcadSelectionSet '声明一个选择集对象变量,用于从屏幕上选择CAD表格对象( N5 _7 |+ b4 b3 w- O* o6 `( O! r% e
- Dim FT(0) As Integer, FD(0) As Variant '声明选择集过滤器,用于限制从屏幕上选择的对象类型& |1 D* j' ^( j+ t5 {) W* X
- Dim T As AcadTable '声明一个CAD表格变量
7 |+ I# ^- \5 C1 I7 U -
5 G. [0 Y1 M! N1 Q# X+ j1 q - FT(0) = 0 '设置选择集过滤器,限制从屏幕上选择的对象仅限于CAD表格,而不是其它对象
1 t9 T3 K9 y7 {: ]4 H - FD(0) = "ACAD_TABLE"1 N1 q# W; Q3 j5 {% n
- With ThisDrawing, j3 n, w0 P- ]$ h
- Set SS = .SelectionSets.Add("SS") '新建选择集
. }* k; e2 w8 @3 M8 D" M+ I - On Error Resume Next$ [& [% D1 s) s. _' G0 v
- SS.SelectOnScreen FT, FD '从屏幕上选取CAD表格对象# X* ^4 }# J: Z
- If Err Then Exit Sub: Z; @* A) V+ y- {- A
- If SS.Count > 0 Then '如果有效选取了表格对象& E* v' V; Q, E& O# I0 M
- Set T = SS.Item(SS.Count - 1)'如果选择了多个CAD表格对象,只对最后一个进行处理; \2 g6 O8 a0 ]. R$ p/ i5 c0 T* N, w
- & c% [( \8 D: V3 u# G
- Dim E As New Excel.Application '声明并启动一个EXCEL进程
3 c" s" E; ~ T" M( S& X- F8 u- y - Dim B As Workbook '声明一个EXCEL工作簿变量
2 v% Y0 h4 H" K" U: F, I - Dim I As Long, J As Long '循环变量
7 j8 p' X. d/ h3 D9 i, P -
! g0 e6 t' ~1 p( L, \ - E.Visible = True '新启动的EXCEL进程对用户是可见的
# l9 G5 e6 y" e+ \0 b" r" X - Set B = E.Workbooks.Add '新建EXCEL工作簿- A; {7 K u! W
- For I = 0 To T.Rows - 1 '从CAD表格中逐单元格向EXCEL中复制0 Z6 A. G! {+ R* q# a
- For J = 0 To T.Columns - 1
1 j/ u7 Q9 ^0 j- E6 ^0 O, t. h$ Q - B.Sheets(1).Cells(I + 1, J + 1).Value = T.GetText(I, J)
_9 J$ M6 p) G- n - Next
- H+ t3 T" S3 O! ^% Q% h - Next$ K, }, a5 j6 N) T
- End If; Y ~+ ?& v+ H& O' e
- SS.Delete '删除用过的选择集5 H8 N. y, i* \* i J
- End With) a+ u: r S% e
- End Sub7 y) n6 R& b, s; @
复制代码 |
|