使用文件夹中的文件名重命名子文件夹文件夹名称 - vba

时间:2015-03-23 09:51:42

标签: vba excel-vba excel-2010 excel

有人可以帮助我使用VBA代码重命名子文件夹,文件名部分如下所示

文件夹:C:\ Test

子文件夹:C:\ Test \ a,C:\ Test \ b,C:\ Test \ a ....继续

它有一些文件内容,我必须匹配一个名称以VDX_000674开头的文件,并获取最后4个字符,然后用它重命名文件夹。

我已尝试过以下代码,但没有任何用处,我们将不胜感激

Sub Rename()
    Call Test_Rename("C:\Users\shanmso\Desktop\VN\Output")
End Sub

Sub Test_Rename(MyPath As String)

    Dim FileSys As FileSystemObject
    Dim objFolder As Folder
    Dim objSubFolder As Folder
    Dim objFile As File
    Dim Riname As String

    Set FileSys = CreateObject("Scripting.FileSystemObject")
    Set objFolder = FileSys.GetFolder(MyPath)

    For Each objFile In objFolder.Files
        If Left(objFile.Name, 15) = "DEX-VH_00000374" Then
            Riname = Mid(objFile.Name, 17, 3)
            Name objFolder As Riname
            Exit For
        End If

    Next objFile

    For Each objSubFolder In objFolder.SubFolders
        Test_Rename MyPath & "\" & objSubFolder.Name
    Next objSubFolder

    Set FileSys = Nothing
    Set objFolder = Nothing
    Set objSubFolder = Nothing
    Set objFile = Nothing

End Sub

1 个答案:

答案 0 :(得分:0)

未经测试。但我认为FreeMan是正确的Name objFolder As Riname应该更像是Call MkDir(MyPath & "\" & Riname)

此外,我认为您不需要第二个For Each循环,因此我删除了它。我猜你以为这实际上是在创建子文件夹,但事实并非如此。更容易重命名第一个文件夹中的每个循环

Sub Test_Rename(MyPath As String)

    Dim FileSys As FileSystemObject
    Dim objFolder As Folder
    Dim objSubFolder As Folder
    Dim objFile As File
    Dim Riname As String

    Set FileSys = CreateObject("Scripting.FileSystemObject")
    Set objFolder = FileSys.GetFolder(MyPath)

    For Each objFile In objFolder.Files
        If Left(objFile.Name, 15) = "DEX-VH_00000374" Then
            Riname = Mid(objFile.Name, 17, 3)

            Call MkDir(MyPath & "\" & Riname)

            Exit For
        End If

    Next objFile

    Set FileSys = Nothing
    Set objFolder = Nothing
    Set objSubFolder = Nothing
    Set objFile = Nothing

End Sub