|
马上注册,结识高手,享用更多资源,轻松玩转三维网社区。
您需要 登录 才可以下载或查看,没有帐号?注册
x
本帖最后由 woaishuijia 于 2012-11-13 06:04 编辑 3 w9 g8 g; n; i% s/ t
- R8 ^4 S9 v( X/ S @
从论坛得到一代码,可实现从AUTOCAD中提取文字至EXCEL,但提取的文字输出到EXCEL后生成的文字顺序与图纸的顺序会有时不同,哪位高手帮看下哪改,可让它按顺序提取
3 H# s- V3 _2 i; F7 A具体代码如下
% \7 _1 ^5 q2 F4 k& o6 b& w" YSub TQ()
9 n' v) Q, }) ~ On Error Resume Next6 u- d$ y( G; Q/ g
Dim I As Integer
' o, T# T. n7 [7 e Dim E As Excel.Application, B As Workbook, S As Worksheet
9 k( f9 I! J. p0 X3 Y" s) i Dim SS As AcadSelectionSet, T As Object, FT(3) As Integer, FD(3) As Variant4 f9 a T3 u: W
'下面定义选择集过滤器列表为多行文字或单行文字/ V5 b0 D1 M# f8 J
FT(0) = -4: FD(0) = "<or"! F9 G6 g- g! K8 m( Y: q$ a$ p. x
FT(1) = 0: FD(1) = "mtext"
: t% G& U. ?4 `, V( Q FT(2) = 0: FD(2) = "text"* R! R* v$ I4 Q# S' _
FT(3) = -4: FD(3) = "or>"
7 g2 q' K8 o; M' ? '创建选择集
" u! T; d( o( t3 U {) [+ W Set SS = ThisDrawing.SelectionSets.Add("SS")5 k+ y4 Q4 v; n* \# W
'在屏幕上选择多行文字或单行文字对象: H9 L7 H0 h- y2 J. X! ^
SS.SelectOnScreen FT, FD# h2 W, [$ i+ |7 v$ L+ K
'如果选择集不为空则运行以下代码% Q8 ~6 }) e# m6 H) [" o7 ^
If SS.Count > 0 Then( q G; L/ D2 e- v) n8 R
'运行EXCEL程序# H9 M9 ~7 \% u
Set E = New Excel.Application
1 W) S0 S5 `9 K: B2 B; W/ ?# [ '在EXCEL中插入工作薄
# r& H4 Q$ `2 y" f" x Set B = E.Workbooks.Add+ ~3 G- |( f8 L! F
'定义工作表
9 V* O4 @/ y# N- i$ [; A( n Set S = B.ActiveSheet9 i6 t: L# e, ]+ [$ e7 i2 o
'显示EXCEL程序
1 \5 I! J' x' @4 R2 a* q8 T4 x& v O E.Visible = True
9 c3 n: o9 }, s& v '遍历选择集并处理被选中的单行文字或多行文字对象' c ]: U$ w2 i9 n' R9 L1 O
For Each T In SS
' D( m/ r. [, ^8 j9 f I = I + 17 p% `* _4 J" ~! {) O
'把单行文字或多行文字的内容写入表格
+ R% W6 D k2 y8 O8 E$ |4 { '对于多行文字,如果直接写入则字符串中很可能包含转义符,使用者可根据需要对字符串运算处理后再写入表格
$ F0 Y' J+ C! F* {$ U S.Cells(I, 1).Value = T.TextString# e } X8 K1 }. a4 @" @
Next4 q k7 Q. L: j- C( O
End If: z2 N6 U# p, t8 L
SS.Delete '删除用过的选择集
5 `% R: S0 Z$ {End Sub |
|