QQ登录

只需一步,快速开始

登录 | 注册 | 找回密码

三维网

 找回密码
 注册

QQ登录

只需一步,快速开始

展开

通知     

全站
10天前
查看: 3277|回复: 4
收起左侧

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

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

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

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

x
如何利VBA遍历指定目录及其所有子目录?6 M* [( ]1 Z% Q. S( Q* C+ J5 s( E+ N
1 ^0 m+ O/ a4 l" c
现在有一批图纸需要将其中的指定字符串替换为另一指定字符串,手工修改太慢了,想借助于工具- K0 ~* K) {6 k* c( S/ l

' d4 p- ~) v* q: ~& l请高手提供帮助,谢谢
发表于 2010-5-20 11:17:16 | 显示全部楼层 来自: 中国天津

  1. 5 [2 i! [4 n5 K7 G; N
  2.     Dim objFileSystem As Object, objFolder As Object, objSubFolders As Object, objFiles As Object5 q+ J! l* [5 Y' C8 ^6 H- O2 R
  3.     Set objFileSystem = CreateObject("Scripting.FileSystemObject")'文件系统对象9 k0 z, D1 g5 z' H% Z, e( l3 G
  4.     Set objFolder = objFileSystem.GetFolder(指定目录的路径字符串)'指定的目录对象9 \, X/ _+ ^9 |# k- _; e/ {
  5.     Set objSubFolders = objFolder.SubFolders'该目录对象的子目录集合对象
    9 W0 Y9 u4 Q! |& F* f
  6.     Set objFiles = objFolder.Files'该目录对象的文件集合对象' w6 O8 p1 @  I, p) e
复制代码
9 V& @" a5 s# j' G9 w* ^% z; l
通过上面的代码既可以查找子目录对象,也可以查找文件对象.
, o5 M, ^) L0 ^4 Z8 m查找文件对象还可以用Dir函数,似乎比使用文件集合对象更方便.
 楼主| 发表于 2010-5-20 12:28:36 | 显示全部楼层 来自: 中国浙江杭州
本帖最后由 157787698 于 2010-5-20 12:30 编辑 ) t- x& F$ M+ k! h# h+ H) z) H2 @9 y) |) h1 p
" o0 `6 a; T: U8 ^( ^8 C
感谢斑竹回复,下面我用DIR实现了要求的功能:9 p0 D5 T5 b0 E$ {( E/ N

  A. I! k) l; t
3 y0 ~& w, V$ uDim Files() As String '文件路径0 I) R5 \& Q3 A9 t" Q/ f9 e
Dim Folder() As String '文件夹路径; U- `% O5 n3 F
Dim a, b, c As Long
- ~: T: ?" W& S& e2 |Dim sPath As String7 u6 ]0 K) v4 ^: {+ u* {. M8 h

& }$ g5 v. W# ~* V- IsPath = Dir(filePath & FileType) '查找第一个文件0 X' q- O5 V) ?: x  m
$ {1 |5 ]1 }5 W& s, D, n# }7 N1 w
Do While Len(sPath) '循环到没有文件为止
. \' h0 Y/ \4 x* w   a = a + 1
+ d0 d& x6 T  {5 F1 M. F   ReDim Preserve Files(1 To a)6 D- g. f( d) N4 O0 Z' v
   Files(a) = filePath & sPath '将文件目录和文件名组合,并存放到数组中
- u* o' e3 v0 ?% N   ListBox1.AddItem Files(a) '加入list控件中
" a, t# t  M, W! D, B# z   sPath = Dir '查找下一个文件& d( N3 |) v) m3 O! y% ^
   DoEvents '让出控制权2 ]3 h+ _, C( |
Loop6 {% ?) p, {2 h+ N% b- Y

+ M* Z9 H$ Y& P+ K3 usPath = Dir(filePath, vbDirectory)  '查找第一个文件夹  ^' a4 p. p: _5 j2 G+ L6 v
! B8 d1 g( F3 l+ A
Do While Len(sPath) '循环到没有文件夹为止
& d1 ?9 A( n3 f4 a- S   If Left(sPath, 1) <> "." Then '为了防止重复查找' w: i3 Q, Q9 ~4 T6 F, J
   If GetAttr(filePath & sPath) And vbDirectory Then  '如果是文件夹则。。。。。。0 W; j& q1 l& S. K
      b = b + 1
( z8 u* d+ O- O. V      ReDim Preserve Folder(1 To b)
6 x( P7 j. D; z# \4 T' y* f: {      Folder(b) = filePath & sPath & "\" '将目录和文件夹名称组合形成新的目录,并存放到数组中+ {) t5 S* l, S6 H2 P0 l" E- Q
   End If" y, H% a  ~2 j4 k, G+ o
   End If8 x  i& S/ _9 ]! }7 l
sPath = Dir '查找下一个文件夹
+ N: w5 r3 U. z' n2 k2 X5 ~. y" sDoEvents '让出控制权
  l. F) O) j6 E( P& S* P/ CLoop$ w% f* P, }* q+ _

. f8 }6 z0 s7 g/ [, ^For c = 1 To b '使用递归方法,遍历所有目录2 Q" ^  U, S" Y* H
   SearchFiles Folder(c), FileType
% D4 L/ Q' z, C0 N% R0 _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 )

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