在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
发表评论