Access交流中心

北京 | 上海 | 天津 | 重庆 | 广州 | 深圳 | 珠海 | 汕头 | 佛山 | 中山 | 东莞 | 南京 | 苏州 | 无锡 | 常州 | 南通 | 扬州 | 徐州 | 杭州 | 温州 | 宁波 | 台州 | 福州 | 厦门 | 泉州 | 龙岩 | 合肥 | 芜湖 | 成都 | 遂宁 | 长沙 | 株洲 | 湘潭 | 武汉 | 南昌 | 济南 | 青岛 | 烟台 | 潍坊 | 淄博 | 济宁 | 太原 | 郑州 | 石家庄 | 保定 | 唐山 | 西安 | 大连 | 沈阳 | 长春 | 昆明 | 兰州 | 哈尔滨 | 佳木斯 | 南宁 | 桂林 | 海口 | 贵阳 | 西宁 | 乌鲁木齐 | 包头 |

[5分]用VBA判断某个文件夹里的文件夹是否为空,如果为空则删除;否则存在附件不处理。

小英  发表于:2014-06-22 09:47:41  
复制

随着信息化快速发展,对每一项工作要求添加或上传附件越来越明显,然而随着对附件的路径的更名修改,造成许多因路径更改后移动附件到新的文件后遗留下旧路径空文件夹,为此纯手工删除因量很多很费时,特求解此方法,麻烦高手良言献策。

 

Top
zhaoyoulong 发表于:2014-06-24 08:41:22
Private Sub CmdKill_All_Click()
    If MsgBox("您确认要删除这个文件吗? 请慎重,此功能是彻底删除,无法恢复!!", vbOKCancel + vbInformation, "提示!!!!") = vbOK Then
        '如果文件已经删除了 , 再次删除则不会出现错误提示而是退出
        If Dir("D:\魔鬼", vbDirectory) = "" Then
            Exit Sub
        End If
        '文件夹路径及文件名称你可自己更改,一旦删除无法恢复,请用无关紧要的文件测试
        RmDir "D:\魔鬼"
        MsgBox "文件夹已删除了", vbInformation, "提示:"
        If "D:\魔鬼" = Null Then
        End If
    End If
End Sub
参见:http://www.accessoft.com/article-show.asp?id=7620


茼蒿 发表于:2014-06-26 10:05:21
323020649加群可帮助解决问题。

小英 发表于:2014-06-30 13:41:35
zhaoyoulong你的方法没法判断出该路径下的文件夹是否为空(即不存在任何文件),如果该文件夹或所有子文件夹下都不存在附件,则删除该文件夹,否则不删除。

zhaoyoulong 发表于:2014-07-01 09:33:55

给你一个DIR 函数的示例,里面有关于递归的用法


Dir 函数示例

本示例使用 Dir 函数来检查某些文件或目录是否存在。在 Macintosh 计算机上,默认驱动器名称是 “HD” ,并且路径部分由冒号取代反斜线隔开。而且 Microsoft Windows 的通配符在 Mac 中可以作为有效字符出现在文件名中。也可以使用 MacID 函数来指定文件组。


Dim MyFile, MyPath, MyName


' 返回“WIN.INI”(在 Microsoft Windows 中) (如果该文件存在)。
MyFile = Dir("C:\WINDOWS\WIN.ini")


' 返回带指定扩展名的文件名。如果超过一个 *.ini 文件存在,
' 函数将返回按条件第一个找到的文件名。
MyFile = Dir("C:\WINDOWS\*.ini")


' 若第二次调用 Dir 函数,但不带任何参数,则函数将返回同一目录下的下一个 *.ini 文件。
MyFile = Dir


' 返回找到的第一个隐式 *.TXT 文件。
MyFile = Dir("*.TXT", vbHidden)

’注意递归用法:
' 显示 C:\ 目录下的名称。
MyPath = "c:\"    ' 指定路径。
MyName = Dir(MyPath, vbDirectory)    ' 找寻第一项。
Do While MyName <> ""    ' 开始循环。
    ' 跳过当前的目录及上层目录。
    If MyName <> "." And MyName <> ".." Then
        ' 使用位比较来确定 MyName 代表一目录。
        If (GetAttr(MyPath & MyName) And vbDirectory) = vbDirectory Then

            Debug.Print MyName    ' 如果它是一个目录,将其名称显示出来。 

       End If

    End If
    MyName = Dir    ' 查找下一个目录。
Loop




煮江品茶 发表于:2014-07-01 11:51:13
小英 发表于:2014-07-03 17:40:09
总记录:6篇  页次:1/1 9 1 :