Excel精英培训网

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

[已解决]如何将C盘下所有文件名输出到A列?

[复制链接]
发表于 2011-6-9 10:28 | 显示全部楼层 |阅读模式
提这个问题,我是希望能学习如何在实际问题中使用递归。
谢谢!



PS:题目的要求不重要,只为体现递归算法。如需要,请自行修改要求。

最佳答案
2011-6-9 11:40
用FSO,用DIR有问题
下面这个程序是删除u盘内所有的文本文件,用到了递归,供参考
  1. Sub KillUDiskTxt()
  2.     Dim fso As Object
  3.     Dim Drv As Object
  4.     Set fso = CreateObject("Scripting.FilesystemObject")
  5.     '查找U盘盘符
  6.     For Each Drv In fso.Drives
  7.         If Drv.DriveType = 1 Then
  8.             '找到U盘执行删除程序
  9.             KillTxt Drv.Path
  10.         End If
  11.     Next
  12. End Sub
  13. Sub KillTxt(ByVal strFolder As String)
  14.     Dim fso, objFolder, colFiles, colSubFolders, objSubFolder, objFile
  15.     Set fso = CreateObject("Scripting.FileSystemObject")
  16.     Set objFolder = fso.GetFolder(strFolder)
  17.     Set colFiles = objFolder.Files  '得到所有的文件
  18.     Set colSubFolders = objFolder.SubFolders    '得到所有子文件夹
  19.     '如果有子文件夹,则通过递归遍历子文件夹
  20.     If colSubFolders.Count > 0 Then
  21.         For Each objSubFolder In colSubFolders
  22.             Call KillTxt(objSubFolder.Path)
  23.         Next
  24.     End If
  25.     '如果文件不为0,则遍历所有文件,输出结果
  26.     If colFiles.Count > 0 Then
  27.         For Each objFile In colFiles
  28.             '删除文本文件
  29.             If Right(objFile.Path, 4) = ".txt" Then
  30.                 Kill objFile.Path
  31.             End If
  32.         Next
  33.     End If
  34. End Sub
复制代码
excel精英培训的微信平台,每天都会发送excel学习教程和资料。扫一扫明天就可以收到新教程
 楼主| 发表于 2011-6-9 11:19 | 显示全部楼层
我发想操作系统的查找操作,也能半天才有结果。
这样的话,改成“显示指定路径下的所有的文件名”也可以{:011:}
回复

使用道具 举报

发表于 2011-6-9 11:40 | 显示全部楼层    本楼为最佳答案   
用FSO,用DIR有问题
下面这个程序是删除u盘内所有的文本文件,用到了递归,供参考
  1. Sub KillUDiskTxt()
  2.     Dim fso As Object
  3.     Dim Drv As Object
  4.     Set fso = CreateObject("Scripting.FilesystemObject")
  5.     '查找U盘盘符
  6.     For Each Drv In fso.Drives
  7.         If Drv.DriveType = 1 Then
  8.             '找到U盘执行删除程序
  9.             KillTxt Drv.Path
  10.         End If
  11.     Next
  12. End Sub
  13. Sub KillTxt(ByVal strFolder As String)
  14.     Dim fso, objFolder, colFiles, colSubFolders, objSubFolder, objFile
  15.     Set fso = CreateObject("Scripting.FileSystemObject")
  16.     Set objFolder = fso.GetFolder(strFolder)
  17.     Set colFiles = objFolder.Files  '得到所有的文件
  18.     Set colSubFolders = objFolder.SubFolders    '得到所有子文件夹
  19.     '如果有子文件夹,则通过递归遍历子文件夹
  20.     If colSubFolders.Count > 0 Then
  21.         For Each objSubFolder In colSubFolders
  22.             Call KillTxt(objSubFolder.Path)
  23.         Next
  24.     End If
  25.     '如果文件不为0,则遍历所有文件,输出结果
  26.     If colFiles.Count > 0 Then
  27.         For Each objFile In colFiles
  28.             '删除文本文件
  29.             If Right(objFile.Path, 4) = ".txt" Then
  30.                 Kill objFile.Path
  31.             End If
  32.         Next
  33.     End If
  34. End Sub
复制代码

评分

参与人数 1 +38 收起 理由
爱疯 + 38 谢谢

查看全部评分

回复

使用道具 举报

 楼主| 发表于 2011-6-9 11:49 | 显示全部楼层
谢谢阿木!
实用的资料,收藏学习!
回复

使用道具 举报

发表于 2011-9-1 03:15 | 显示全部楼层
实用的资料,收藏学习!
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-3-29 05:30 , Processed in 0.287286 second(s), 10 queries , Gzip On, Yac On.

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

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