删除当前未在VBA中保存的文件夹中的所有文件

时间:2016-08-08 16:30:51

标签: vba excel-vba loops delete-file excel

我正在尝试删除今天尚未保存的文件夹中的所有文件。

该文件夹只包含 .csv .txt 文件类型,因此我创建的代码只删除这些类型。有没有办法删除任何文件类型?

这是我现在的代码:

Sub delete()

Dim MyFolder As String
Dim MyFileTxt As String
Dim MyFileCSV As String

MyFolder = "C:\Users\Desktop\pdf_converter_test"
MyFileTxt = Dir(MyFolder & "\*.txt")
MyFileCSV = Dir(MyFolder & "\*.csv")

Do While FileDateTime(MyFolder & MyFileTxt) <> Date
     On Error Resume Next
       If FileDateTime(MyFolder & MyFileTxt) <> Date Then
           Kill MyFolder & MyFileTxt
           MyFileTxt = Dir
       End If
Loop

Do While FileDateTime(MyFolder & MyCSV) <> Date
     On Error Resume Next
       If FileDateTime(MyFolder & MyFileCSV) <> Date Then
           Kill MyFolder & MyFileCSV
           MyFileCSV = Dir
       End If
    Loop

End Sub

循环似乎永远存在,因此Do While条件存在问题。但它也不会删除我想要的文件。

非常感谢任何帮助。谢谢。

1 个答案:

答案 0 :(得分:5)

实现您想要的最简单的方法。这将删除今天尚未保存的任何文件类型,即修改日期与今天不同。

Sub Sample()
    Dim sPath As String
    Dim objFSO As Object, objFolder As Object    
    Dim objfile As Object


    '~~> Change as needed
    sPath = "C:\Users\Siddharth Rout\Desktop\Test\"

    Set objFSO = CreateObject("Scripting.FileSystemObject")
    Set objFolder = objFSO.GetFolder(sPath)

    For Each objFile In objFolder.Files
        If Format(objFile.DateLastModified, "DD-MM-YYYY") <> Format(Date, "DD-MM-YYYY") Then
            Kill objFile
        End If
    Next objFile
End Sub