【问题标题】:VBA Folder RenamingVBA 文件夹重命名
【发布时间】:2018-08-01 06:40:27
【问题描述】:

我希望使用 VBA 重命名一组文件夹。目的是从文件夹名称中删除特殊字符,例如 - : ; /等。这是我目前所拥有的:

Sub File_renaming2()
Dim objFSO As FileSystemObject, myObj As Object, mySource As Object, Folder As Variant
Set mySource = myObj.GetFolder("C:\Users\John.Doe\Desktop\ABC\VBA Test folder")

For Each Folder In mySource.Folder
    Folder.Name.Replace What:="-", Replacement:=" " 'replace - with space
    Folder.Name.Replace What:=":", Replacement:=" " 'replace : with space
    Folder.Name.Replace What:=";", Replacement:=" " 'replace ; with space
    Folder.Name.Replace What:="/", Replacement:=" " 'replace / with space

    Next Folder

End Sub

我是 VBA 的新手,并且将代码从在线类似问题的解决方案中提取出来,但这似乎给了我

运行时错误“91”- 对象变量或未设置块变量。

感谢任何帮助,谢谢!

【问题讨论】:

  • 使用Option Explicit 总是有助于发现问题。此外,仅声明对象变量是不够的:在您实际创建它之前,它仍保持为 Nothing
  • 我不确定,但您可能需要从子文件夹开始到父文件夹。如果你去的时候改了父名,想改子名,就找不到路径了……

标签: vba rename directory


【解决方案1】:

已编辑:用户反馈后

您必须在使用它们之前设置所有对象变量

并且你必须与你为他们选择的名字保持一致......(myObj应该是objFSO

如下代码

Option Explicit

Sub File_renaming2()
    Dim objFSO As FileSystemObject, myObj As Object, mySource As Object, Folder As Variant
    Dim newName As String

    Set objFSO = New FileSystemObject
    Set mySource = objFSO.GetFolder("C:\Users\John.Doe\Desktop\ABC\VBA Test folder")

    For Each Folder In mySource.SubFolders
        newName = Folder.name
        newName = Replace(newName, "-", " ")  'replace - with space
        newName = Replace(newName, ":", " ")  'replace : with space
        newName = Replace(newName, ";", " ")  'replace ; with space
        newName = Replace(newName, "/", " ")  'replace / with space
        If Folder.name <> newName Then Folder.name = newName ' assign new name. the check is to (possibly) ensure you're not processing the same folder twice
    Next Folder
End Sub

因为 FSO 似乎不允许在同一“会话”中更改同一文件夹的名称两次。

【讨论】:

  • 您好,重新访问此代码,我收到错误 58,说明文件已存在:If Folder.name newName Then Folder.name = newName
  • 你用的是什么参考文献?
  • 我使用了“Microsoft Scripting Runtime”
猜你喜欢
  • 1970-01-01
  • 2014-09-09
  • 2016-04-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-05-24
  • 1970-01-01
相关资源
最近更新 更多