|
|
发表于 2009-11-14 08:21:05
|
显示全部楼层
来自: 中国
使用下面代码前,必须先在VBAIDE中引用EXCEL类库
# ]( h/ n: H3 b: n6 T. z- Sub TableToExcel()
. T- c* T5 w) s4 C - Dim SS As AcadSelectionSet '声明一个选择集对象变量,用于从屏幕上选择CAD表格对象
+ K) Y, Y* E) P" Y - Dim FT(0) As Integer, FD(0) As Variant '声明选择集过滤器,用于限制从屏幕上选择的对象类型# U/ r6 G: j& r$ V: b
- Dim T As AcadTable '声明一个CAD表格变量# O, `+ Z0 `9 U9 H! _
- " P9 ~4 V8 J; ?% g" C3 {
- FT(0) = 0 '设置选择集过滤器,限制从屏幕上选择的对象仅限于CAD表格,而不是其它对象( S3 X+ N, `( t7 _ q
- FD(0) = "ACAD_TABLE"; I, [7 u6 `0 u2 v
- With ThisDrawing( h- f$ }* j/ b# s" o
- Set SS = .SelectionSets.Add("SS") '新建选择集
. i& A5 q$ B* A; G/ h. Q& I - On Error Resume Next9 N* P9 R4 T# _6 U
- SS.SelectOnScreen FT, FD '从屏幕上选取CAD表格对象( g4 f; D: v3 {6 b5 \; f6 A, B* ?
- If Err Then Exit Sub' B9 v. `& o; ? {/ P. p
- If SS.Count > 0 Then '如果有效选取了表格对象3 U/ a! q& D8 m# j# ^
- Set T = SS.Item(SS.Count - 1)'如果选择了多个CAD表格对象,只对最后一个进行处理
8 l0 Z# @6 p! p1 N -
7 P& m. w; d1 J0 Q - Dim E As New Excel.Application '声明并启动一个EXCEL进程, B/ b5 M! o$ h; Y% c
- Dim B As Workbook '声明一个EXCEL工作簿变量
. y, }) Y$ e% z3 `4 Y4 P# h6 i - Dim I As Long, J As Long '循环变量, f5 H0 \ J1 P6 D% [" _5 S
-
2 M4 r! _' x2 n8 q4 K' a - E.Visible = True '新启动的EXCEL进程对用户是可见的' |5 B& F+ {. s2 B. q
- Set B = E.Workbooks.Add '新建EXCEL工作簿# K6 c2 h. X: @( q L- E
- For I = 0 To T.Rows - 1 '从CAD表格中逐单元格向EXCEL中复制! O- p1 q! s' t3 W% ^: s2 r" y8 Z1 `; j
- For J = 0 To T.Columns - 16 }4 P" J0 Q4 F
- B.Sheets(1).Cells(I + 1, J + 1).Value = T.GetText(I, J); c% O7 V% R$ } \. G' n
- Next0 S1 U0 r# n1 x4 \9 L- |. F
- Next
0 @& w# [0 h7 H- w - End If8 G0 ]; D! j. k0 m
- SS.Delete '删除用过的选择集/ l" U: e# S, R# m# j" Q
- End With
4 n G! P1 f' W3 l+ m - End Sub% l" w% Z0 x; O2 }8 ?7 `
复制代码 |
|