|
马上注册,结识高手,享用更多资源,轻松玩转三维网社区。
您需要 登录 才可以下载或查看,没有帐号?注册
x
本帖最后由 woaishuijia 于 2012-11-13 06:04 编辑
) q0 M1 B' G/ {" M8 A# b- i2 b- ]. U$ O+ J* v! O& x: b2 j5 O
从论坛得到一代码,可实现从AUTOCAD中提取文字至EXCEL,但提取的文字输出到EXCEL后生成的文字顺序与图纸的顺序会有时不同,哪位高手帮看下哪改,可让它按顺序提取' Z* g3 q7 f/ |' M3 d; b
具体代码如下
[/ C1 S9 P+ C% Q4 QSub TQ()
6 y0 M/ D; e6 o+ m& S+ v On Error Resume Next
/ Z& S4 a9 V7 M% o) p% `- P Dim I As Integer
" d! t! z( D& @+ |7 L Dim E As Excel.Application, B As Workbook, S As Worksheet
2 c5 Y3 i2 Z. D4 u$ O7 R' N- v( z9 x Dim SS As AcadSelectionSet, T As Object, FT(3) As Integer, FD(3) As Variant" T' i2 _ S3 j, x6 Y- e {
'下面定义选择集过滤器列表为多行文字或单行文字
3 G3 q! Q9 c1 y% R FT(0) = -4: FD(0) = "<or"
& z J: N% S& z, T) p) e FT(1) = 0: FD(1) = "mtext"
4 y, k9 q P; Y& t5 R FT(2) = 0: FD(2) = "text"6 _+ s1 e7 M/ U* M, _
FT(3) = -4: FD(3) = "or>"
9 {! x- r4 t1 A. s9 z '创建选择集5 i8 s! E# T' Y3 }6 c: @3 S" D$ c
Set SS = ThisDrawing.SelectionSets.Add("SS")& V3 ?4 b% T H {$ \
'在屏幕上选择多行文字或单行文字对象
/ U. M" n. K5 i' y SS.SelectOnScreen FT, FD" Z. Z/ g2 D( N9 |
'如果选择集不为空则运行以下代码8 X% d7 n4 e8 G' O# L4 T2 q `
If SS.Count > 0 Then7 z0 M! Q/ U; _0 d& `# F
'运行EXCEL程序! V7 k. @ J+ B! |
Set E = New Excel.Application
7 T& L/ W) K& T( j '在EXCEL中插入工作薄7 u3 Z) D8 }& B0 U8 u4 w7 g
Set B = E.Workbooks.Add
4 P1 R7 ~3 K5 W7 w '定义工作表. x: W8 U9 g8 H6 `: i/ p
Set S = B.ActiveSheet
. h( ]* }; ? _! J" x' d$ J '显示EXCEL程序
2 x1 ]; r$ H3 O6 x4 R E.Visible = True8 x ]0 Y) d3 H, m' O# W4 r! z
'遍历选择集并处理被选中的单行文字或多行文字对象 b; D" I1 Y8 B5 L" V6 b( z2 ?, x3 ~
For Each T In SS
& @# o- u; D9 r0 @ I = I + 14 `3 V, r% `% z
'把单行文字或多行文字的内容写入表格
; |! ?0 I5 g ^7 O: y D6 T5 Q& U '对于多行文字,如果直接写入则字符串中很可能包含转义符,使用者可根据需要对字符串运算处理后再写入表格
; L8 v$ D, P2 a' R9 k" X) p S.Cells(I, 1).Value = T.TextString
; [0 l; U0 f1 n6 S" s7 \ Next
. M1 [1 h7 O- A ~1 G6 L I) L End If& r0 b$ g* b7 X6 \$ u I
SS.Delete '删除用过的选择集
6 N9 ^7 U; j- K/ S9 VEnd Sub |
|