Excel精英培训网

 找回密码
 注册
数据透视表40+个常用小技巧,让你一次学会!
查看: 1951|回复: 6

[已解决]如何实现删除同路径文档,谢谢爱疯老师。

[复制链接]
发表于 2016-5-26 08:57 | 显示全部楼层 |阅读模式
本帖最后由 lhj323323 于 2016-5-27 07:31 编辑

老师:
本求助贴有4种角度,请分别实现,先谢谢了。

需要通过VBA实现,这个VB语句所属的EXCEL(比如A.xls)也在这个路径中
1、删除同路径除A.xls之外的所有EXCEL文档

2、删除同路径除A.xls之外的所有以字母F开头的EXCEL文档
   (比如F汉得.xls、F刘邦.xls、F岳飞.xls、F狼狗.xls、F哈哈.xls)
3、删除同路径除A.xls之外的所有以汉字哈开头的EXCEL文档
   (比如哈得.xls、哈邦.xls、哈飞.xls、哈狗.xls、哈哈.xls)
如果在处理第2和第3时,汉字和字母的判断标准或处理标准一样的话,那么,第2和第3就属于一种类型。

4、删除同路径除A.xls之外的以字母F开头的任意格式的文档
(比如F汉得.xls、F刘邦.TXT、F岳飞.DOC、F狼狗.CSV、F哈哈.DLL



最佳答案
2016-5-26 09:43
Sub test()
    Dim p, f, myName
    p = ThisWorkbook.Path & "\"
    myName = ThisWorkbook.Name
    f = Dir(p)
    Do While f <> ""
        If isKill2(myName, f) Then Kill p & f
        f = Dir
    Loop
End Sub

'情况1
Function isKill1(myName, f) As Boolean
    If f <> myName Then isKill1 = True
End Function

'情况2
Function isKill2(myName, f) As Boolean
    If f <> myName Then
        If Left(UCase(f), 1) = "F" Then
            If f Like "*.xl*" Then    '满足简单情况,不是精确判断
                isKill2 = True
            End If
        End If
    End If
End Function

'情况3
Function isKill3(myName, f) As Boolean
    If f <> myName Then
        If Asc(Left(f, 1)) < 0 Then
            isKill3 = True
        End If
    End If
End Function

'情况4
Function isKill4(myName, f) As Boolean
    If f <> myName Then
        If Left(UCase(f), 1) = "F" Then
            isKill4 = True
        End If
    End If
End Function

1.rar (15.43 KB, 下载次数: 8)
excel精英培训的微信平台,每天都会发送excel学习教程和资料。扫一扫明天就可以收到新教程
发表于 2016-5-26 09:43 | 显示全部楼层    本楼为最佳答案   
Sub test()
    Dim p, f, myName
    p = ThisWorkbook.Path & "\"
    myName = ThisWorkbook.Name
    f = Dir(p)
    Do While f <> ""
        If isKill2(myName, f) Then Kill p & f
        f = Dir
    Loop
End Sub

'情况1
Function isKill1(myName, f) As Boolean
    If f <> myName Then isKill1 = True
End Function

'情况2
Function isKill2(myName, f) As Boolean
    If f <> myName Then
        If Left(UCase(f), 1) = "F" Then
            If f Like "*.xl*" Then    '满足简单情况,不是精确判断
                isKill2 = True
            End If
        End If
    End If
End Function

'情况3
Function isKill3(myName, f) As Boolean
    If f <> myName Then
        If Asc(Left(f, 1)) < 0 Then
            isKill3 = True
        End If
    End If
End Function

'情况4
Function isKill4(myName, f) As Boolean
    If f <> myName Then
        If Left(UCase(f), 1) = "F" Then
            isKill4 = True
        End If
    End If
End Function

1.rar (15.43 KB, 下载次数: 8)
回复

使用道具 举报

 楼主| 发表于 2016-5-26 22:28 | 显示全部楼层
爱疯 发表于 2016-5-26 09:43
Sub test()
    Dim p, f, myName
    p = ThisWorkbook.Path & "\"

谢谢爱疯老师:

程序运行后,同路径的符合条件的其它文档,都没有被删除,

快照1.png
回复

使用道具 举报

发表于 2016-5-26 22:34 | 显示全部楼层
sf23f.gif


2楼只是实现情况2(删除同路径除A.xls之外的所有以字母F开头的EXCEL文档),见动画,实现了。

如果要实现其它3种情况,就手动修改这里。比如要实现情况3,就把2改成3,其它同理。

Sub test()
    Dim p, f, myName
    p = ThisWorkbook.Path & "\"
    myName = ThisWorkbook.Name
    f = Dir(p)
    Do While f <> ""
        If isKill2(myName, f) Then Kill p & f
        f = Dir
    Loop
End Sub

回复

使用道具 举报

 楼主| 发表于 2016-5-27 07:30 | 显示全部楼层
爱疯 发表于 2016-5-26 22:34
2楼只是实现情况2(删除同路径除A.xls之外的所有以字母F开头的EXCEL文档),见动画,实现了。

如果 ...

哦,明白了,按纽只是针对一种情况,而您在语句中,已把其它几种情况写好了,只是没在搭配在里面。

非常感谢爱疯老师!·谢谢了。
回复

使用道具 举报

 楼主| 发表于 2016-5-27 07:36 | 显示全部楼层
本帖最后由 lhj323323 于 2016-5-27 07:40 编辑
爱疯 发表于 2016-5-26 09:43
Sub test()
    Dim p, f, myName
    p = ThisWorkbook.Path & "\"


哦,是彻底删除,不会在回收站留痕迹

isKill3是否是针对汉字的?
而不是针对具体某个汉字?
回复

使用道具 举报

发表于 2016-5-27 10:03 | 显示全部楼层
学习篮球
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|Archiver|Excel精英培训 ( 豫ICP备11015029号 )

GMT+8, 2024-4-25 09:36 , Processed in 0.255192 second(s), 10 queries , Gzip On, Yac On.

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表