|
|
发表于 2009-11-14 08:21:05
|
显示全部楼层
来自: 中国
使用下面代码前,必须先在VBAIDE中引用EXCEL类库- 3 o1 o- w! ?8 F
- Sub TableToExcel()
& x( R$ o6 C, L - Dim SS As AcadSelectionSet '声明一个选择集对象变量,用于从屏幕上选择CAD表格对象
0 d# F3 x) [. B - Dim FT(0) As Integer, FD(0) As Variant '声明选择集过滤器,用于限制从屏幕上选择的对象类型; ?, B/ O$ h4 ?* |6 |. y
- Dim T As AcadTable '声明一个CAD表格变量" }6 k3 t3 N3 j- k' H! W. \
- / S: U5 G p) c2 _ r. E
- FT(0) = 0 '设置选择集过滤器,限制从屏幕上选择的对象仅限于CAD表格,而不是其它对象8 z* r4 Z: ~0 l/ ?
- FD(0) = "ACAD_TABLE"
. P& ^% t5 E! W& A6 L - With ThisDrawing) w' m6 R; K4 t& C
- Set SS = .SelectionSets.Add("SS") '新建选择集" g" D; r# T5 Y; Q8 ^3 f9 E
- On Error Resume Next
( y/ P( z, z; Y - SS.SelectOnScreen FT, FD '从屏幕上选取CAD表格对象9 t d& L3 z$ Z9 \) p( l
- If Err Then Exit Sub
! P1 z+ T+ C5 [9 z: v. L - If SS.Count > 0 Then '如果有效选取了表格对象! }& b1 d! ]" k5 y7 b1 \
- Set T = SS.Item(SS.Count - 1)'如果选择了多个CAD表格对象,只对最后一个进行处理9 t- U9 @4 F8 B3 a6 g+ [ i( W
- : p; B# F1 F8 g5 W }* h* S5 c
- Dim E As New Excel.Application '声明并启动一个EXCEL进程
0 r5 |5 A- X( P, n) b4 J' [/ @ - Dim B As Workbook '声明一个EXCEL工作簿变量+ {: ?( ]! G$ a: j, l0 R2 J
- Dim I As Long, J As Long '循环变量 h1 l& l/ T( o# V+ S3 K, ?* N
-
) o5 z7 B' R: j5 T# c: u$ r - E.Visible = True '新启动的EXCEL进程对用户是可见的% u% `" p# a4 o) z$ d1 H/ V, k
- Set B = E.Workbooks.Add '新建EXCEL工作簿9 E b$ U0 w. V; f! S$ x# Q$ N9 ?
- For I = 0 To T.Rows - 1 '从CAD表格中逐单元格向EXCEL中复制
$ F- X1 \2 K+ i; l3 t( A" K - For J = 0 To T.Columns - 1* Q3 `# Y6 ^% K% Q
- B.Sheets(1).Cells(I + 1, J + 1).Value = T.GetText(I, J)0 j* h4 g. J" S7 k
- Next/ q- C3 C6 z3 w
- Next
" P! t* _* ?3 D: ^1 @$ C v - End If8 y% n" D$ R3 Q% f; ^9 B- \
- SS.Delete '删除用过的选择集/ _0 L" J. h1 ]1 P! K# A' |' R
- End With
) Q! U" P: x3 m |0 D! e/ }, T - End Sub, W! z/ c1 d; e, K) Y. h1 u( {
复制代码 |
|