|
|
发表于 2009-11-14 08:21:05
|
显示全部楼层
来自: 中国
使用下面代码前,必须先在VBAIDE中引用EXCEL类库- 7 ~! J% E) ]- ?2 I( p! o( i4 Q- Z
- Sub TableToExcel()
8 _) D1 R% F R/ R. k - Dim SS As AcadSelectionSet '声明一个选择集对象变量,用于从屏幕上选择CAD表格对象% q$ I: J4 w& a
- Dim FT(0) As Integer, FD(0) As Variant '声明选择集过滤器,用于限制从屏幕上选择的对象类型" `3 O, I' s5 U2 R
- Dim T As AcadTable '声明一个CAD表格变量
: D; \0 X1 K' k5 U) h# m - : v! u* e! [: {! s
- FT(0) = 0 '设置选择集过滤器,限制从屏幕上选择的对象仅限于CAD表格,而不是其它对象8 t/ L, C- B% F$ k
- FD(0) = "ACAD_TABLE"
# F( _: u6 G3 z) O1 [1 K - With ThisDrawing
0 e3 e+ O8 H" h- t$ \ - Set SS = .SelectionSets.Add("SS") '新建选择集
$ d1 U, x1 O+ q - On Error Resume Next
0 |6 s6 M6 F5 c7 P8 Y6 c) X: b - SS.SelectOnScreen FT, FD '从屏幕上选取CAD表格对象
, J6 S, t) r2 v, D6 q( g; } - If Err Then Exit Sub
6 g# i; o" a Z0 K$ l; k- d - If SS.Count > 0 Then '如果有效选取了表格对象5 Z7 N' B: J B' N0 W, m
- Set T = SS.Item(SS.Count - 1)'如果选择了多个CAD表格对象,只对最后一个进行处理2 M2 Y; l! h7 ]+ c7 v
- c$ i- P: z" I" r
- Dim E As New Excel.Application '声明并启动一个EXCEL进程
' w1 v8 y! |. a - Dim B As Workbook '声明一个EXCEL工作簿变量
# \1 i7 g) X4 v& \# V# \ - Dim I As Long, J As Long '循环变量
! ]6 Y, k5 i6 ?) G - / e( x. X0 ?* Y5 [- m* C
- E.Visible = True '新启动的EXCEL进程对用户是可见的
( L% X" A! r' {% i - Set B = E.Workbooks.Add '新建EXCEL工作簿) T9 S+ s9 C) x9 F% k1 {: A; L
- For I = 0 To T.Rows - 1 '从CAD表格中逐单元格向EXCEL中复制
/ v. P/ l4 A) G! j" h9 x - For J = 0 To T.Columns - 17 ~" c/ J @! _
- B.Sheets(1).Cells(I + 1, J + 1).Value = T.GetText(I, J)
& H N# R2 a7 u* s* M. r - Next
. E$ ]0 @9 ? O- ] - Next+ W" ~$ ]; f7 _4 e2 K& R
- End If) S! g8 I! Z) g6 t
- SS.Delete '删除用过的选择集0 Q6 v& ]1 I' p1 X
- End With8 I8 y, m M) `+ @: S8 i
- End Sub5 N; U( e6 C Z7 K* B5 i
复制代码 |
|