清空文件夹中的所有文件

9
我有以下代码以尝试搜索我的下载文件夹中的所有文件,然后删除它们,但是它返回了一个基于kill函数缺少足够参数的错误消息,你有什么想法?
Sub Kill ()

Dim aFile As String
aFile = "C:\Test\Test\Downloads\*.*"
If Len(Dir$(aFile)) > 0 Then
    Kill aFile
End If

End Sub

感谢您,
3个回答

12

更简单的方法:

Sub Del()
  Kill "C:\FolderName\*.*"
End Sub


2
虽然这段代码片段可能解决了问题,但包括解释有助于提高您的回答质量。请记住,您正在为未来的读者回答问题,而这些人可能不知道您提出代码建议的原因。 - Stefan Crain
1
如果您使用此代码且文件夹为空,则会生成错误:“执行错误:53 / 文件未找到”。因此,它确实很简单,但不可靠100%。我认为添加类似“On Error Resume Next”之类的内容并不是一个好主意... - DataSmarter
真的,所以最好像@Ashok的答案那样做。 - Delmar Silva
当一个文件被应用程序使用时,你会收到“执行错误:70 / 权限被拒绝”的提示。我更喜欢像@John-Alexiou一样使用FileSystemObject。 - klingu

7
在VBA环境中添加对“Microsoft Scripting Runtime”的引用

ref

scr

在一个 模块 中声明以下行
Global fso As New FileSystemObject

现在您可以使用所有美观和现代的I/O函数。例如:
Public Sub TDELFOL()    
    Dim path As String, f As File
    path = fso.GetSpecialFolder(TemporaryFolder)
    path = fso.BuildPath(path, "MyTempFolder")
    If fso.FolderExists(path) Then
        For Each f In fso.GetFolder(path).Files
            f.Delete Force = True
        Next
        fso.DeleteFolder path, Force = True
    End If
End Sub

我已经找到了我的问题所在,我正在尝试删除所有自动保存到我的计算机C:下载文件夹中的文件,以便它们不在该位置内的文件夹中,而是直接进入用户,然后下载。有什么办法可以通过VBA清除所有下载内容吗? - Brentford123
C:\Downloads 还是 C:\Users\<userid>\Downloads?请在问题中编辑具体说明您的意图,并清楚表达。最好提供一个示例,说明修改前后的情况。 - John Alexiou
抱歉,我没有表达清楚。我使用了你上面提供的代码,但是因为 C:\ Downloads 不是一个文件夹,所以它不会删除任何文件。如果我在该位置放置一个文件夹,它将删除该文件夹,但我想清空下载文件夹中的所有文件。这有意义吗?谢谢。 - Brentford123
我已经编辑了答案,展示了首先删除文件夹中的所有文件,然后再删除文件夹本身(如果需要)。我希望你能根据自己的需求进行调整。 - John Alexiou

6

不应将宏命名为内置函数。只需使用相同的编码更改宏即可解决问题...

Sub Kill1 ()

Dim aFile As String
aFile = "C:\Test\Test\Downloads\*.*"
If Len(Dir$(aFile)) > 0 Then
    Kill aFile
End If

End Sub

你不应该** - Ramesh Bhoopathy Raju
请编辑您的更正问题,而不是将其作为评论添加。此外,请将您的代码格式化为代码。 - Dragonthoughts

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接