递归访问文件夹内的子文件夹文件

我已编写此代码来访问文件夹中的Excel文件:


strPath="C:\Test\"


Set objFso = CreateObject("Scripting.FileSystemObject")

Set objFolder = objFso.GetFolder (strPath)

Set objExcel= CreateObject("Excel.Application")

objExcel.Visible= False


For Each objFile In objFolder.Files

 If objFso.GetExtensionName(objFile.Path) = "xls" Then

现在,我必须创建一些子文件夹,并在其中放置一些.xls文件。


我应该在代码中做哪些修改以搜索主文件夹和所有其他子文件夹(子文件夹中也有一些文件夹)中的文件?


30秒到达战场
浏览 803回答 3
3回答

jeck猫

这实际上是一个很好解决的问题。递归意味着您创建了一个自引用函数(一个自我调用的函数)。在您的情况下,您可以使函数针对当前文件夹的每个子文件夹进行调用。TraverseFolders objFso.GetFolder(strPath)Function TraverseFolders(fldr)&nbsp; ' do stuff with the files in fldr here, or ...&nbsp; For Each sf In fldr.SubFolders&nbsp; &nbsp; TraverseFolders sf&nbsp; '<- recurse here&nbsp; Next&nbsp; ' ... do stuff with the files in fldr here.End Function

慕标琳琳

在脚本的开头运行此命令,它将列出所有文件夹中的所有文件:dir /S/B > AllFoldersAndFiles.txt然后循环浏览文件列表。这对我有用。递归vb有点棘手。

慕斯709654

这是一种可能的方法(与FileSystemObject在某些情况下使用相比,提供了更好的性能),但由于不完整,无法在问题中使用。一方面,您不能只将命令直接放在VBScript中,而必须在其中添加一个cmd /c,因为dir和重定向是由提供的cmd.exe。另外,OP正在寻找具有特定扩展名的文件,该文件未反映在您的陈述中。
打开App,查看更多内容
随时随地看视频慕课网APP