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

时间:2015-06-17 13:17:28

标签: excel vba excel-vba

我对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 

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

1 个答案:

答案 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