除非注明,文章均为 战战如疯 原创,转载请保留链接: http://www./cat4/388.html,VBA交流群273624828。
这节来看个VBA批量修改多个文件夹中jpg图片的例子。题目要求是这样的,现在有1000个文件夹,每个文件夹中有数量不等的随机命名的jpg格式文件,现在要将每个文件夹中的jpg文件命名为“文件夹1-A”、“文件夹2-B”这种格式。
先来想下思路,首先要能够遍历所有的文件夹,其次要遍历每个文件夹中的所有文件。在制作Excel超链接目录一文中我们介绍过怎样遍历所有的文件夹,这里因为只有一层文件所以遍历起来也很简单。重命名用的是name方法。下面看代码
Sub 批量改名() Dim mypath, arr(), i, j, mydir$, myfile, n Application.ScreenUpdating = False mypath = ThisWorkbook.Path & "\" ReDim arr(1 To 1000) mydir = Dir(mypath, vbDirectory) Do While mydir <> "" If mydir <> "." And mydir <> ".." Then If GetAttr(mypath & mydir) = vbDirectory Then j = j + 1 arr(j) = mydir End If End If mydir = Dir Loop ReDim Preserve arr(1 To j) For i = 1 To j myfile = Dir(mypath & arr(i) & "\*.jpg") n = 0 Do While myfile <> "" n = n + 1 On Error Resume Next Name mypath & arr(i) & "\" & myfile As mypath & arr(i) & "\" & arr(i) & "-" & Split(Cells(1, n).Address, "$")(1) & ".jpg" myfile = Dir Loop Next Application.ScreenUpdating = True End Sub
上述代码先利用Dir方法遍历出所有的文件夹,将其放到一个数组arr中,然后依次访问每个文件夹,对其中的jpg文件进行遍历。重命名用的是name方法,name 原文件 as 新文件,这里原文件和新文件用的都是完整路径。
这里还有一个细节,就是要按英文字母顺序依次命名,那怎样取这个英文字母呢,我这里利用了单元格的地址,我们知道地址都是$A$1,$B$1这里形式,里面的字母排序就可以被我们拿出来用,这里利用了Split函数将字母取出来。
本节示例文件下载:http://pan.baidu.com/s/1ntE6r8H。
|