QQ登录

只需一步,快速开始

登录 | 注册 | 找回密码

三维网

 找回密码
 注册

QQ登录

只需一步,快速开始

展开

通知     

查看: 3325|回复: 4
收起左侧

[求助] AUTOCAD如何利VBA遍历指定目录?

[复制链接]
发表于 2010-5-20 09:21:20 | 显示全部楼层 |阅读模式 来自: 中国浙江杭州

马上注册,结识高手,享用更多资源,轻松玩转三维网社区。

您需要 登录 才可以下载或查看,没有帐号?注册

x
如何利VBA遍历指定目录及其所有子目录?' u2 G. L  f1 x+ N
2 I7 [$ ?: |% S# w3 w
现在有一批图纸需要将其中的指定字符串替换为另一指定字符串,手工修改太慢了,想借助于工具& w9 }6 v) M) r" b
4 o$ m4 Z3 H" S9 y9 l5 m
请高手提供帮助,谢谢
发表于 2010-5-20 11:17:16 | 显示全部楼层 来自: 中国天津
  1. 6 O7 x7 z( x4 W2 l3 n8 N8 J
  2.     Dim objFileSystem As Object, objFolder As Object, objSubFolders As Object, objFiles As Object
    3 x: M. Z0 t$ l0 _  J2 Z  E( B
  3.     Set objFileSystem = CreateObject("Scripting.FileSystemObject")'文件系统对象
      V4 c; J9 J% H2 ]0 R6 i+ F
  4.     Set objFolder = objFileSystem.GetFolder(指定目录的路径字符串)'指定的目录对象
    . X" N$ E7 V; D' k
  5.     Set objSubFolders = objFolder.SubFolders'该目录对象的子目录集合对象7 g- j) N7 q* Q0 m, ^
  6.     Set objFiles = objFolder.Files'该目录对象的文件集合对象  b0 L6 ?' ~6 ]9 r( t
复制代码
; Z6 r" y& x. t' @) c5 V& E  Y
通过上面的代码既可以查找子目录对象,也可以查找文件对象.
- C2 r& u2 [9 H" W查找文件对象还可以用Dir函数,似乎比使用文件集合对象更方便.
 楼主| 发表于 2010-5-20 12:28:36 | 显示全部楼层 来自: 中国浙江杭州
本帖最后由 157787698 于 2010-5-20 12:30 编辑   n, @/ Q: o! X5 N2 Y: `+ ?

8 W' s, M9 ^1 Z4 B( L) y感谢斑竹回复,下面我用DIR实现了要求的功能:" V" H7 {4 M  b+ G5 P% [9 P- u

* S8 t) P( Q+ E$ L/ C- U6 \- f; r+ G1 D- L& `& {6 t! u8 a) \$ \
Dim Files() As String '文件路径  s2 h# R# z2 ]
Dim Folder() As String '文件夹路径* j2 ]) N5 c0 x* T% N: J
Dim a, b, c As Long0 e! y) Z1 k/ V3 h2 `
Dim sPath As String$ ~0 H6 d0 t  O- v- Q6 a9 b

, j# R3 ?9 t" {) x- `' s, q9 nsPath = Dir(filePath & FileType) '查找第一个文件4 T9 I( i+ ^! q! ]1 t

/ [  N4 o* b* b7 KDo While Len(sPath) '循环到没有文件为止1 F) U/ T, E9 s  `- q
   a = a + 1
* C# [; r' n4 z* l# \# b. L; T9 T   ReDim Preserve Files(1 To a)
$ N  g/ h5 ]' H   Files(a) = filePath & sPath '将文件目录和文件名组合,并存放到数组中
1 x' k& m& y1 P* ~   ListBox1.AddItem Files(a) '加入list控件中
' X( ?# g" `$ z6 q   sPath = Dir '查找下一个文件9 v3 Q  y" g4 o3 o. U
   DoEvents '让出控制权
4 A* ?0 F  |! k; ?/ D/ z! |Loop0 [3 P9 h! z# R3 N- r2 _' R
/ T9 q  Z; z: k4 t& o
sPath = Dir(filePath, vbDirectory)  '查找第一个文件夹
# x" ]/ g, i# q. v' f+ m4 t
3 Q' z* e- M' f2 xDo While Len(sPath) '循环到没有文件夹为止8 T, N5 U7 }) a' S
   If Left(sPath, 1) <> "." Then '为了防止重复查找
6 A2 S# P- m! k: D: @- V/ ?. R4 F   If GetAttr(filePath & sPath) And vbDirectory Then  '如果是文件夹则。。。。。。
3 t. ?  R5 X! q, e      b = b + 1, t; D' h8 B- y# I0 y6 {* f
      ReDim Preserve Folder(1 To b)
* k) N' d# [# ^. f      Folder(b) = filePath & sPath & "\" '将目录和文件夹名称组合形成新的目录,并存放到数组中
  C6 w. R& }" C8 q  I. A  x( i   End If5 @; v. o& T5 Q! n" ?0 x- Y7 n
   End If' t2 K6 Y& d. ~% j8 C4 O) K2 Q
sPath = Dir '查找下一个文件夹
- y: O  _9 a/ U. I  I* V6 JDoEvents '让出控制权0 ?1 j! t; X, M  ?9 o3 u8 R( T5 f0 {
Loop3 D+ P3 X, l; B0 K
( d1 k! k& \+ p4 T' ?+ F
For c = 1 To b '使用递归方法,遍历所有目录6 f  p7 ~  i7 h- b! L
   SearchFiles Folder(c), FileType" z/ t. w' @3 J) O% W5 q
Next
 楼主| 发表于 2010-5-20 12:31:18 | 显示全部楼层 来自: 中国浙江杭州
但是如何遍历图纸中的所有Text和Mtext,然后将指定的文字替换为另外的文字?
发表于 2010-5-20 17:37:46 | 显示全部楼层 来自: 中国北京
这就有点麻烦了.CAD的Mtext对象包含格式符,用VBA编程,就必须去除这些格式符得到"纯净"的字符串然后才能替换.
发表回复
您需要登录后才可以回帖 登录 | 注册

本版积分规则


Licensed Copyright © 2016-2020 http://www.3dportal.cn/ All Rights Reserved 京 ICP备13008828号

小黑屋|手机版|Archiver|三维网 ( 京ICP备2023026364号-1 )

快速回复 返回顶部 返回列表