创建子文件夹并将文件移动到新的子文件夹
我正在尝试将 Loop Through All Folders and All its Subfolders 中标记为已解决的代码修改为:
但是代码给出了 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
答案 0 :(得分:0)
文件夹 "C:\Users\xyz" 不存在,因此您无法使用 Fso.GetFolder
方法引用它(它只能用于现有文件夹)。< /p>
首先,您必须创建它,您可以使用方法 Fso.CreateFolder
来创建它。但是,如果要添加嵌套文件夹,则此方法不起作用,即:
Call fso.CreateFolder("C:\Users\xyz")
Call fso.CreateFolder("C:\Users\xyz\abc")
正如您所猜测的,这不是硬编码这样的东西的好习惯,更好的方法是创建一个递归工作的通用函数并创建所有文件夹,无论它需要多少级别。碰巧我已经创建了这样的函数,你可以随意使用它: http://mielk.pl/en/download/code/system/createFolder.php