从目录中删除不在Excel电子表格中的文件

从目录中删除不在Excel电子表格中的文件,excel,vba,Excel,Vba,我已经有一段时间没有做任何Excel/VBA技巧了。我有一个超过1500个图像文件的目录和一个大约900个文件名的电子表格列表(基本上它是一个网站上使用过的每个图像的目录和一个当前使用的文件名电子表格)。所以我想删除目录中电子表格中找不到的任何文件。我有一个包含各种文件重命名宏的工具包,但我不能想出适合这种情况的方法。先谢谢你 更新: 好的,我找到了一个使用文件重命名宏的全面解决方案 Sub Test() For N = 2 To Cells(Rows.Count, 1).End(xlUp).R

我已经有一段时间没有做任何Excel/VBA技巧了。我有一个超过1500个图像文件的目录和一个大约900个文件名的电子表格列表(基本上它是一个网站上使用过的每个图像的目录和一个当前使用的文件名电子表格)。所以我想删除目录中电子表格中找不到的任何文件。我有一个包含各种文件重命名宏的工具包,但我不能想出适合这种情况的方法。先谢谢你

更新: 好的,我找到了一个使用文件重命名宏的全面解决方案

Sub Test()
For N = 2 To Cells(Rows.Count, 1).End(xlUp).Row
If Dir(Cells(N, 1)) <> "" Then
    Name Cells(N, 1) As Cells(N, 2)
End If
Next N
End Sub
子测试()
对于N=2到单元格(Rows.Count,1)。结束(xlUp)。行
如果Dir(单元格(N,1))”“那么
将单元格(N,1)命名为单元格(N,2)
如果结束
下一个
端接头
我在excel中创建了一个额外的列,并用数字系列填充它,然后运行宏。然后我转到目录,删除了所有未重命名为数字的文件名。然后,我交换了电子表格中的第1列和第2列,并再次运行宏以将它们重命名回原始文件名。我发布了这篇文章,以防有一天其他人发现这个宏有用。但如果有人能更直接地解决我的问题,我将不胜感激

我会的

  • 使用
    Dir()
    将目录中的所有文件列在Excel的第二列中
  • 对每个使用
    ,检查此新文件名列中的每个单元格
  • 在For..Each中,使用Excel的
    MATCH
    功能检查文件是否存在于现有列中
  • 使用
    Kill
    删除文件
  • 完成后删除这两列
我可能会在第三列中存储一个值“DELETE”,然后分别进行删除。(或者,更有用的是,只需将要删除的文件名复制到第三列。)

不过,在您自己尝试之前,我不愿意提供代码


添加了实际上,我可能会在第三列中使用COUNTIF(),并以此作为执行文件删除的基础;但总有很多方法可以采用;)

谢谢,我明白了。我刚刚用我成功使用的宏更新了我的问题。我想在宏中包含一个else子句,该子句将删除剩余的文件名,但无法使其正常工作。我将尝试实现您的算法,并将其保存以备将来使用。