为了账号安全,请及时绑定邮箱和手机立即绑定

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

/ 猿问

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

我已编写此代码来访问文件夹中的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文件。


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


查看完整描述

3 回答

?
jeck猫

这实际上是一个很好解决的问题。递归意味着您创建了一个自引用函数(一个自我调用的函数)。在您的情况下,您可以使函数针对当前文件夹的每个子文件夹进行调用。


TraverseFolders objFso.GetFolder(strPath)


Function TraverseFolders(fldr)

  ' do stuff with the files in fldr here, or ...


  For Each sf In fldr.SubFolders

    TraverseFolders sf  '<- recurse here

  Next


  ' ... do stuff with the files in fldr here.

End Function


查看完整回答
反对 回复 2019-10-22
?
慕标琳琳

在脚本的开头运行此命令,它将列出所有文件夹中的所有文件:


dir /S/B > AllFoldersAndFiles.txt

然后循环浏览文件列表。这对我有用。


递归vb有点棘手。


查看完整回答
反对 回复 2019-10-22
?
慕斯709654

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

查看完整回答
反对 回复 2019-10-22

添加回答

回复

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信