|
|
发表于 2009-11-14 08:21:05
|
显示全部楼层
来自: 中国
使用下面代码前,必须先在VBAIDE中引用EXCEL类库
) d/ {' @( p1 ], w- Sub TableToExcel()
# |$ a3 M' t/ ?" T - Dim SS As AcadSelectionSet '声明一个选择集对象变量,用于从屏幕上选择CAD表格对象( P3 Y1 k8 \( [
- Dim FT(0) As Integer, FD(0) As Variant '声明选择集过滤器,用于限制从屏幕上选择的对象类型% s" T6 V: A) M* w
- Dim T As AcadTable '声明一个CAD表格变量7 ~! ~, {, C& W Y" ?4 s, V- @+ j& }
- , o9 f l' ~* c2 Q
- FT(0) = 0 '设置选择集过滤器,限制从屏幕上选择的对象仅限于CAD表格,而不是其它对象
X8 Z7 B- d7 x; m/ \8 }; X - FD(0) = "ACAD_TABLE"
3 e- s' [+ }' |2 ~" _ - With ThisDrawing
" j/ B3 b' i9 W4 g" w. A- y4 @9 M - Set SS = .SelectionSets.Add("SS") '新建选择集
K! J5 Y% h5 f2 X7 q - On Error Resume Next
4 H, k( q/ L5 P3 G( i - SS.SelectOnScreen FT, FD '从屏幕上选取CAD表格对象, d2 u# @: a4 X1 | V' l) _
- If Err Then Exit Sub
! O _/ S) U( l5 S" u3 y& k. f, Y - If SS.Count > 0 Then '如果有效选取了表格对象8 e) `- R# x0 Z+ u
- Set T = SS.Item(SS.Count - 1)'如果选择了多个CAD表格对象,只对最后一个进行处理( P" U! z5 ?# r" W
-
2 N" ~. A/ }0 s# b' N; N9 p$ N& \* P - Dim E As New Excel.Application '声明并启动一个EXCEL进程
& ~% Q/ l0 `( x- S - Dim B As Workbook '声明一个EXCEL工作簿变量
" Q6 ?* J( s+ d3 T) A - Dim I As Long, J As Long '循环变量' L4 b1 N8 L+ V4 U/ Y6 G0 J9 x
-
# U1 ^0 C+ T9 v7 J- Q - E.Visible = True '新启动的EXCEL进程对用户是可见的
) N* E3 g5 J4 V( N) b1 ` Y - Set B = E.Workbooks.Add '新建EXCEL工作簿3 P4 E- p! U% b' P$ F
- For I = 0 To T.Rows - 1 '从CAD表格中逐单元格向EXCEL中复制
& ?" I" v% r/ P$ j8 K - For J = 0 To T.Columns - 1
; q K1 K* |- p! L6 D N5 X+ u - B.Sheets(1).Cells(I + 1, J + 1).Value = T.GetText(I, J)9 k% F4 _# n& }/ m/ s
- Next2 |! W0 _, L8 C+ E# C
- Next
4 Q# L9 L! ?; N/ m6 p" ~ - End If% e9 f2 a9 P3 v9 e8 I
- SS.Delete '删除用过的选择集( P: _' H+ F N1 ~' y
- End With" e1 m6 ]$ c/ {* f( z
- End Sub. M. ?/ p0 k- p, c5 Q8 b- x) z
复制代码 |
|