Rename folders in VBA

I need help writting code in vba access .
The code should search directory for folders named "name" and change those folders name into "names"

Who is Participating?
theGoveConnect With a Mentor Commented:
From your post, it seems that you want to start at a particular folder and then search that folder and all of its sub folders to for any folder named "name" and change the name of that folder to "names", right?

This problem is not so easy because it requires you to iterate across folders at the same time as you are changing the names of those folders.  To do this well, I think you need a recursive call to a procedure that iterates across all the folders in the list and does the renaming, however, you have to be sure to iterate deep before you do any renaming so that you don't rename a folder that still needs to have its sub folders checked.

The following code should do the trick.  You'll need to put this code into a new module in Access.
Dim objFSO As Object

Sub ChangeName()
  Set objFSO = CreateObject("Scripting.FileSystemObject")
  renameFolders "c:\path\to\start\folder"
End Sub

Sub renameFolders(path As String)
  Dim folder As Object
  For Each folder In objFSO.GetFolder(path).SubFolders
     renameFolders folder.path
     If LCase( = "name" Then
        Debug.Print folder.path
        Name folder.path As folder.path & "s"
     End If
End Sub

Open in new window

Change "c:\path\to\start\folder" to the real path where you want the program to begin and then run the procedure named "ChangeName".  It should do the trick.
Jeffrey CoachmanMIS LiasonCommented:
This will work without the need for external libraries:

Dim strOriginalName As String
Dim strNewName As String
    strOriginalName = "C:\Junk"
    strNewName = "C:\JunkNew"
    Name strOriginalName As strNewName

Question has a verified solution.

Are you are experiencing a similar issue? Get a personalized answer when you ask a related question.

Have a better answer? Share it in a comment.

All Courses

From novice to tech pro — start learning today.