杀掉除了一些以外的所有文件

时间:2014-01-03 23:55:04

标签: vba loops delete-file

我正在尝试删除目录中除4个文件之外的所有文件。我知道如何使用下面的代码删除除特定文件以外的所有文件,但我确信它可以改进。是否有一个我没找到的缩短命令?

Sub Kill_Files()
    Dim fname As String
    fname = Dir$(ThisWorkbook.Path & "\*.*")
    Do While Len(fname) > 0
        If Left(fname, 10) <> "AAAAAAAAAA" Then
            If Left(fname, 10) <> "BBBBBBBBBB" Then
                If Left(fname, 10) <> "CCCCCCCCCC" Then
                    If Left(fname, 10) <> "DDDDDDDDDD" Then
                        Kill fname
                    End If
                End If
            End If
        End If
        fname = Dir$
    Loop
End Sub

2 个答案:

答案 0 :(得分:1)

您可以通过以下方式删除嵌套的IF: -

Sub Kill_Files()
    Dim fname As String
    fname = Dir$(ThisWorkbook.Path & "\*.*")
    Do While Len(fname) > 0
        If Not (Left(fname, 10) = "AAAAAAAAAA" _
                Or Left(fname, 10) = "BBBBBBBBBB" _
                Or Left(fname, 10) = "CCCCCCCCCC" _
                Or Left(fname, 10) = "DDDDDDDDDD") Then
            MsgBox fname   '<-- change this back to a Kill to see the code in action
        End If
        fname = Dir$
    Loop
End Sub

答案 1 :(得分:1)

如果您询问如何合并If语句,可以将此Sub重写为:

Sub Kill_Files()
    Dim fname As String
    fname = Dir$(ThisWorkbook.Path & "\*.*")
    Do While Len(fname) > 0
        If Left(fname, 10) <> "AAAAAAAAAA" And Left(fname, 10) <> "BBBBBBBBBB" And Left(fname, 10) <> "CCCCCCCCCC" And Left(fname, 10) <> "DDDDDDDDDD" Then
            Kill fname
        End If
        fname = Dir$
    Loop
End Sub