Access交流中心

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

QQ下载同名文件夹后的处理----代码有问题,请专家解答。

风寄铃  发表于:2018-02-09 16:36:24  
复制

QQ下载同名文件夹后的处理:
一、代码实现目标:假定通过QQ下载文件夹到“C:\test”,文件夹名称为“MYtasty”,第二次又接收到同一个文件夹,通常系统会新产生一个文件名为“MYtasty(1)”文件夹,现在
要处理:一是如果“MYtasty”文件夹内没有内容,则弹出提示信息“此文件夹作废,相同内容已传。”并删除“MYtasty(1)”文件夹。二是如果“MYtasty”文件夹内有不为空,则删除“MYtasty”文件夹,将“MYtasty(1)”文件夹重命名为“MYtasty”。
二、思路:1.先在C:\test”目录下遍历子文件,获得文件夹名最后为")"的名称,用left获取文件名"("左边的部分,2.再目录下遍历子文件同,以截取的文件名查找,如果找到刚删除。3.重新命名,也就是去掉“(1)”。
三、代码:
Private Sub 同文件夹名处理()
On Error Resume Next
Dim MyFSO As New FileSystemObject
Dim fd, fda As Folder
Dim TemName As String
For Each fd In MyFSO.GetFolder("C:\test").SubFolders
   If Right(fd.Name, 1) = ")" Then
    TemName = fd.Name
     For Each fda In MyFSO.GetFolder("C:\test").SubFolders
      If fad.Name = Left(TemName, 12) Then
        If MyFSO.GetFolder("C:\test" & "\" & fda.Name).Files.Count > 0 Then
          MyFSO.DeleteFolder "C:\test" & "\" & fad.Name
          Name "C:\test" & "\" & TemName As "C:\test" & "\" & fad.Name
          Exit Sub
        Else
          MyFSO.DeleteFolder "C:\test" & "\" & TemName
          MessageBoxTimeout Me.hwnd, "“" & fd.Name & "”,此文件夹作废,相同内容已传。", "tips", vbInformation, 0, 8000
          Exit Sub
        End If
     End If
    Next
   End If
Next
end sub
问题来了,以上代码好像有问题,请各位专家帮忙解答。

 

Top
风寄铃 发表于:2018-02-12 11:15:57
经过研究,自己来解答吧,嘿嘿!
代码解答:QQ下载同名文件夹后的处理。

一、代码实现目标:假定通过QQ下载文件夹到“C:\test”,文件夹名称为“MYtasty”,第二次又接收到同一个文件夹,通常系统会新产生一个文件名为“MYtasty(1)”文件夹,设想:1.如果找到“MYtasty”,则删除“MYtasty”文件夹,将“MYtasty(1)”文件夹重命名为“MYtasty”。2.如果没有找到,侧删除“MYtasty(1)”文件夹。
二、思路:1.先在C:\test”目录下遍历子文件,获得文件夹名最后为")"的名称,用left获取文件名"("左边的部分,2.再遍历子文件,以截取的文件名查找,如果找到刚删除。3.重新命名“MYtasty(1)”,也就是去掉“(1)”。
三、代码:
Private Sub 同文件夹名处理()
On Error Resume Next
Dim MyFSO As New FileSystemObject
Dim fdo,fd As Folder
Dim MyName As String
Dim n As Integer

For Each fdo In MyFSO.GetFolder("C:\test").SubFolders
   If Right(fdo.Name, 1) = ")" Then
     n = 0
     MyName = Left(fdo.Name, InstrRev(fdo.Name,"(")-1))  '获取"("前面名称
     For Each fd In MyFSO.GetFolder("C:\test").SubFolders
        If fd.Name = MyName Then
          n = n + 1
          MyFSO.DeleteFolder "C:\test" & "\" & fd.Name
          Name "C:\test" & "\" & fdo.Name As "C:\test" & "\" & MyName
          Exit For
        End If
    Next
    If n > 0 Then
        MessageBoxTimeout Me.hwnd, "之前相同文件夹还未导入,已删除旧文件,保留最新文件夹。", "tips", vbInformation, 0, 2000
        Call 遍历
        Exit Sub
    ElseIf n = 0 Then
        MyFSO.DeleteFolder "C:\test" & "\" & fdo.Name
        MessageBoxTimeout Me.hwnd, "已删除最近重复文件夹,资料已存在。", "tips", vbInformation, 0, 2000
        Call 遍历
        Exit Sub
    End If
   End If
Next
End Sub



MDZZ 发表于:2018-02-12 12:40:37


总记录:2篇  页次:1/1 9 1 :