我对VBA很新,并且一直在搞乱一些工作代码。基本上,我有一个包含1000多个不同名称的文件夹的文件夹 - 我需要重命名每个文件夹。我有一个Excel工作表设置与原始文件路径,旧文件夹名称和所需的文件夹名称。我发现此代码适用于父文件夹,但不适用于其中的文件夹:
Sub rename_folder()
Dim old_name, new_name As String
For i = 2 To Sheets(1).Range("a1").End(xlDown).Row
new_name = Left(Sheets(1).Cells(i, 1).Value, Len(Sheets(1).Cells(i, 1).Value) - Len(Sheets(1).Cells(i, 2).Value))
new_name = new_name & Sheets(1).Cells(i, 3).Value
old_name = Sheets(1).Cells(i, 1).Value
Name old_name As new_name
Next i
End Sub
如何获取此代码以重命名父文件夹中的所有文件夹?任何帮助将非常感激!谢谢。
答案 0 :(得分:1)
有两种方法可以解决这个问题。第一个(速度慢得多)是使用旧名称打开每个文件,另存为新名称,然后移到下一个文件。
我会推荐使用脚本样式方法,使用文件系统对象可以在循环中移动文件(重命名)。
假设旧文件名和新文件名在某个父文件夹中具有相对路径:
Dim fso As New FileSystemObject, ParentFolder as string
ParentFolder = "C:\Users\Me\ThisProject\"
For i = 2 To Sheets(1).Range("a1").End(xlDown).Row
new_name = Left(Sheets(1).Cells(i, 1).Value, Len(Sheets(1).Cells(i, 1).Value) - Len(Sheets(1).Cells(i, 2).Value))
new_name = new_name & Sheets(1).Cells(i, 3).Value
old_name = Sheets(1).Cells(i, 1).Value
'This will move (rename) the old file to the new one
fso.MoveFile (ParentFolder & old_name), (ParentFolder & new_name)
Next i