Excel VBA:批量对文件任意重命名(移动)
一、普通VBA代码的问题
如果用Dir()方法和MkDir方法,一般只能在已经存在的文件夹内创建一层新的子文件夹。无法命名任意多层文件夹。
也就是说,如现在如果已经存在文件夹【E:\ABC】,才能创建【E:\ABC\DEF】;否则是不能直接创建后面的新文件夹的。
二、创建任意文件夹的思路
1.创建FSO对象【文件系统对象】
用FSO对象主要是因为它处理文件与文件夹更专业,里面有各种函数和方法,不需要自己通过Mkdir/Dir/Split等函数和方法慢慢构造路径;同时避免很多出错的可能。
2.判断盘符是否存在
比如给定需要创建的文件夹是
路径 = "E:\A\b/C\d/ef\g/h\i\j\k/m/n"
利用【FSO.DriveExists()】函数判断给定的路径对应的盘符【E:\】是否存在,如果盘符不存在,是不可能创建出给定文件夹的,此时直接即出程序;否则,继续向下执行程序。
3.循环逐层判断文件夹
(1)利用【FSO.FolderExists()】函数,从给定的完整路径开始,逐级向上判断第级文件夹路径是否存在。
判断流程:
第1次,判断【E:\A\b/C\d/ef\g/h\i\j\k/m/n】是否存在
第2次,判断【E:\A\b/C\d/ef\g/h\i\j\k/m】是否存在
第3次,判断【E:\A\b/C\d/ef\g/h\i\j\k】是否存在
……
第n次,判断【E:\A】是否存在
A.如果不存在,则装入一个动态数组arr中;
B.如果该级文件夹路径存在,则往上肯定都存在了,就不再向上一级父文件夹进行判断。
(2)倒着循环arr
即从上面记录文件夹路径的数组arr的最大下标开始循环,直到最小下标结束,步长-1。
因为我们创建文件夹,是要按下面箭头所示的顺序由下向上逐级来操作的:

(3)创建文件夹
用【FSO.CreateFolder】方法逐级创建文件夹
(4)完成
循环arr完成,多层文件夹创建完成
三、创建任意多层文件夹示例代码
四、批量对文件任意重命名
在上述创建多层文件夹的方法的基础上,咱们可以对已经存在的文件任意移动或重命名
操作方法:
1.整理新旧文件名
在Excel的【Sheet1】表格和A列写原文件完整路径,B列写新文件名的完整路径
注:第一行是标题不会算在内
2.执行
点击【Sheet1】表格里的【执 行】按钮,即可完成。

或者打开文件,在代码主程序处点击运行也一样。
3.示例代码
五、文件
链接: https://pan.baidu.com/s/1zKAlHsCTd8fU33cxMVgtGw?pwd=uhsi 提取码: uhsi 复制这段内容后打开百度网盘手机App,操作更方便哦
打开文件直接操作即可。