如何解决创建子文件夹并将文件移动到新的子文件夹
创建子文件夹并将文件移动到新的子文件夹
我正在尝试将 Loop Through All Folders and All its Subfolders 中标记为已解决的代码修改为:
- 在一系列子文件夹中创建一个 2020 子文件夹
- 将现有子文件夹中的所有文件移动到新的 2020 子文件夹
但是代码给出了 Path not found
错误。 MoveFile
也给出了 Path not found
错误。
有人可以指出代码中的错误吗?
Sub Create_subfolders_move_files()
Dim Fso As Object,objFolder As Object,objSubFolder As Object
Dim FromPath As String
Dim FileInFolder As Object
FromPath = "C:\Users\xyz\"
Set Fso = CreateObject("Scripting.filesystemobject")
Set objFolder = Fso.GetFolder(FromPath)
For Each objSubFolder In objFolder.subfolders
For Each FileInFolder In objSubFolder.Files
FileInFolder.Move (objSubFolder.path & "\2020\")
Next FileInFolder
Next objSubFolder
End Sub
解决方法
文件夹 "C:\Users\xyz" 不存在,因此您无法使用 Fso.GetFolder
方法引用它(它只能用于现有文件夹)。
首先,您必须创建它,您可以使用方法 Fso.CreateFolder
来创建它。但是,如果要添加嵌套文件夹,则此方法不起作用,即:
- 如果文件夹 "C:\Users" 已经存在,您可以创建文件夹 "C:\Users\xyz"
- 您将无法直接创建文件夹“C:\Users\xyz\abc”。它会抛出同样的错误 - Path not found。为了创建文件夹"C:\Users\xyz\abc",首先你必须创建文件夹"C:\Users\xyz":
Call fso.CreateFolder("C:\Users\xyz")
Call fso.CreateFolder("C:\Users\xyz\abc")
正如您所猜测的,这不是硬编码这样的东西的好习惯,更好的方法是创建一个递归工作的通用函数并创建所有文件夹,无论它需要多少级别。碰巧我已经创建了这样的函数,你可以随意使用它: http://mielk.pl/en/download/code/system/createFolder.php
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。