【问题标题】:VBA delete list of folders in Excel spreadsheetVBA删除Excel电子表格中的文件夹列表
【发布时间】:2016-05-28 18:53:16
【问题描述】:

我正在使用一个名为“All Dup”的应用程序来查找重复文件,通常通过 CRC 校验和进行匹配。运行扫描后,我会留下大约 10000 个重复文件的列表。然后我可以将结果导出为 csv 文件。我想做的是有一个宏来删除列中的所有指定文件夹,即我在列 A 中有所有文件夹。

我知道如何删除单个目录,但非常感谢有关“循环”功能或类似内容的一些帮助。

【问题讨论】:

    标签: excel vba loops dir


    【解决方案1】:

    此循环将从第 2 行沿 A 列向下移动到最后填充的行。首先检查每个单元格是否为非空白单元格,然后检查它是否作为带有Dir function 的文件夹存在。

    With Worksheets("Sheet1")
        For dr = 2 To .Cells(Rows.Count, "A").End(xlUp).Row
            If CBool(Len(.Cells(dr, "A").Value2)) Then
                If CBool(Len(Dir(.Cells(dr, "A").Value2, vbdirectrory))) Then
                    Kill .Cells(dr, "A").Value2 & Chr(92) * Chr(42)
                    RmDir .Cells(dr, "A").Value2 
                End If
            End If
        Next dr
    End With
    

    如果两个测试都通过,则使用 Kill function 删除该文件夹。如果文件夹中包含文件,则应先将其删除。

    【讨论】:

    • 太好了,谢谢。无论目录是否有文件,什么命令会删除目录?
    • 首先,Kill directory & "*.*" '删除文件夹C:\directory\*.*中的所有文件
    • 然后RmDir目录'删除文件夹C:\directory\
    • 谢谢@daniel;我已经接受了他/她的话'我知道如何删除单个目录'的OP。
    • @Jeeped 经过反复试验,我意识到我的 csv 没有在目录末尾导入“\”。该代码正在运行,但是如何删除所有子目录和内容呢?我尝试了变化,但没有运气。 'code' |Sub deletedir() On Error Resume Next With Worksheets("Folders") For Dr = 1 To .Cells(Rows.Count, "A").End(xlUp).Row If CBool​​(Len(.Cells( Dr, "A").Value2)) 然后杀死 .Cells(Dr, "A").Value2 & "." RmDir .Cells(Dr, "A").Value2 & "\" End If Next Dr On Error GoTo 0 End With End Sub
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-09-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多