有人可以帮助我使用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
答案 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