|
|
发表于 2009-11-14 08:21:05
|
显示全部楼层
来自: 中国
使用下面代码前,必须先在VBAIDE中引用EXCEL类库
/ u( Y$ E- {- a- s- Sub TableToExcel()
: h5 V6 ^: R- u - Dim SS As AcadSelectionSet '声明一个选择集对象变量,用于从屏幕上选择CAD表格对象
3 G2 P5 B1 F$ B0 D - Dim FT(0) As Integer, FD(0) As Variant '声明选择集过滤器,用于限制从屏幕上选择的对象类型
$ {+ B' z, ?8 H$ A% n - Dim T As AcadTable '声明一个CAD表格变量
; m9 h# `7 C. F8 H% f0 a - - r" J, Q! \& }+ j- j1 o: k4 |
- FT(0) = 0 '设置选择集过滤器,限制从屏幕上选择的对象仅限于CAD表格,而不是其它对象
8 H+ T# E; t3 q - FD(0) = "ACAD_TABLE"
. l& X( l% `6 P: `$ Q7 M9 h, C& H: d5 n - With ThisDrawing" m4 T6 c4 p( a- S, z
- Set SS = .SelectionSets.Add("SS") '新建选择集 w$ o$ d( V2 E# x" F! W! t& s
- On Error Resume Next- C: E3 J! w; l. Z
- SS.SelectOnScreen FT, FD '从屏幕上选取CAD表格对象: x m* w/ ~# y' e; _
- If Err Then Exit Sub
* H! [7 F' {: u9 o5 z - If SS.Count > 0 Then '如果有效选取了表格对象
# x+ S( H: u1 [# Q$ g$ D - Set T = SS.Item(SS.Count - 1)'如果选择了多个CAD表格对象,只对最后一个进行处理4 t# U: D6 [& Q
- & v: N/ j6 I! H$ B8 o# q, E2 d7 ]
- Dim E As New Excel.Application '声明并启动一个EXCEL进程
! b% o( `6 L6 _ c4 ~% I: G" d4 Q. b - Dim B As Workbook '声明一个EXCEL工作簿变量* ~$ B' F, w% S! p2 t: u, G
- Dim I As Long, J As Long '循环变量% w6 C& |2 A1 y; ~; H5 ?
- 2 k1 U# d: V9 g) H) K
- E.Visible = True '新启动的EXCEL进程对用户是可见的/ Q, M+ x0 ~( Q9 K' e, |' C0 r5 D4 G
- Set B = E.Workbooks.Add '新建EXCEL工作簿: K' }+ b) Z( F1 }7 L% k
- For I = 0 To T.Rows - 1 '从CAD表格中逐单元格向EXCEL中复制7 Q9 O7 K1 q3 d0 b; M* ]
- For J = 0 To T.Columns - 1
+ d5 t1 ~7 S, l1 H - B.Sheets(1).Cells(I + 1, J + 1).Value = T.GetText(I, J)
! ^9 X* ~9 j' g/ o* S2 S1 ` - Next! C2 L- m+ u' o/ j
- Next0 ^. |5 m& U2 c9 O
- End If( o* ]* ?, t& J6 T2 l- s
- SS.Delete '删除用过的选择集; b7 h1 V ^- K) o4 G B
- End With
3 U S& D/ e# r: ~0 \0 } - End Sub. Y0 l' H9 b* N# k4 y
复制代码 |
|