|
|
发表于 2009-11-14 08:21:05
|
显示全部楼层
来自: 中国
使用下面代码前,必须先在VBAIDE中引用EXCEL类库
- i1 g7 c/ u- R5 j% f- Sub TableToExcel()
! |% a2 O1 F, p% F) n/ ^& p - Dim SS As AcadSelectionSet '声明一个选择集对象变量,用于从屏幕上选择CAD表格对象
4 v- U4 n4 [9 y8 K; A! ~) f% C2 z - Dim FT(0) As Integer, FD(0) As Variant '声明选择集过滤器,用于限制从屏幕上选择的对象类型
, i. k9 Q4 O* m+ J4 P - Dim T As AcadTable '声明一个CAD表格变量! b, e6 f" ?4 }! p4 x
-
: R. v' a" ~. ?3 L: B0 r - FT(0) = 0 '设置选择集过滤器,限制从屏幕上选择的对象仅限于CAD表格,而不是其它对象4 j+ ?0 c/ J2 r4 p: }( j8 i
- FD(0) = "ACAD_TABLE"% m7 ]" x* a8 y# p
- With ThisDrawing
: P5 x& f2 f* ?) {# S - Set SS = .SelectionSets.Add("SS") '新建选择集
/ U/ o; F4 b5 p- u% |; O% m - On Error Resume Next
3 l3 L) S6 k0 r6 x9 D' ` - SS.SelectOnScreen FT, FD '从屏幕上选取CAD表格对象/ I' T3 f9 V/ t# E, M# H
- If Err Then Exit Sub; r- j7 r- b) }$ ]1 x; O0 L) V
- If SS.Count > 0 Then '如果有效选取了表格对象9 ^) y( t! n. L
- Set T = SS.Item(SS.Count - 1)'如果选择了多个CAD表格对象,只对最后一个进行处理, W5 V0 ^9 p$ ]! y
-
1 v) p4 }7 n, T8 P - Dim E As New Excel.Application '声明并启动一个EXCEL进程
3 @9 U0 Q+ h5 J: w - Dim B As Workbook '声明一个EXCEL工作簿变量" E3 r, g; Q. N5 m5 O
- Dim I As Long, J As Long '循环变量
4 F4 y, m6 ?. c" X3 ^ g. d! b3 y+ _ - ; e: a9 G: P7 U4 }, k5 ]- c: D' s
- E.Visible = True '新启动的EXCEL进程对用户是可见的
2 j O* P8 x$ M- x- E' I - Set B = E.Workbooks.Add '新建EXCEL工作簿
, I. S) r8 ~, Z( \: [2 h - For I = 0 To T.Rows - 1 '从CAD表格中逐单元格向EXCEL中复制
( t2 {" S8 C' \) h" h - For J = 0 To T.Columns - 13 t" M3 _5 d& w8 P
- B.Sheets(1).Cells(I + 1, J + 1).Value = T.GetText(I, J)! m9 W% S$ }: Q8 d/ c2 a- A' {
- Next
- D( P0 X& R ^9 t8 d - Next$ g! K8 m& X) N& d8 M5 p J% ~: y
- End If6 [' J2 Y6 q$ g' r6 u( f& k
- SS.Delete '删除用过的选择集/ z) R) i: u4 F5 n/ P* A
- End With8 A* s3 E4 B+ D. U' s
- End Sub! P! }7 _' p% }7 [8 x
复制代码 |
|