如何编写VBA代码来重命名根文件夹下的所有文件夹?

我对VBA很陌生,一直在为一些工作代码搞乱。 从本质上讲,我有一个文件夹,其中包含1000多个具有不同名称的文件夹 – 我需要重命名每个文件夹。 我有一个与原始文件path,旧文件夹名称和所需的文件夹名称设置的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 

如何获取它,以便此代码重命名父文件夹中的所有文件夹? 任何帮助将非常感激! 谢谢。

有两种方法可以解决这个问题。 第一个(也慢得多)是用旧名称打开每个文件,保存为新名称,然后移动到下一个。

我会推荐脚本风格的方法,使用文件系统对象,你可以在一个循环内移动文件(重命名)。

假定新旧文件名与父文件夹有相对path:

 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