我正在尝试建立一个宏,该宏将在/ C:Users /“其用户名” / Downloads文件夹中进行搜索,以删除所有具有相同保存名称但文件名末尾具有不同编号的文件。
我能够毫无问题地删除宏,我的问题是如何使这个“循环”删除该文件夹中具有相同名称的每个文件,直到没有剩余的文件了?
(我对VBA /宏构建非常陌生,并且已经围绕在线研究和以前的宏进行了构建)
这是我目前拥有的:
Sub killxls()
' killxls Macro
'
' Macro used to delete all "Dock_Activity_*.xls" files
' in "C:\Users\("username")\Downloads\"
'
' Keyboard Shortcut: Ctrl+t
Dim Filename, Pathname As String
Dim Killfile As String
Dim UserName As String
UserName = Environ("username")
Pathname = "C:\Users\" & Environ$("username") & "\Downloads\"
Filename = Dir(Pathname & "Dock_Activity_*.xls")
Killfile = "C:\Users\" & Environ$("username") & "\Downloads\" & "Dock_Activity_*.xls"
Do While Killfile <> ""
KillProperly "Pathname & Killfile"
Killfile = Dir$(Pathname & "Dock_Activity_*.xls")
Loop
End Sub
Public Sub KillProperly(Killfile As String)
If Len(Dir$(Killfile)) > 0 Then
SetAttr Killfile, vbNormal
Kill Killfile
End If
End Sub
提前感谢您的帮助!
答案 0 :(得分:0)
在第一次使用通配符调用Dir
命令之后,随后每次不带参数的调用将为您提供下一个文件。
如果您是从Dir
命令中获取列表,则无需像检查KillProperly
例程那样先检查列表是否存在,这样就可以了。
根据我上面的评论,类似这样的方法应该起作用:
Sub killxls()
' killxls Macro
'
' Macro used to delete all "Dock_Activity_*.xls" files
' in "C:\Users\("username")\Downloads\"
'
' Keyboard Shortcut: Ctrl+t
Dim Pathname As String
Dim Killfile As String
Dim FileCount As Long
Pathname = "C:\Users\" & Environ("username") & "\Downloads\"
KillFile = Dir(Pathname & "Dock_Activity_*.xls")
Do While Killfile <> ""
SetAttr Pathname & Killfile, vbNormal
Kill Pathname & Killfile
FileCount = FileCount + 1
Killfile = Dir()
Loop
MsgBox FileCount & " file(s) have been deleted."
End Sub
我还在末尾添加了一个可选的确认,因为这是一种很好的形式,可以让用户知道何时完成以及完成了多少个动作。如果不需要,可以将其删除。