2016-10-17 112 views
0

我想将某些文件自动组织到特定的文件位置。文件类型都是.xls和.pdf,我只需要它们根据预先确定的列表排序到特定的文件夹中。自动组织文件到文件夹

例如我的名单是:

---------------------------------------- 
| Files  | Directory to move to | 
---------------------------------------- 
| ABC.xls | \Folder1\    | 
| ABC.pdf | \Folder1\    | 
| xyz.xls | \Folder2\    | 
| xyz.pdf | \Folder2\    | 
---------------------------------------- 

所以我有一个文件名和扩展名,它需要移动到文件夹。是否有可能在Excel中有这个列表,然后宏将搜索保存工作簿的相同路径,找到该文件并将其移动到新路径(并创建文件夹,如果它尚未创建)?

+0

是的,这是可能的。 –

+0

您或其他人请帮助我确定有助于实现此目的的代码吗? –

+0

您应该在Youtube上观看完整的[Excel VBA简介](https://www.youtube.com/playlist?list=PLNIs-AWhQzckr8Dgmgb3akx_gFMnpxTN5)系列。这是相关的:[Excel VBA简介第22部分 - 文件和文件夹(FileSystemObjects)](https://www.youtube.com/watch?v=zHJPliWS9FQ&list=PLNIs-AWhQzckr8Dgmgb3akx_gFMnpxTN5&index=25)。如果你不能工作回来并发布一些代码,我很乐意帮你调试它。 –

回答

0

假设原始文件路径(例如“C:\ file1.xlsm”)在列A中并且目标文件路径在列B中(例如“C:\ Data Files \ Newfile1.xlsm”),您可以简单地使用FileCopy将文件复制并重命名为新目标,然后Kill删除原始文件。我认为这比创建临时bat文件要容易得多,然后运行它并删除它。您可能需要使用MkDir来创建新目录,不过您必须在Bat文件中执行类似的操作。

Sub MoveFiles() 
    Dim r As Range 

    With Worksheets("Sheet1") 
     For Each r In .Range("A1", .Range("A" & .Rows.Count).End(xlUp)) 
      FileCopy r.Value, r.Offset(0, 1).Value 
      Kill r.Value 
     Next 
    End With 
End Sub 
0

我已经创建了一个应用程序,Sorter,其以类似的方式,但无需Excel或宏的作品。应用程序Sorter通过将文件按其扩展名分组(即pdf)而分组,但是与docx分离。还有一个附加选项,可以将文档分组在一起,但与视频和音频分开。您可以确定文件的目的地,并且它还具有递归功能,可以检查子文件夹及其子文件夹,并将文件相对于其初始位置进行排序/分组。该应用程序知道一些文件类型,但可以添加更多。尝试一下,看看它是否可以帮助。