在VBA中可以使用Kill语句删除文件,但是不能删除文件夹。
如果要在VBA中删除某个文件夹及其子文件和所有文件,可以使用FileSystemObject.对象的DeleteFolder方法或者Folder对象的Delete方法。
用FileSystemObject.对象的DeleteFolder方法代码如下:
Function GetPath() As String
'声明一个FileDialog对象变量
Dim oFD As FileDialog
' '创建一个选择文件对话框
' Set oFD = Application.FileDialog(msoFileDialogFilePicker)
'创建一个选择文件夹对话框
Set oFD = Application.FileDialog(msoFileDialogFolderPicker)
'声明一个变量用来存储选择的文件名或者文件夹名称
Dim vrtSelectedItem As Variant
With oFD
'允许选择多个文件
.AllowMultiSelect = True
'使用Show方法显示对话框,如果单击了确定按钮则返回-1。
If .Show = -1 Then
'遍历所有选择的文件
For Each vrtSelectedItem In .SelectedItems
'获取所有选择的文件的完整路径,用于各种操作
GetPath = vrtSelectedItem
Next
'如果单击了取消按钮则返回0
Else
End If
End With
'释放对象变量
Set oFD = Nothing
End Function
Sub QQ1722187970()
Set oFso = CreateObject("Scripting.FileSystemObject")
Dim oFolder As Object
Dim sPath As String
sPath = GetPath()
If Len(sPath) Then
'强制删除,参数True表示不管是否只读的文件都删除
oFso.DeleteFolder sPath, True
MsgBox "操作完成!!!"
End If
End Sub
用Folder对象的Delete方法的代码如下:
Function GetPath() As String
'声明一个FileDialog对象变量
Dim oFD As FileDialog
' '创建一个选择文件对话框
' Set oFD = Application.FileDialog(msoFileDialogFilePicker)
'创建一个选择文件夹对话框
Set oFD = Application.FileDialog(msoFileDialogFolderPicker)
'声明一个变量用来存储选择的文件名或者文件夹名称
Dim vrtSelectedItem As Variant
With oFD
'允许选择多个文件
.AllowMultiSelect = True
'使用Show方法显示对话框,如果单击了确定按钮则返回-1。
If .Show = -1 Then
'遍历所有选择的文件
For Each vrtSelectedItem In .SelectedItems
'获取所有选择的文件的完整路径,用于各种操作
GetPath = vrtSelectedItem
Next
'如果单击了取消按钮则返回0
Else
End If
End With
'释放对象变量
Set oFD = Nothing
End Function
Sub QQ1722187970()
Set oFso = CreateObject("Scripting.FileSystemObject")
Dim oFolder As Object
Dim sPath As String
sPath = GetPath()
If Len(sPath) Then
Set oFolder = oFso.getfolder(sPath)
'强制删除,参数True表示不管是否只读的文件都删除
oFolder.Delete (True)
MsgBox "操作完成!!!"
End If
End Sub


发表评论