Ms access MS Access VBA删除空文件夹
我有一个需要通过Access程序定期删除的文件夹路径列表。我只想在所有子文件夹都为空时删除它们。如何通过VBA删除空文件夹?这是我的代码,但它没有任何作用 我称之为:Ms access MS Access VBA删除空文件夹,ms-access,vba,Ms Access,Vba,我有一个需要通过Access程序定期删除的文件夹路径列表。我只想在所有子文件夹都为空时删除它们。如何通过VBA删除空文件夹?这是我的代码,但它没有任何作用 我称之为: PrepareDirModified ("C:\Users\xxxxxxx\Desktop\New folder\TEST123\test456") 以下是主要的子项: Public Sub PrepareDirModified(dirStr As String) On Error Resume Next If Righ
PrepareDirModified ("C:\Users\xxxxxxx\Desktop\New folder\TEST123\test456")
以下是主要的子项:
Public Sub PrepareDirModified(dirStr As String)
On Error Resume Next
If Right(dirStr, 1) <> "\" Then dirStr = dirStr & "\"
Kill dirStr & "*.*"
RmDir dirStr
MkDir dirStr
On Error GoTo 0
End Sub
Public Sub PrepareDirModified(dirStr作为字符串)
出错时继续下一步
如果正确(dirStr,1)“\”则dirStr=dirStr&“\”
Kill dirStr&“*.*”
RmDir dirStr
MkDir-dirStr
错误转到0
端接头
我使用FileScript对象删除了一系列文件,然后删除了文件夹,比如
Dim FSO As Object
Set FSO = CreateObject("scripting.filesystemobject")
On Error GoTo FileError
'Delete files
FSO.deletefile mypath & "\*.*", True
'Delete subfolders
FSO.deletefolder mypath & "\*.*", True
下面的内容是从罗恩的优秀网站上抄来的
您可以使用同一对象检查文件夹是否存在
Dim FSO As Object
Dim FolderPath As String
Set FSO = CreateObject("scripting.filesystemobject")
FolderPath = "C:\Users\Ron\test"
If Right(FolderPath, 1) <> "\" Then
FolderPath = FolderPath & "\"
End If
If FSO.FolderExists(FolderPath) = False Then
MsgBox "Folder doesn't exist"
Else
MsgBox "Folder exist"
End If
为了遍历文件夹,我将使用这个脚本
Public Sub DeleteEmptyFolders(ByVal strFolderPath As String)
Dim fsoSubFolders As Folders
Dim fsoFolder As Folder
Dim fsoSubFolder As Folder
Dim strPaths()
Dim lngFolder As Long
Dim lngSubFolder As Long
DoEvents
Set m_fsoObject = New FileSystemObject
If Not m_fsoObject.FolderExists(strFolderPath) Then Exit Sub
Set fsoFolder = m_fsoObject.GetFolder(strFolderPath)
On Error Resume Next
'Has sub-folders
If fsoFolder.SubFolders.Count > 0 Then
lngFolder = 1
ReDim strPaths(1 To fsoFolder.SubFolders.Count)
'Get each sub-folders path and add to an array
For Each fsoSubFolder In fsoFolder.SubFolders
strPaths(lngFolder) = fsoSubFolder.Path
lngFolder = lngFolder + 1
Next fsoSubFolder
lngSubFolder = 1
'Recursively call the function for each sub-folder
Do While lngSubFolder < lngFolder
Call DeleteEmptyFolders(strPaths(lngSubFolder))
lngSubFolder = lngSubFolder + 1
Loop
End If
'No sub-folders or files
If fsoFolder.Files.Count = 0 And fsoFolder.SubFolders.Count = 0 Then
fsoFolder.Delete
End If
End Sub
Public子DeleteEmptyFolders(ByVal strFolderPath作为字符串)
将fsoSubFolders作为文件夹进行调整
Dim fsoFolder As文件夹
将fsoSubFolder设置为文件夹
Dim strPaths()
暗长
将lngSubFolder变暗为长
多芬特
设置m_fsoObject=新文件系统对象
如果m_fsoObject.FolderExists(strFolderPath)不是m_fsoObject.FolderExists,则退出Sub
Set fsoFolder=m_fsoObject.GetFolder(strFolderPath)
出错时继续下一步
'具有子文件夹
如果fsoFolder.SubFolders.Count>0,则
lngFolder=1
重拨strPaths(1到fsoFolder.SubFolders.Count)
'获取每个子文件夹路径并添加到数组
对于fsoFolder.SubFolders中的每个fsoSubFolder
strPaths(lngFolder)=fsoSubFolder.Path
lngFolder=lngFolder+1
下一个fsoSubFolder
lngSubFolder=1
'递归调用每个子文件夹的函数
在lngSubFolder
从此处复制谢谢-我将如何修改以使其仅删除空的子文件夹?请查看编辑-检查。在“文件存在”选项中,如果不存在,则可以安全地删除该文件夹。谢谢。不过,这是在寻找一个特定的文件名。我想传递一个根文件夹,然后删除根文件夹中的所有空子文件夹。请参阅“通过文件夹添加迭代”功能。
Public Sub DeleteEmptyFolders(ByVal strFolderPath As String)
Dim fsoSubFolders As Folders
Dim fsoFolder As Folder
Dim fsoSubFolder As Folder
Dim strPaths()
Dim lngFolder As Long
Dim lngSubFolder As Long
DoEvents
Set m_fsoObject = New FileSystemObject
If Not m_fsoObject.FolderExists(strFolderPath) Then Exit Sub
Set fsoFolder = m_fsoObject.GetFolder(strFolderPath)
On Error Resume Next
'Has sub-folders
If fsoFolder.SubFolders.Count > 0 Then
lngFolder = 1
ReDim strPaths(1 To fsoFolder.SubFolders.Count)
'Get each sub-folders path and add to an array
For Each fsoSubFolder In fsoFolder.SubFolders
strPaths(lngFolder) = fsoSubFolder.Path
lngFolder = lngFolder + 1
Next fsoSubFolder
lngSubFolder = 1
'Recursively call the function for each sub-folder
Do While lngSubFolder < lngFolder
Call DeleteEmptyFolders(strPaths(lngSubFolder))
lngSubFolder = lngSubFolder + 1
Loop
End If
'No sub-folders or files
If fsoFolder.Files.Count = 0 And fsoFolder.SubFolders.Count = 0 Then
fsoFolder.Delete
End If
End Sub